lunes, 10 de diciembre de 2012

Developer Science: Analysis Framework

Alexis Tocqueville

The art of association then becomes, as I have said before, the mother of action, studied and applied by all.
Alexis Tocqueville, Democracy in America

At every moment in the history, human communities have been a way to spread the knowledge. Randall Collins has shown in his amazing book The Sociology of Philosophies, the effects of the communities of philosophers and scientists in the development of the philosophies. The foundation of institutions such as the Royal Society has been influenced by networks of people surrounding specific individuals such as John Evenly or Giovanni Domenico Cassini. Those days, the communications were in Latin and by postal mail, but the networks of people were very similar way to nowadays.

Recently, users and programmers of mainframes IBM OS/360 and mini computers, such as the PDP family, created a community about these technologies. The first versions of UNIX were distributed also in a dedicated community of academic centres. You can get a great story about these times taking a look of the classical The Mythical Man-Month, by Frederick P. Brooks.

Certainly, communities have flowered around software production as in no other technology or science. It might be the reduced needs of capital (CAPEX), have lowered the barriers for newcomers, students, freelances and fans of software development, skyrocketing the production and fostering the innovation. Moreover, FLOSS licences and Internet as a platform have created the perfect ecosystem for one of the most successfully open innovation experience.

Currently, the developer concept includes not just programmers with high technical skills, but also other people with low or even null technical skills, contributing to the open innovation process. The analysis of the technological, sociological and economic effects of  this knowledge management for open innovation arena and technological transference between different stakeholders, bring us to a new expertise area which we could call Developer Science or DevSci.

Understanding properly the developer communities requires an analysis of the historic development during the last three decades. Assuming that alternative views are acceptable, a proposed analysis framework is presented below. In my experience, it is very useful to design strategy for a developer program i.e. technology transference in open innovation scenario.

Analysis framework

In order to understand properly the discussion about the different periods or generations of developer communities, it is selected a temporal framework and a set of singular factors which allow to describe every generation in terms of values of the factors chosen. It is very important to clarify that even though this report presents a sharp transition between generations, this is just a simplification. Even more important, the rise of a generation doesn't means the end of the previous ones. Indeed, today you have communities belonging to the different generations living together. In some way, you could understand the different generations as a way to segmentate the developer market.

In addition, even the report is focusing the discussion about software developers using milestone in the open source development, developer communities include not just open source communities, but also communities about privative software. I would say even more: communities very important in the software development include nowadays content developers or hardware creators. Let us highlight communities such as Arduino, SAP or Microsoft partners program or Lego MindStorm communities.

Once all these clarifications were done, these are the singular factor identified:
  • Focus. This is the factor driving the community efforts. It is the main motivation that the people belonging to the community. Saying in other way, this would be the challenge that the community as an emergence system (swarm intelligence)  faces.
  • Interoperability. This factor is the level of fragmentation existing in the technology developed by the community. This factor, besides its effects on technology, affects to the health of the community itself. Communities working on fragmented technologies make difficult the growing of the ecosystems, making difficult the collaboration/cooperation.
  • Geographical distribution. This refers to the geographical location of the communities. Even though, Internet makes communities global, in general terms, the leaders and main contributors of a community have an specific location, influencing the community. The real global communities have appeared mainly in the second and third generation of developer communities.
  • Developer segment. This factor determines the number of developers but also the qualification of them. It is a good approximation to the segmentation of the developer population.
  • Licenses. This factor characterises every developer generation considering open source licences, assuming that the licenses reflect the evolution of the communities.Even considering it is a partial factor, due to it doesn't describe communities about privative software, it highlights interesting insights of the evolution of developers communities.
Including all these factors, the following figure presents the generations of developer community identified.

First Generation: Free Software Foundation

Richard Stallman disrupted the software development processes aiming "to eliminate restrictions on copying, redistributing, understanding, and modifying computer programs", helping to develop the GNU operating system. With these goals, Richard Stallman founded the Free Software Foundation on October 4th 1985. This has affected not just software technology development, but many other areas in our society and the insight about rights of the people and the technology. And from my point of view it characterises the first generation of developers communities.

In this first generation, the communities were small ecosystems of technical programmers and scientists. They were focused on few technological niches, producing high fragmented software, with few interoperability with then existing and legacy systems. Geographically, these communities were settled mainly in USA.

Concerning non open source communities, during the 80s, there was an amazing movement around BBS and shareware software. Millions of people bought software from an almost new born industry of software developers. This was the first massively distribution channel for software and many of the biggest software companies today were created during this time.

Second Generation: Open Source Initiative

During the 80s and the 90s, many developers which were participating in the primigenias communities, created companies. At the same time, due to the obvious benefits of the open source, many companies started to work in communities or following a community approach. As a consequence communities became more business friendly i.e. the strong ideology of the first communities was overcomed with the new generation, focused in business but without discard totally the benefits of the collaborative models.

Then, in 1998, Bruce Perens and Eric S. Raymond founded the Open Source Initiative., helping to clarify which licenses were open and giving some chances to industry working with open source. This was the first step in the standardisation of  open source.

In terms of licenses, this new generation of developers communities found more flexibility with license such as MIT (1988) or Apache (1995), which allowing the industry a wider usage of open source and making easier the integration with privative software. From the technological point of view, during this period started the development of the many platforms: Linux kernel (1991), Netscape-Mozilla browser (1998), GNU/Linux Debian distribution (1993), Cygwin (1995), just to mention a few. Quite related with software technology and community collaboration, I could mention the IETF and their work with RFCs.

The developers population started to inculde more people, increasing its number, working at many more communities and many of those developers had  lower technical skills. Open source communities became the main source of knowledge for many computer science students and teachers. The technical training became DIY, extending the production of software to everywhere. Obviously, the innovation skyrocketed. In terms of geography, Europe started to contribute with developers and leaders to the existing communities and many new communities appeared here.

Third Generation: Creative Commons

With the origin in the critical review of the intellectual property laws, Creative Commons extends the open licensing to reach contents, not just software. And hence, a new generation of developers communities appeared behind this idea, again under a new schema of licensing: the Creative Commons license. In 2001 Creative Commons was founded and in December 2002, the first version of this license was announced. Free Culture, by Lawrence Lessig, includes many insights about everything behind the movement.

What initially seemed to be a theoretical exercise, only for lawyers, thanks to the rising of the sharing platform, became into a global and revolutionary movement still in development. Developers, more o less technical, open the communities up to non programmer. Nowadays, different kind of developers are counted by millions, coming for all around the world, especially the emerging countries.

Complexity at the systems made open standards mandatory, even at big enterprises. Everywhere everybody agrees on that open communities in the only way to face complexity, fostering the innovation. Open Sources communities such as Mozilla has been able to pipeline communities from high technical one (Gecko or FirefoxOS) to non-programmer (WebMaker), taking advantage from the huge developers base and the modern conception of the communities.

Conclusion and future evolution

Developers communities are still evolving. New projects such as WebMaker, Scratch, App Inventor, Lego MindStorm or MeuApp open communities for everyone.

Moreover, digital inclusion process are creating an amazing opportunity at mobile learning, e-Health, e-Finances and e-Government. Most of the innovation in those areas can be found in emerging countries, where the technology is playing well for economics and society development.

Due to the development of the cloud computing, now SLAs are more important than conventional software licenses. Concerning to the geographical localisation, well, as you already probably know, NASA is working at an Interplanetary Internet.

Finally, I am looking forward to see how singularity affects developers communities. Probably we will see communities contributing with brain patterns downloaded into high performance computers. Using BCIs, people will be able to develop on themselves,.. the test? Well, we will need some kind of sandbox environment.

No hay comentarios:

Publicar un comentario