Tuesday, July 16, 2013

Social networking of open source communities

I was struck with a surprising thought today. Software developers have experience with specific technologies, and interests in significant and relevant updates to those technologies. We form communities around those technologies, collaborating in problem solving, across time and distance. Often times, several forum postings that we were able to google will provide a lifeline for understanding an issue and finding solutions. And yet, it is not completely mainstream by now for the basic elements of an opensource community to employ all of the benefits of social networking.

Consider how stand-alone things like mailing lists, forums, and bug reporting systems are. Users may post messages that link to bug reports and vice versa, manually, but why not have each system automatically indexed for searching, so that, just like relevant google adsense advertisements can be displayed within them, instead have relevant links shown from the other systems. Imagine a forum thread of some problem, where the more the users discuss it, the better the system would be at listing relevant bug reports. Not just from the same organisation's website, but other websites for related technologies. When discussing an issue on the icesoft.org forums, it could show you jira entries with matching keywords, relevant discussions on theserverside.com forums, the mojarra mailing list, or blog postings about the particular browser that you can reproduce the issue on. Users could then Like the links that they found to be most helpful and on-topic. This would affect the rankings for all users, helping best solutions go viral, and the most pertinent issues become noticed sooner, with more eyeballs making bugs shallower.

When a bug report is closed and fixed, or new feature is added, it pertains to a particular product, that will be available in particular upcoming versions, or immediately from the version control, involving specific modules or features. Individual developers might have interest in products as a whole, and wish to be automatically notified of major releases or minor releases. They might have a particular interest in certain modules, and may wish to know of new features or bug fixes as they are committed, or after they are confirmed by QA. The sooner a nightly build can be found to cause a regression, the greater the likelihood of having that immediately fixed, while the context remains fresh in the developers' minds. One can imagine automated regression testing that detects pertinent nightly builds of dependent software, downloads it, and tests the dependant software's integration with it. With finite testing resources, it might not be feasible to test every nightly build of every bit of software together, but with automation, crowd-sourcing and social networking, one can image waiting to only expend finite testing resources against software that others have validated and marked as stable, or alternatively, testing when pertinent modules have been updated, for a fast turn-around at addressing recent potential destabilisations.

Crowd-sourcing of evaluations of product stability could well drive development cycles, where crossing a threshold of instability could cause a shift from new product development to bug fixing, or attaining a threshold of stability could cause shifts toward feature development, or trigger ideal moments for merging of development branches onto main trunk.  Imagine being able to leverage supplier and customer automated tests, as one could receive indications of their integration with your software, on an ongoing basis. Where previously there would have been little incentive to do such agile integration testing, or publish the results, due to lack of developer resources in-house, crowd-sourcing could provide an augmentation of analysis, as those who care most and have resources could at least provide preliminary analysis, in their own self interest.

There would be a beneficial feedback mechanism between support teams, development teams, customers, and marketing, as recurring and new customers become aware of the buzz of new developments, in anticipation of new releases. Previously less known complementary and competing technologies could gain beneficial exposure, pushing forward that technological ecosystem as a whole.