Minhas impressões sobre o BuddyPress
11/06/2009 Por: Marcelo em: BuddyPress
Estive trabalhando no projeto Cultura Digital e não tem sido uma tarefa fácil. Grande parte da dificuldade que estamos tendo é atribuída ao BuddyPress. Ele não parece ter sido desenvolvido para o WordPress, suas tabelas e códigos (tanto interface quanto programação) não seguem um padrão semelhante ao do WordPress (“Code is Poetry”).
Banco de Dados
Me espantei na primeira vez que resolvi analisar a estrutura de dados do BuddyPress; vinte e uma tabelas novas criadas! A instalação original do WP utiliza apenas dez tabelas, a do WPMU necessita de dezesete, por que diabos o BP precisaria de vinte e uma só pra ele, resultando em trinta e oito no total (BP + WPMU).
Após gerar o modelo de dados do BP pude ter uma visão mais ampla da bobagem que haviam feito:
Nomeclatura das tabelas
Nomes como ‘wp_bp_acivity_user_activity’, ‘wp_bp_acivity_user_activity_cached’, ‘bp_messages_messages’ ou ‘bp_messages_threads’ já eram em si um quebra-cabeça a ser decifrado.
Normalização das tabelas
Ao começar a trabalhar com as tabelas não pude deixar de notar a quantidade de campos ‘user_id’ espalhados por tabelas, de alguma forma, conectadas. O caso mais claro foi o das tabelas ‘bp_activity_user_activity’ e ‘bp_activity_user_activity_cached’ que já são ligados através do campo ‘item_id’ mas ambas possuem os campo ‘user_id’.
Outro caso que me fez perder alguns cabelos foi o da tabela ‘bp_messages_threads’ que apenas mantém a ligação das mensagens que são respostas a outras mensagens. Isso poderia ser feito simplesmente criando um auto-relacionamento na tabela ‘bp_messages_messages’.
Dados redundantes
Acredito que o pior de tudo foi descobrir que algumas tabelas criadas pelo BuddyPress nem precisavam existir, pois serviam para armazenar informações que podiam ser armazenadas nas tabelas do WordPress.
Destaco o conjunto de tabelas ‘bp_xprofile_fields’ e ‘bp_xprofile_data’ que server para adicionar novos campos ao perfil do usuário. Para passar uma idéia, uma única tabela do WordPress substitui essas duas do BuddyPress, o plugin Register Plus é um exemplo de como isso pode ser feito. O único motivo, que vejo para que o BuddyPress tenha feito essa separação, seria para obter ganhos em performance, mas o fato de existir um campo para cada dado me fez pensar que a performance estaria equilibrada já que na tabela ‘usermeta’ esses dados poderiam estar em forma de array e, assim, ocupariam um campo apenas.
Também não gostei da forma como o BuddyPress trata as atividades. Apesar das atividades do site serem o conjunto das atividades de cada usuário, os dados ficam duplicados em diferentes tabelas. Por exemplo: Ao alterar meu perfil uma nova atividade é cadastrada na tabela ‘bp_activity_user_activity’ e depois a mesma informação é cadastrada na tabela ‘bp_activity_sitewide’.
Codificação
A codificação também ficou a desejar.
Funções engessadas
Diferente do WordPress onde as ‘template tags’ (funções que auxiliam a montagem do tema) praticamente não interferem na forma como o html é montado, no BuddyPress algumas ‘template tags’ carregam muito lixo e apresentam um visual pré-definido. Isso dificulta a personalização do tema pois força a alteração dos arquivos do BuddyPress para atingir um resultado esperado.
Por exemplo: a função que carrega os dados do perfil (xprofile_get_profile) monta uma tabela zebrada (uma linha clara outra escura), apenas com os dados informados e adiciona link a cada item. Mas a zebra que o BP monta é baseada nos dados que estão no banco, então se eu tiver deixado algum campo vazio a tabela acaba pulando uma cor deixando duas linhas claras e uma escura ou algo parecido. Se eu quiser corrigir essa zebra ou retirar os links dos dados eu precisarei criar uma função do zero para não ter que ‘hackear’ o BP.
Mistura de tema com plugin
Os temas são muito dependentes de funções definidas nos plugins. Essa questão é mais ou menos a mesma citada no item acima, imagine tentar criar uma nova função apenas para recuperar os membros ou pense na dor de cabeça que é ficar alternando entre plugins e tema para entender como tal trecho de código é montado.
Conclusão
O BuddyPress tem muito a evoluir antes de se tornar um sistema confiável, acredito que o principal é voltar os esforços para deixá-lo mais compatível com o seu hospedeiro, o WordPress. Assim poderá haver uma maior compatibilidade entre os plugins e temas, além de diminuir a curva de aprendizado para os desenvolvedores que já trabalham com o WordPress, o que, na minha opinião, poderá resultar em um impulso na comunidade BuddyPress.










Andy P
11/06/2009 às 20:10
I have to reply in English I’m afraid.
Some good points regarding the DB schema, there are definitely quirks and redundancies at the moment. The product is only at 1.0 and you will see a lot of improvements in the DB area in the next couple of versions.
I’m not sure you were looking at the right place when you wanted to output a persons profile. There are plenty of easy to use template loops that will let you output data any way you like. There are however still some template tags that contain HTML, so it’s a process of re-factoring those offenders in coming versions.
Check out the template loops here:
http://codex.buddypress.org/developer-docs/custom-buddypress-loops/
Thanks for the critique, this sort of thing is incredibly useful no matter if it is negative or positive. If you’re interested in helping improve the DB schema at all, get in touch with me.
PG
11/06/2009 às 23:11
Boas considerações. Também estou montando um projeto que gostaria de usar o BuddyPress, pois já uso o WordPress MU.
Estava lendo que a ideia do pessoal da Wordpress é deixar o Wordpress e a sua versão MU em uma só, talvez assim eles já devem pensar em melhorar o BuddyPress.
Faracy | Especia..
13/06/2009 às 12:07
[...] Fonte: http://www.marcelomesquita.com/minhas-impressoes-sobre-o-buddypress/ [...]
fabiano
13/06/2009 às 12:22
Realmente as dificuldades no desenvolvimento de um projeto utilizando buddyPress são enormes.
A comunidade WordPress espera uma melhora significativa desta plataforma de rede social.
Parabéns pelo excelente relato detalhado dos problemas do buddyPress.
Ronny Santana
21/10/2009 às 15:50
Ola, Boa Tarde a todos, tava no google pesquisando sobre o BP e acabei achando esse POST, estou com um projeto novo que ultiliza o MU e o BP, só que estou com problema no AVATAR dos usuários e dos GRUPOS, esta fazendo o UPLOAD só não esta colocando no site… o projeto é http://www.twitoz.com
Vamos lá pessoal, me ajude ai…
Lauro Faria
02/11/2009 às 13:51
Connheci o site Cultura Digital e o Marco Civil da Internet somente nesse fim de semana e notei o uso do Wordpress MU junto com o Buddypress. Fiquei com coceira de fazer uma crítica sobre o ambiente e acabei parando aqui… :-)
Eu uso o WP em meu site e tendo para o lado de CMS, em detrimento ao lado blog. O WPMU e uma rede social já passaram por minha cabeça.
Apesar de suas observações em relação ao banco de dados, eu acho os recursos propostos por essas ferramentas muito interessates e úteis, porém primam por uma confusão de conteúdo. Em todas os sites que tive acesso o ambiente se torna confuso e o conteúdo dificil de encontrar. Muito embora eu sempre encontre um ambiente default (buddypress) nos exemplos que conheço.
Ha de se repensar esse formato, muito embora me pareça que é uma configuração meia inóspita. :-)
O conjunto WP, WPMU, Plugins, Temas e Buddypress, parece ser excelente como proposta. Deve existir um meio de torná-lo mais “bonito” e funcional.
Lauro Faria
http://www.bdibbs.com.br
Kostya
16/01/2010 às 08:49
…
Хм.. …
Diego Lopes
19/01/2010 às 01:03
Mt bom saber que vc é do governo e impressionante ao mesmo tempo, e até dá uma certa esperança rsrs, já venho acompanhando seu trabalho há algum tempo e não posso deixar de dar os parabéns. Mas vencá, sabe de algum plugin de sitemap para o WPMU, n consegui fazer nenhum funcionar, qual o melhor? abço!
Ariel
24/02/2010 às 15:54
Hola Marcelo:
Soy un administrador de un sitio para una red académica en Bs. As. y Estocolmo. Me gustaría saber, si es posible, cómo se logró el mapa interactivo de la sección “A rede no mapa” (http://culturadigital.br/)… ¿Utilizaron un widget para ello? Gracias por tu respuesta!
Marcio Carneiro
01/03/2010 às 10:47
Já tentaram o elgg.org?
Алексей
16/03/2010 às 18:08
…
Хм …
Арсений
09/04/2010 às 21:53
Прив…
Хм..…
Alexander
07/07/2011 às 01:20
buy@viagra.online” rel=”nofollow”>……
Need cheap generic VIAGRA?…