O documento descreve a história e o desenvolvimento do site PHP Classes, desde sua criação em 1999 até os planos para o futuro. Ele fornece classes PHP para vários propósitos, atraindo contribuições de desenvolvedores e desafios de crescimento contínuo.
PHP Classes: Desenvolvimento e gestão de um repositório de código aberto
1. PHP Classes
Desenvolvimento de sites de Web 2.0 em
PHP para grandes audiências
Manuel Lemos
mlemos@acm.org
http://www.ManuelLemos.net/
webdevcamp 2007
São Paulo, 2 de Dezembro de 2007
2. Origem
1997 – Participação em listas de discussão
●
1998 – PHP 3 lançado com suporte a OOP
●
Componentes prontos resolviam problemas
●
frequentes de outros usuários
Divulgação de classes prontas nas listas de
●
discussão aumentaram muito a procura
1999 – Lançamento do site PHP Classes →
●
3. Objetivos
Meio de distribuição automática de classes
●
Minimizar esforço dos autores na divulgação
Aumentar a base de usuários das classes
●
Alertar usuários por e-mail sobre novas classes e
suas atualizações
Estimular a partilha de conhecimento
●
Contribuição de novas classes e mais conteúdo →
4. Crescimento interminável
Web 2.0: Regra do 1%
Site de conteúdo contribuído pelos usuários
●
Por cada 100 novos usuários, 1 contribui
●
Mais contribuições atraem mais usuários
●
Quanto mais usuários, mais contribuidores →
●
5. Propaganda viral
Divulgação que traz mais divulgação
Troca de anúncios com sites parceiros
●
Top de autores
●
Iniciativa amigos do site
●
Espelhos do site
●
Lista de grupos regionais de usuários de PHP
●
Divulgação de novidades através de RSS →
●
6. As dores do crescimento
Problemas do crescimento interminável
1. Qualidade das contribuições
2. Custos de operação →
7. Qualidade das contribuições
O problema de ter muito do mesmo
Sistema de votação
●
Utilidade, consistência, exemplos, documentação,
–
tutoriais em vídeo, e testes de unidade
Top das classes mais votadas
–
Prêmio de inovação
●
Nomeação de classes inovadoras em cada mês
–
Prêmios patrocinados para todos nomeados →
–
8. Custos de operação
Nada é de graça
Custos de hospedagem
●
Capacidade de processamento
–
Largura de banda
–
Espaço em disco
–
Custos de pessoal
●
Atendimento aos usuários
–
Desenvolvimento de novas capacidades →
–
9. Redução de custos
Melhor software consome menos recursos
Cache e mais cache
●
Turck MMCache para cache de PHP compilado
–
Classe File Cache em PHP para cache de conteúdo
–
Lighttpd: cache de acessos a conteúdo estático
–
Compressão de conteúdo
●
mod_gzip reduz tamanho de páginas até 5 vezes
–
Todos os navegadores modernos suportam
–
Páginas carregam mais rapidamente →
–
10. Mais redução de custos
Aceleração com software automático
Atendimento self-service
●
Robôs de resposta a e-mail de descadastramento
–
Páginas com respostas a perguntas frequentes
–
Ferramentas de geração de código
●
Metastorage gera código de acesso a objetos em
–
banco de dados definidos a partir de modelo
Redução do tempo de escrita, teste e correção →
–
11. Cobertura de custos
Alternativas consideradas
1. Doações
2. Publicidade paga
3. Serviços pagos exclusivos para assinantes →
12. Doações
Doação de hospedagem
●
Troca de hospedagem por publicidade
–
Sites espelhos
–
Doação de dinheiro
●
Não é garantido
–
Não é recorrente →
–
13. Publicidade paga
Pagamento por: exibição, clique ou tempo
●
Receita cresce com a audiência
●
Negociação direta é difícil à distância
●
Intermediação por agências
●
Google AdSense, Tribalfusion, Fastclick, etc.
–
Facilidade de alcance a grandes anunciantes
–
Agências ficam com comissão elevada
–
Pagamento por cheque, Paypal ou transferência →
–
14. Assinaturas pagas
Serviços exclusivos assinantes
●
Navegação do site sem publicidade
–
Acesso a fóruns de especialistas para resolver
–
problemas difíceis
Buscas e páginas favoritas personalizadas
–
Diretório de profissionais disponíveis para prestar
–
consultoria paga
Adesão de uma pequena parte dos usuários
●
Pagamento pelo Paypal ou PagSeguro
●
Receita recorrente →
●
15. Riscos
Quem semeia e não segura pode colher
amargura! (provérbio popular)
O que pode comprometer o projeto?
Perda de informação por danos no servidor
●
Perda de informação por invasão de crackers
●
Número de acessos excessivos
●
Ausência de simulação de problemas →
●
16. Cópias de segurança
Cópias de segurança diárias dos bancos de
●
dados e arquivos de conteúdo
mysqldump + tar
–
Replicação das cópias para outros servidores
●
gnupg ou truecrypt + rsync
–
Amazon S3 + Jungle Disk →
–
17. Auditoria de segurança
Auditoria regular com ferramentas dedicadas
●
nessus: testes de exploração de buracos de
–
segurança conhecidos
Desativação de serviços não usados e
●
bloqueio das respectivas portas na firewall
Eliminação de indícios do tipo e versão dos
●
programas usados →
18. Vulnerabilidades comuns
Como evitar?
XSS: Cross-site Scripting
●
Conteúdo não confiável é servido por domínio
–
distinto: safe.phpclasses.net
SQL Injection
●
Validação com a classe de formulários
–
“Escape” de valores com Metabase →
–
CSRF: Cross-site Request Forgery
●
Plug-in “secure submit” da classe de formulários
–
19. Limitação de acessos
Redirecionamento de usuários para espelhos
●
Verificação CAPTCHA para parar robôs
●
lighttpd: servidor para conteúdo estático
●
Limitação dos processos do Apache
●
mod_throttle: limitação de acessos
●
simultâneos
mod_fastcgi: balanceamento de carga usando
●
mais computadores servidores
Uso de filas para retardar tarefas pesadas →
●
20. Curiosidades
Linhas de código: ~135.000 em PHP (4.6MB)
●
Cadastros: ~540.000 (~10.300 novos por mês)
●
Autores: ~1.800 contribuiram ~3.600 componentes
●
Consumo de banda: ~200GB por mês
●
Cache de conteúdo: ~184.000 arquivos (1.5GB)
●
Servidor: dedicado com Pentium 4 HT 3.2GHz 1GB
●
Sistema operacional: Linux SuSE 9.2
●
Discos: 18GB SCSI com controlador RAID
●
Base de dados: MySQL 4 em partição dedicada 2.7GB
●
Maior tabela: 5.9 milhões de registros
●
Servidor e-mail: qmail ~2 milhões de e-mails/mês →
●
21. Futuro
Mais serviços pagos para assinantes
●
Reclassificação de classes em sub-categorias
●
Sincronização de classes a partir de
●
repositórios CVS ou Subversion
Canais PEAR
●
Concurso de novo design para o site
●
Divisão de lucros com os melhores autores
●
O que mais os usuários sugerirem →
●
22. Perguntas?
Manuel Lemos
●
mlemos@acm.org
Repositório PHPClasses
●
http://www.phpclasses.org/
23. Conclusão
Lembrem-se sempre:
Cooperar é melhor que competir
Abracem a comunidade com vontade, que
a comunidade vos abraçará muito mais
Obrigado pela atenção