Illustrative special topic studies
1 Urban runoff
Organizações públicas e privadas adotam o software livre de duas maneiras, sendo a primeira delas pela implantação desses produtos no seu ambiente operacional (HAUGE; AYALA; CONRADI, 2010). A opção pelo uso de programas fez parte de decisões estratégicas de governos que viram nesse modelo tecnológico não apenas uma inovação do ponto de vista econômico, mas também um importante instrumento de autonomia tecnológica (MAZONI, 2017).
A segunda abordagem que as organizações adotam em relação a código aberto é pela utilização de ferramentas e práticas do software livre no desenvolvimento de software organizacional (HAUGE; AYALA; CONRADI, 2010; MADEY et al., 2002). Segundo Stol et al. (2011) várias organizações passaram a incorporar práticas do desenvolvimento de software livre/software de código aberto no seu processo de desenvolvimento de software sem, entretanto, adotar integralmente a filosofia do software livre, o que passou a ser denominado inner source. Não existe um conjunto formal de práticas a serem adotadas, mas algumas mais comuns incluem acesso universal e imediato a todos os artefatos de projeto (por exemplo, código fonte), entregas antecipadas e frequentes, e possibilidade de realizar customização local – o que pode implicar em cópia e alteração local de código, também conhecido como fork (ibidem). A adoção do inner source tem várias implicações e pode trazer alguns desafios para a organização, tal como suporte e manutenção de comunidade (STOL et al., 2011).
Os projetos de software livre/software de código aberto são geralmente baseados em comunidade, mas quando organizações disponibilizam publicamente um código desenvolvido internamente, surge uma comunidade patrocinada, com ciclo de vida distinto, para a qual o patrocinador, além de prover o código inicial, geralmente provê recursos, compartilha o conhecimento gerado e lidera a comunidade (WEST; O’MAHONY, 2005). Neste caso, o desejo do patrocinador em orientar o projeto para
atender às suas próprias necessidades deve ser ponderado em relação a incentivos para que os participantes se juntem e contribuam para a comunidade (ibidem).
Vários autores, tais como Heller et al. (2011), Thung et al. (2013) e Yu et al. (2014), associam o movimento de software livre/software de código aberto (FOSS) a um novo paradigma de desenvolvimento de software denominado de programação social (social coding). Esses autores referem-se às plataformas não apenas como um repositório de versionamento e de compartilhamento de código, mas principalmente como uma comunidade de programação social, por exemplo a comunidade Github. Tais comunidades são baseada em redes sociais e engajadas em um trabalho coletivo de construção de conhecimento (DABBISH et al., 2012), o que facilitaria a colaboração e propiciaria aprendizagem, caracterizando-se também como uma comunidade de prática (DABBISH et al., 2012).
O Github tornou-se um repositório de software popular e alguns autores até mesmo o consideram o maior repositório FOSS do mundo (BORGES; HORA; VALENTE, 2016; VASILESCU et al., 2014), levando-se em conta a quantidade de usuários registrados e de projetos catalogados; um dos seus diferenciais é o mecanismo social de ordenamento de popularidade baseado em estrelas recebidas (BORGES; HORA; VALENTE, 2016). Segundo Dabbish et. al (2012) o mecanismo “seguir desenvolvedores (follow)” e o mecanismo “assistir projetos (watch)”, presentes no Github, permitem que os desenvolvedores escolham desenvolvedores e projetos dos quais desejam ser informados das mudanças e atividades. Uma vez que essas formas de notificação sejam configuradas, conexões seriam estabelecidas e os desenvolvedores passariam a ser significativamente influenciados pelas atividades dos desenvolvedores e projetos seguidos (LEE et al., 2013).
A visibilidade de informações no Github, sobre as ações dos desenvolvedores, permite que os indivíduos façam inferências sociais acerca dos demais colegas, por exemplo: A recência14 e o volume das atividades indicam interesse e nível de comprometimento; a sequência de ações ao longo do tempo indicam a intenção por trás da ação; a atenção com as pessoas indica a importância da comunidade e informações detalhadas sobre ações indica a relevância pessoal (DABBISH et al., 2012).
A comunidade Github, portanto, além de prover mecanismos de programação social para que os usuários desenvolvedores possam estar cientes das mudanças nos projetos e das atividades de usuários que sejam do seu interesse, estabelece redes sociais entre os desenvolvedores, reforçando o paradigma da programação social e do desenvolvimento distribuído de software (YU et al., 2014). Logo, a programação social também pode propiciar uma colaboração substancialmente maior entre os desenvolvedores (THUNG et al., 2013).
Segundo Dabbish et al. (2012) quando plataformas sociais são usadas em um contexto de desenvolvimento de software, promovem a articulação de redes sociais relacionadas ao código, a partir do compartilhamento de atividades, interesses e redes sociais dos indivíduos, da mesma forma que, segundo Leonardi (2014) a introdução da mídia social no contexto organizacional pode moldar o compartilhamento de conhecimento no ambiente de trabalho, à medida que torna os usuários mais conscientes do que e quem os seus colegas conhecem.
Para Mergel (2015), no setor público, plataformas de programação social como o Github aumentam as oportunidades para os desenvolvedores solicitarem mudanças de código e co-desenvolverem o código existente, trabalharem com o código, descobrirem problemas e apontarem oportunidades de melhoria, porém a colaboração aberta seria menos frequente do que reusar e adaptar código para suas próprias necessidades (forking content), em um processo relativamente passivo e não mensurável. Além de encorajar os programadores de código aberto a colaborarem com o governo, o compartilhamento de código reforça a transparência e pode incluir o compartilhamento de dados abertos para facilitar a reutilização pública de informações governamentais (MERGEL, 2015).
Por outro lado, a formação de redes sociais no Github permite estabelecer conexões fracas e que ultrapassem as fronteiras organizacionais, trazendo para as redes de desenvolvimento distribuído uma transparência que estimula o surgimento de uma consciência coletiva, aprimorando a colaboração e a coordenação no desenvolvimento de software baseado em programação social (DABBISH et al., 2012). Além disso, segundo Wenger, White e Smith (2009) o desenvolvimento de
software livre ou de código aberto (FOSS) seria um exemplo de como as comunidades
virtuais podem usar a tecnologia para colaborar e desenvolver parcerias entre indivíduos e entre organizações. Essas comunidades, além de utilizar tecnologias
sociais, também adaptam, estendem e, em alguns casos, “até inventam as tecnologias que lhes permitem se unir” (WENGER; WHITE; SMITH, 2009, p. 694).
Para Vasilescu et al. (2014) a plataforma de programação social Github popularizou o modelo de desenvolvimento baseado em solicitações. Neste modelo, haveria dois tipos de contribuições de desenvolvedores para um projeto: as diretas, provenientes de um grupo tipicamente pequeno de desenvolvedores com direito de gravação (commit) no repositório principal do projeto, e as indiretas, provenientes de desenvolvedores que bifurcam (fork) o repositório principal, modificam as suas cópias localmente e abrem uma solicitação (pull request) para revisão das mudanças e posterior implantação (ibidem). As solicitações indiretas seriam muito mais prováveis de resultar em compilações bem-sucedidas do que a gravação direta (VASILESCU et
al., 2014).
Sequencialmente delineia-se o alinhamento conceitual a ser trabalhado na proposta inicial de pesquisa.
4 ALINHAMENTO CONCEITUAL E PROPOSTA INICIAL
Este Capítulo está organizado nas seções: Alinhamento conceitual e Proposta inicial de pesquisa.