Visão Geral do CMS e Framework Joomla - Business IT South America
1. Visão Geral do CMS e
Framework Joomla®
Brazil CMS
Business IT South America
13 de maio de 2014
2. Emerson Rocha Luiz
• Full Stack Web Developer e sócio fundador na Alligo
• Especialista Joomla; membro do Joomla Bug Squad; mentor em 2012 e 2013 do Google
Summer of Code pelo projeto Joomla (...)
• emerson@alligo.com.br
• Twitter, linkedIn, Facebook: @fititnt (lê-se: Fi-ti-tê-êne-tê)
3. Que tipos de profissionais usam Joomla?
Desenvolvedor de sites Dev Frontend Dev Backend Integrador
Quer agilidade
para
Fazer site completo sem
precisar programar,
possivelmente só trocando
cores e imagens
Liberdade para
estilizar ao extremo
interface sem grande
dificuldade
Quer criar aplicações
manuteníveis de
forma rápida, e,
mesmo sem ser
designer, fique
visualmente bonita
Integrar aplicações
diferentes e
aproveitar o melhor
de cada uma; usar
CMS apenas como
"frontend"
Exemplo de
vantagem do
Joomla
Extensões nativas e de
terceiros tendem a focar
usuário não programador;
é possível pagar por
extensões mais complexas;
pode usar CCKs
Lógica é separada da
aplicação, o que
reduz complexidade
e chances de
alteração com
atualizações do CMS
Padronização MVC
ajuda no
reuso/manutenção
de código de
terceiros;
Plugins como LDAP
são nativos;
flexibilidade com
integrações e reuso;
terceirização de
serviços
Exemplo de
resultado
E-commerce completo Site responsivo,
acessível, boa UX e
carregamento leve
Intranet Joomla + OTRS +
Alfresco + Jbilling +
(...)
4. Passado do Joomla
2000:
Mambo
2005:
Joomla 1.0
2008:
Joomla 1.5
2011:
Joomla 1.6
2012:
Joomla 2.5
Padrão MVC
(suporte legado a
componentes não
MVC)
Suporte a bugfixes em versões LTSs
v1.0: 3 anos 10 meses;
v1.5: 4 anos 10 meses;
v2.5*: ~4 anos
5. CMS Joomla & Joomla Framework
E drivers para
Oracle
SQL Lite
SQL Azure
PHP PDO
Framework Joomla
pode ser usado
sem o CMS Joomla,
como alternativa a
Symphony,
CakePHP, Zend ...
6. CMS Joomla: algumas funcionalidades
Nativas, sem necessidade de extensões adicionais
Permissão de
acesso granular
Versionamento
de conteúdo
Gerenciamento
de conteúdo
multilíngue
Categorias
aninhadas
Tags
Busca
Inteligente
Media Manager
Gerenciamento
de Banners,
Links (...)
Gerenciamento
de Artigos
Blog
Interface
administrativa
responsiva
7. CMS Joomla: tipos de extensões
• Componente: funcionalidade principal;
• Padrão MVC; um, e apenas um, por página
• Módulo: bloco de conteúdo
• 0-N por página; exibe informação
• Template: base da visual de uma página
• Flexibilidade para sobrepor saída HTML de componentes e módulos
• Plugins: alteram comportamento;
• Diversos subgrupos e gatilhos
• Enorme poder também de lógica de funcionamento sem alterar o core do Joomla
• Linguagens (traduções); Bibliotecas
8. Framework Joomla: mais a respeito
• https://github.com/joomla/joomla-framework
• É um framework PHP completo;
• Pode reusar e ser reusado por outros frameworks que atendam padrão PSR-0
• Pode ser usado sem o CMS Joomla;
• Criar seu próprio CMS, App, CLI, como qualquer outro framework
• Pode aproveitar reuso de apenas partes específicas do CMS em uma app nova
• O CMS Joomla não usa todo potencial do framework Joomla (ex.: drivers de DB)
Protip:
Reuso de
código do
CMS pode
salvar MUITO
esforço
9. Rapid Application Framework (Joomla! RAD)
• Biblioteca FoF “Framework over Framework”, agora no Core do Joomla
• FoF já é usada há muitos anos em extensões conhecidas, como o AkeebaBackup
• Foco em ser ainda mais simples de aprender do que o modo tradicional
• DRY code, com reuso de classes no front-end e backend
• Implementa HMVC
• Implementa interface RESTfull
• Convention over configuration
• (...)
Ref: http://goo.gl/yZw54j
Protip:
Joomla! RAD
agiliza ainda mais
desenvolvimento
de componentes
10. Performance & benchmarks
Imagem: http://joyreactor.com/post/1297750
1. Maioria dos benchmarks de performance de CMS fazem comparações tecnicamente exageradas
2. Principais CMSs tem performance semelhante em condições realmente idênticas
3. No mundo real da alta disponibilidade, nenhum site sobrevive sem cache e boa infraestrutura
11. Estratégia de atualização
• Semantic Versioning: major.minor[.patch]
• Patch (1 de v3.2.1), é correção de erro ou atualização de segurança
• Minor (2 de v3.2.1) acrescenta funcionalidades, e é compatível com versões anteriores de v3
• Major (3 de v3.2.1) acrescenta funcionalidades e mudanças de API em Majors anteriores (v2, v1)
• Versões Major tem suporte prometido de pelo menos 2 anos.
• Na prática tende a ser ~4 anos. Isso é muito tempo!
• http://developer.joomla.org/news/586-joomla-development-strategy.html
Mesmo entre versões major, em
geral poucas alterações e apenas
em extensões não nativas são
necessárias, i.e. de v2.5 para v3.0
(atualizações não são traumáticas)
12. Segurança: principais motivos de invasão
de Joomla e provavelmente de CMSs em geral
1. Extensões e/ou CMS desatualizado
• Geralmente desatualizado há muito tempo, e com falhas de segurança publicamente conhecidas
2. Extensões de origem duvidosa
• Extensões piratas costumam ter backdoor: podem invadir seu site ou usar ele como zumbi
3. Ambiente comprometido
• Permissões de arquivos erradas em ambiente compartilhado; Servidor desatualizado; Falhas em
outros softwares como cPanel/WHM ...
4. Senha de acesso roubada por usar protocolo fraco (FTP) ou ter malware
1. Usar FTP (em vez de SFTP e SSH) permite que seja roubada via rede
2. Vírus podem infectar máquina local e roubar senhas de programas FTPs que não as criptografam
13. Segurança: através da Obscuridade
Imagem: http://xkcd.com/257/
1. Segurança por obscuridade não realmente uma
forma de segurança, e tende a ser pior do que
nenhuma segurança por passar uma falsa
impressão
2. Se realmente quer apelar para segurança por
obscuridade, é mais seguro usar um CMS
largamente usado e ocultar digitais do CMS do
que criar seu próprio CMS ou usar um de
código fechado: apenas oculte referências no
código ao termo “joomla”
14. Suporte para usuário e administradores
• Fórum Oficial Joomla (Global)
• http://forum.joomla.org
• Fórum Oficial Joomla (Português)
• http://forum.joomla.org/viewforum.php?f=23
• JoomlaClube
• http://www.joomlaclube.com.br
• Stackoverflow
• Chat via IRC
• Servidor irc.freenode.net, Canal #joomla
• Via Web: http://irc.lc/freenode/joomla/
15. Suporte avançado
• Lista de email "Joomla CMS Developer“
• https://groups.google.com/forum/#!forum/joomla-dev-cms
• Lista de email "Joomla! Framework Development",
• https://groups.google.com/forum/#!forum/joomla-dev-framework
16. Grupos de Usuários
• http://community.joomla.org/user-groups.html
• Grupos Brasileiros registrados:
• Joomla User Group Rio Grande do Sul
• Joomla! User Group Bahia
• Joomla! User Group Distrito Federal Calango
• Joomla! User Group Paraná Brasil
• Joomla! User Group Rio de Janeiro
• Joomla User Group Carioca