Social programming should be a feature of a language![]() In this blog post I will argue that future programming languages should focus on the social aspects of programming and be more democratic (especially when it comes to the standard library). History and trendsIn 1995 Perl launched CPAN, which is a Perl repository that holds thousands of Perl modules and their documentation. CPAN is a great success and one of Perl's greatest strengths. It even holds some "social" aspects such as rating modules. Python and Ruby have tried to copy CPAN, but their attempts are not that social in nature and not that good overall, but they do enable developers to quickly push out their packages and for developers to quickly install packages.
In the recent times we have seen the rise of GitHub, BitBucket, Google Code and lots of other projects that make programming more social and that enable easier collaboration between developers. The bottom line is that programming is getting more social, it's relatively easy to push out packages and Perl, Ruby and Python have great success with their packaging platforms. Lacks of the current platformsI'll take Python as an example of the current problems. Python lacks can be applied to other languages as well. In my example I want to find a template library for Python. I search for "template" on Python Package Index: The results as you can see are mostly useless. Mako, which is one of the great template systems, has a score of 1. Jinja, another great template system, a score of 3. Other unknown template libraries and tools a score of 5+. Useless! But that's really the beginning. PyPi is pretty horrific for any kind of collaboration. If I fetch a package I don't have a clear path on how to send back my patches, patches that could be useful for other developers. I don't have a clear path on how to report bugs, bugs which other developers might be experiencing. I don't have an overview of what current patches there exists or what bugs are currently present or have been fixed. The general presentation of the system is pretty bad as well. Why not keep a track of which developers maintain which packages? Or have a reputation system? So if Joe is really active and really helpful, then the system should figure out that Joe should have a high reputation - others can then judge projects based on the reputation of the project and its developers. A reputation system would also introduce a competitive aspect, which could fuel innovation and improve quality. The social platformThe idea of the social platform is to create a platform where developers can collaborate and a platform that promotes quality software. CPAN, Ruby Gems and Python Package Index are early versions of this vision and they need to become more social to become more useful. The social platform should be applied to the core libraries as well and not just be used for the external libraries. A language's standard library should be a democracy where the best and most used libraries win - and not like now, where libraries win by being selected by a few dictators! Essentials of this platform are:
Most of these pieces are partially implemented, especially in products like GitHub and BitBucket. What is needed is a much better integration with the languages. The bottom line is that languages should embrace "social programming" and implement a platform similar to GitHub/BitBucket that enables developers for easy collaboration. 7 comments so far
Post a comment
Commenting on this post has expired.
|
Blog labels |