Convergência de conteúdo a partir de sites de redes sociais e outros ambientes web de forma gerenciável Julio Pontes de Farias Netto ([email protected]) Wellington Gabriel Freitas de Oliveira ([email protected]) NOIX Informática Ltda. Brasil aumentou em 56 vezes, com perspectiva de crescer mais 8 vezes até 20121. Uma série de sistemas de informática se propõe a organizar a alta demanda de conteúdo gerado nos sites de redes sociais ou disponibilizá-lo de maneira rápida. Temos exemplos de sistemas como TweetDeck2, Seesmic3 e Tweetie4, que se denominam programasclientes para uso de redes sociais da Internet. A partir deles, o usuário dessas redes sociais pode integrar vários registros e administrar seus perfis sem necessitar se deslocar até os sites de redes sociais para fazê-lo. Outra forma de realizar essa integração é através de widgets5, que dispõe de uma interface gráfica para visualização de dados do usuário coletados de outros ambientes. Muitos desses sistemas, contudo, realizam tais integrações usando estritamente web service, sem preverem a possibilidade de também fazer conexão direta a banco de dados. Inclusive porque alguns desses sistemas não têm a necessidade originária de conectar a banco de dados, pois não foram feitos para esse fim. Por essa limitação de web service, esses sistemas já existentes não conhecem a estrutura dos dados das aplicações a que eles se integram, portanto não servem para integrar-se a outras aplicações que não disponham de web service, como é o caso de alguns CMS6, ERP7 e CRM8. Resumo A produção de conteúdo gerada a partir dos sites de redes sociais cresce de forma bastante acelerada. É fato que sistemas de informática são criados ao redor do mundo na tentativa de organizar essa informação ou, pelo menos, disponibilizá-la de maneira rápida aos usuários interessados. Uma das formas de agilizar a disposição das informações advindas dos sites de redes sociais é integrá-las em um único ambiente de visualização. Porém, além de disponibilizá-las nesse ambiente único, é necessário que esse trabalho preveja a integração com as várias informações diferentes contidas em sistemas de banco de dados distintos e também com os diversos web services das aplicações a serem integradas. Essa pesquisa analisa a necessidade da convergência de dados vindos dos sites de redes sociais, as formas de integrar tais dados em um ambiente único, alguns empecilhos técnicos que comprometem essa convergência de dados, a necessidade de customização do usuário sobre o formato de visualização desses dados e a perspectiva de incremento contínuo do possível sistema que sirva de solução para o problema. Por fim, a pesquisa apresenta uma possível solução em forma de sistema de informática para as questões supracitadas. Palavras-chave: Redes Sociais, Portais Web, Convergência, Conteúdo Web, Domain-driven design, Domain Specific Language, Fluent Interface. 1 Matéria do portal G1 "Tráfego de dados em banda larga crescerá oito vezes até 2012" acessada em <http://g1.globo.com/Noticias/Tecnologia/0,,MUL6423886174,00.html> 2 http://www.tweetdeck.com 3 http://seesmic.com/ 4 http://www.atebits.com/ 5 Definição de Widgets segundo a Wikipedia, acessada em < http://pt.wikipedia.org/wiki/Widget > 6 Content Management System ou sistema gerenciador de conteúdo, próprio, por exemplo, para gestão de conteúdo de portais web 7 Enterprise Resource Planning – sistema integrado de gestão empresarial 8 Customer Relationship Management – sistema de relacionamento com clientes 1. Introdução É fato que a produção de conteúdo gerada na Internet cresce de maneira bastante rápida. Segundo a IDC (Internet Data Corporation), de 2002 até 2007, o volume de dados transportados por redes de banda larga fixa no 1 IPhone11 permite não apenas que o usuário fale ao telefone, mas também assista filmes, divirta-se com jogos, realize breves gravações audiovisuais e instale outras aplicações de utilidade pessoal ou coletiva. Na Cultura da Convergência, os dados mantêm maior interoperabilidade12. Assim como acontece com as plataformas físicas (celulares multiuso, televisões com rádio e acesso à Internet, games com jogadores espalhados pelo mundo etc.), as plataformas virtuais também mantém tal características de convergência, porém tais plataformas virtuais têm essa característica como um dos principais sentidos de sua existência. Através da Internet, o usuário dispõe em um mesmo lugar de TV, rádio, revistas, jornais, comunicação instantânea inclusive com transmissão de imagem, entre outras possibilidades, além de trocas interativas, que podem ocorrer (i) entre esses meios e os usuários e (ii) entre os usuários entre si, porém mediados por esses meios virtuais (LEMOS, 1997). O fato é que hoje os usuários começam a se acostumar a ter dados de forma rápida e convergente em um mesmo ambiente, para facilitar seu uso. Tal característica é vista pela popularidade que os portais web (com grande e diversificado volume de conteúdo) e os programas-cliente ganham a cada dia13. É nesse pensamento que alguns softwares prometem organizar conteúdos espalhados na rede e dispô-los em uma ambiente mais fácil, de rápido acesso e com possibilidade de integração a outros meios. Em um olhar sobre o trabalho de desenvolvedores web, também há a necessidade dessa convergência de dados. Um dos principais exemplos são os grupos formados em torno de extensões web para determinados softwares, o que reforça a cultura de Software Livre14, com a perspectiva de colaboração de todos para todos. A partir desses grupos de colaboração, extensões inovadoras ou melhoradas são depositadas pelos desenvolvedores web e disponibilizadas publicamente. Alguns se monetizam a partir de versões avançadas das extensões que publicaram em formato aberto, que são então comercializadas. O resultado a que se chega, portanto, é a necessidade de convergência cada vez maior dos dados disponibilizadas principalmente na Internet, com a possibilidade desses dados serem customizados pelos próprios usuários no que tange à visualização, depois que os dados forem captados. Além disso, há a possibilidade Além disso, os sistemas citados também não prevêem o incremento fácil de seu conhecimento, como, por exemplo, com a instalação de extensões. Geralmente, são criados com um determinado fim (ex: puxar as últimas publicações do site de rede social Twitter) e exibem tais informações apenas na sua plataforma ou em um determinado formado (ex: listagem simples de títulos). Qualquer nova integração a ser feita com um novo ambiente web fica dependente de esse ambiente web disponibilizar um web service para integração. Alguns widget até vão além, quando abrem a possibilidade de o usuário não só puxar informações de outros ambientes web – ainda usando integração com web service – como também de filtrar ou configurar essas informações. Porém, mesmo assim, os widgets ainda não dão a possibilidade ampla de escolha sobre o formato de visualização que esses dados terão quando exibidos na plataforma, nem mesmo usando uma espécie de lista de modelos de visualização pré-definidos. A partir desse quadro, há a necessidade de uma solução de convergência de conteúdo que dê ampla possibilidade de se integrar não só com web service, mas também com informações diretas contidas em banco de dados. É também desejado que essas integrações sejam possíveis através de alimentação da solução com o conhecimento sobre da arquitetura da base de dados do sistema a ser integrado. Isso porque, dessa maneira, a solução poderá se integrar amplamente com outros ambientes, e não apenas com aqueles que dispõem de web service. Além disso, deve ser visado o desenvolvimento dessa solução com a possibilidade de incremento de conhecimento através de extensões, quiçá por meio de ações de comunidades de colaboração9, com o reforço da filosofia de software livre10. 2. Necessidade de convergência de dados na Internet A chamada “Cultura da Convergência” (JENKINS, 2008) há algum tempo é vista como uma das principais características da tecnologia contemporânea. Isso porque, com o uso das novas plataformas digitais, dados podem ser trocados de maneira muito mais rápida comparado com poucos anos atrás e acessados a partir dos mais diversos meios tecnológicos. Por exemplo, um simples 11 Aparelho de telefonia móvel fabricado pela Apple Inc. Possibilidade de operacionalização de dados a partir de meios diversos e interconectados. 13 Lista dos sites mais acessados no Brasil, visto em < http://olhardigital.uol.com.br/digital_news/noticia.php?id_conteudo=934 9&/IBOPE+10+SITES+MAIS+ACESSADOS+EM+AGOSTO+NO+B R> 14 Sistemas desenvolvidos dentro da filosofia de código aberto e colaborado 12 9 Comunidades de colaboração são grupos que usuários na Internet que se agrupam em torno de portais ou redes sociais para troca de extensões que incrementem um software existente. Exemplo: Joomla Extensions, acessado em <http://extensions.joomla.org> 10 Conjunto de práticas que realiza liberação parcial ou total do códigofonte e que recebe muitas vezes colaborações de comunidades de usuários e desenvolvedores 2 de os sistemas que farão tais convergências serem parcialmente ou integralmente abertos15, para que possam ser integrados pelos desenvolvedores web a outros sistemas e também ganhem adquiram de maneira rápida através de pacotes de melhorias e novas extensões que os incrementem. parcialmente ou totalmente aberto, que possa ser estudado por desenvolvedores web e incrementado por eles a partir de extensões. Além disso, tal programa-cliente também se limita a se conectar a serviços disponibilizados pelos sites de redes sociais citados. Ou seja, sua integração é realizada apenas com as redes sociais já previstas no programa e que disponham serviços para ele se conectar. Por fim, o programa dispõe apenas de uma forma de visualização das informações, que não pode ser alterada pelos usuários, senão dentro das poucas possibilidades já previstas no programa. A partir dessa análise, viu-se a existência da característica dos programas-cliente em não se integrar amplamente com as informações de outros ambientes, uma vez que os programas só se conectam com ambientes que disponham serviços com tal finalidade. Também é fato que tais programas-cliente não possibilitam customização na forma de visualização dos dados pelos usuários. Além disso, os programas vistos também não dispõem seus códigos aos desenvolvedores web, a fim de que se permitam incrementos através de extensões. 4. Sistemas que realizam convergência de dados a partir de sites de redes sociais Os sites de redes sociais acumulam hoje um dos maiores tráfegos de dados na Internet. Seu uso foi classificado como a quarta atividade mais popular da Internet no mundo, segundo pesquisa da Nielsen Company16. Se considerarmos a Cultura da Convergência (JENKINS, 2008), com sua velocidade de informação e interoperabilidade de mídias e dados, o excesso de sites de redes sociais a que os usuários se associam poderia causar problemas a esses usuários sobre o acompanhamento das informações geradas nesses sites e também sua utilização. Foi para sanar esses problemas que algumas ferramentas foram criadas, como o RSS e seus leitores. Os leitores de RSS são plataformas que agregam, em um mesmo ambiente, informações geradas em ambientes que já dispõem da tecnologia RSS. Portanto, vê-se que a solução resolveu muitos dos problemas de convergência de dados para os usuários – principalmente sobre o acompanhamento dos portais de notícias. Contudo, há de se perceber a limitação dos leitores de RSS em só aceitarem integrar-se com outros ambientes caso eles também possuam tecnologia RSS. Não há uma integração direta do leitor de RSS com as informações contidas no banco de dados do ambiente que ele quer se integrar, mas sim apenas uma ligação com o serviço que aquele portal de notícias, por exemplo, dispõe em forma de RSS. Focando-se agora a sites de redes sociais, muitos leitores de RSS já se integram com alguns serviços disponibilizados por esses sites como Youtube17, Flickr18, entre outros. Mas, nesse caso dos sites de redes sociais, são os chamados programas-cliente que surgem como principais agregadores de informações. Por exemplo, através do programa-cliente TweetDeck é possível apresentar simultaneamente na interface do programa as atualizações dos perfis de Twitter, Facebook, LinkedIn e MySpace. Contudo, apesar da popularidade do programa entre usuários dessas redes, ele não dispõe de um código 5. Sugestão de sistema de gestão de conteúdo web 5.1. Conceito e objetivos A partir das análises supracitadas, chegou-se nessa pesquisa a uma sugestão para um sistema de gestão de conteúdo web, chamada aqui de SGCW. A sugestão consiste em um sistema que gerencie dados capturados da web, advindos, por exemplo, de portais, intranets e sites de redes sociais. Os ambientes a terem seus dados geridos podem dispor diversos conteúdos, que serão coletados diretamente na aplicação de banco de dados ou via web services com sua API19. O SGCW, nesse estudo, será uma aplicação diferente das aplicações CMS20, que realizam ações de publicação, edição e exclusão de conteúdos em ambientes web. A idéia é que, futuramente, o SGCW possa inclusive servir para que o usuário faça um gerenciamento básico de conteúdo do seu CMS, como um simples CRUD (inclusão, alteração, consulta e exclusão), mas o principal objetivo do SGCW será o gerenciamento de conteúdos vindos da web, ou seja, a coleta de dados. Em termos práticos, a idéia do SGCW é realizar a captura dos mais diversos tipos de conteúdo existentes em outros ambientes, interligando-se às conhecidas APIs dos web service ou, indo além, coletando diretamente dos bancos de dados. Além disso, proporcionará um possível incremento através de extensões. 15 Fazendo uso de licenças de software livre Pesquisa “Global Faces and Networked Places: a Nielsen report on Social Networking’s New Global Footprint”, promovida pela Nielsen Company e divulgada em março de 2009. 17 http://youtube.com 18 http://www.flickr.com 16 19 Application Programming Interface Content Management System ou sistema gerenciador de conteúdo, próprio, por exemplo, para gestão de conteúdo de portais web 20 3 de uma chamada subseqüente (mas uma interface fluente envolve mais que um encadeamento de método). Seguem algumas características do contexto de implementação da Fluente Interface: - É definido através do valor de retorno de um método chamado; - É auto-referencial, no qual o novo contexto é equivalente ao contexto passado; - É denunciado através do retorno de um contexto de vazio. Portanto, com a utilização de Fluent Interface e de DSLs, o Framework consegue também interpretar dados de uma linguagem, de alto nível23, criada a partir desses dois conceitos. Dessa forma, é possível criar uma linguagem mais amigável e fluente para consumir dados de diferentes serviços web. Para o Framework em questão, como exercício prático da pesquisa, foi escolhida a linguagem Inglês como padrão de desenvolvimento de cada DSL, já na busca pela universalização do sistema e pelo compartilhamento futuro com demais desenvolvedores. Segue abaixo alguns exemplos da utilização desse Framework. No que tange ao usuário do SGCW, o sistema será disponibilizado em uma interface amigável, através da qual os usuários poderão consumir serviços como Twitter, Google Search, Google Translator, Flickr, entre outros. Além disso, os usuários poderão integrar outros softwares, que viessem a utilizar a base de dados como principal centro de informação. Para não limitar o sistema a sites de redes sociais, como muitas das aplicações existente e já citadas fazem, o SGCW possibilitará o usuário a consumir informações de diversas aplicações web usadas, por exemplo, para o desenvolvimento de portais web, como Joomla!, Wordpress, Drupal, entre outras. Para o seu desenvolvimento, o sistema utilizará linguagem PHP e práticas de desenvolvimento de software como DDD (Domain-Driven-Design) e Fluent Interface. 5.2. Análise prática com o desenvolvimento de um Framework O desenvolvimento de um Framework vem da necessidade de facilitar o processo de desenvolvimento do sistema sugerido nesse estudo. Para isso, o Framework interpretará uma série de informações que chamaremos de DSL (em inglês, Domain Specific Language). Segundo Martin Fowler21, a linguagem de domínio específico (DSL) possui uma a idéia básica: uma linguagem de computador orientada para um determinado tipo de problema. Isso vem contrário à idéia de linguagem de propósito geral, que é reservada a qualquer tipo de problema de software. Ainda conforme Martin Fowler, DSLs são comuns na informática, visto que há exemplos que incluem CSS, expressões regulares, SQL e HQL. Além disso, elas possuem a própria sintaxe e forma de escrita. Isso além do fato de também possuir um interpretador (Parser), que é usado para processar as DSLs de maneira mais amigável. Conforme Martin Fowler, DSLs podem entrar em execução através da interpretação ou geração de código. Porém, é normalmente mais fácil interpretar (leitura do script DSL e executá-lo em tempo de execução), mas vale ressaltar que, às vezes, a geração de código é realmente essencial. Quando conceituamos Fluente Interface (EVANS, 2009; FOWLER, 2010), pode-se explicar, conforme o conceito comumente difundido até na própria Wikipedia dos EUA22, como sendo uma maneira de implementar um código orientado a objeto de forma que vise proporcionar um código mais legível. A Fluente Interface é normalmente implementada pelo método de encadeamento, para retransmitir o contexto de instrução 5.2 Exemplo da utilização do Framework 1 - Aplicação Flickr 1.1 - Realizar uma pesquisa pelo termo "Joomla Day Brasil"; 1.2 - Trazer informações de uma foto com um Id específico; 1.3 - Trazer informações de todas as fotos de um conjunto de fotos específico; 1.4 - Trazer uma foto de diferentes tamanhos com um Id específico. //inicializando um tipo de aplicação $Flickr = \Flapp\Factory::getApplication("Flickr"); $Flickr->parser('search with text "Joomla Day Brasil"'); //item 1.1 $Flickr->parser('photo info with id "3919926282"'); //item 1.2 $Flickr->parser('photo info from photoset "72157623196518483"'); //item 1.3 $Flickr->parser('photo size with id "3919926282"'); //item 1.4 //para cada resultado, deve se utilizar o seguinte trecho de código para capturar as suas referentes informações. $rows = $Flickr->getCatalogRows(); 2 - Aplicação Google 2.1 - Traduzir um texto utilizando o Google Tradutor de um texto específico para uma linguagem especifica; 2.2 - Fazer uma pesquisa na web por um termo específico. $Google = \Flapp\Factory::getApplication("Google"); 21 Autor e consultor sobre Design of Enterprise Software e mantenedor do site Martinfowler, acessado em <http://martinfowler.com> 22 Acessado em < http://en.wikipedia.org/wiki/Fluent_interface > 23 Nível complexo de programação, que requer um nível de abstração elevado que aproxime a linguagem do código à linguagem humana 4 $Google->parser('translate text "Ola Mundo!" to language "en"'); //item 2.1 $Google->parser('search on web term "Joomla!"'); //item 2.2 //para cada resultado, deve se utilizar o seguinte trecho de código para capturar as suas referentes informações $rows = $Google->getcatalogRows(); (JENKINS, 2008), essas informações precisam estar disponibilizadas de maneira muito mais rápida e em um mesmo ambiente. Viu-se também que há várias aplicações que realizam essa atividade de convergência dos dados vindos de outros ambientes web. Contudo, percebe-se também que poucas dessas aplicações mantêm uma filosofia de software livre parcial ou integral em seu desenvolvimento; não permitem uma customização por parte dos usuários – no que se refere à visualização – e dos desenvolvedores web – no que se refere a programação/design/integração com outros sistemas; são limitados a serviços web disponibilizados pelas plataformas a que eles se integram e não se conectam diretamente a informações contidas em banco de dados, mas sim a serviços das plataformas a que eles se conectam. Dessa forma, há uma dificuldade de incremento do sistema por outros desenvolvedores, além de um problema sobre o crescimento do sistema com a integração de extensões. Também, diante dessas características, o sistema dificulta a interação mútua (PRIMO, 1999) com o usuário através da possibilidade de ampla customização técnica e de visualização. Portanto, a partir dessa análise, chegou-se a uma proposta de sistema que tivesse seu código parcialmente aberto, que possibilitasse incrementos com extensões, que coletasse informações de outros ambientes independente do tipo de banco de dados e que possibilitasse customização por parte dos usuários na forma de visualização dos dados coletados. 3 - Aplicação Joomla(Banco de dados) 3.1 - Trazer os conteúdos publicados de uma categoria com um nome específico; 3.2 - Trazer os conteúdos em ordem publicados; 3.3 - Trazer os últimos banners publicados de outra configuração de base de dados que utiliza a mesma estrutura. $Joomla = \Flapp\Factory::getApplication("Joomla"); $Joomla->parser('content from category with name "latest" and content published'); //item 3.1 também podemos realizar a mesma consulta de diferentes formas. $Joomla->parser('content from category with name "latest"'); $Joomla->parser('content published in order'); //item 3.2 //Modificando a configuração para outra base de dados que utilize a mesma estrutura $Joomla->getConnection('Database 2'); //item 3.3 $Joomla->parser('banner latest published'); //ou $Joomla->parser('banner published latest'); //para cada resultado, deve se utilizar o seguinte trecho de código para capturar as suas referentes informações $rows = $Joomla->getRows(); Portanto, utilizando DSL, é possível construir uma forma fluente de realizar consultas dinâmicas em aplicações de banco de dados, assim como também coletar informação a partir de aplicações que utilizem web service. Dessa forma, torna-se possível o principal intuito do SGCW, que é consumir dados de aplicações, estejam elas disponíveis através de web service ou diretamente no banco de dados. Futuramente, dentro da perspectiva de incremento do sistema SGCW, também será possível desenvolver uma interface na qual o usuário poderá não só consumir dados da web de forma fluente, mas também escolher a forma de exibição desses dados. Dessa maneira, será possível criar, com os dados de uma pesquisa no Flickr, por exemplo, uma galeria de fotos utilizando XHTML, um RSS ou um gráfico de comparação das fotos por quantidade de comentários. Essas possibilidades virão dentro da lógica, prevista, de incremento do sistema a partir de extensões, quiçá colaborativas na Internet. 12. Bibliografia CASTELLS, Manuel. A Sociedade em Rede. A era da informação: economia, sociedade e cultura. 2.ed.; São Paulo: Paz e Terra, vol. 1, 1999. EVANS, Eric. Domain-Driven Design: Atacando As Complexidades na Criação do Software. Rio de Janeiro: Alta Books, 2009. FOWLER, Martin. Domain Specific Language. Acessado em 10 de abril de 2010, às 9:00, pelo endereço <http://www.martinfowler.com/bliki/DomainSpecificLanguage.html> JENKINS, Henry. Cultura da Convergência. São Paulo: Aleph, 2008. LEVY, Pierre. Cibercultura. São Paulo: Editora 34, 1999. Tradução de Carlos Irineu da Costa. PRIMO, Alex; TEIXEIRA, Fernando; FORTES, Márcio Borges. Explorando o conceito de interatividade: definições e taxonomias. 1999. Disponível em: <http://usr.psico.ufrgs.br>. Último acesso em 6 de novembro de 2007, às 1h15min. WIKIPEDIA. Fluent Interface. Acessado em 10 de abril de 2010, às 14:00, pelo endereço <http://en.wikipedia.org/wiki/Fluent_interface> 6. Conclusão Viu-se nessa pesquisa que, diante do volume crescente de informações na Internet, sobretudo nos sites de redes sociais, há também a necessidade de organização dessas informações. Dentro da Cultura da Convergência 5