Languages and Their Library Cultures
I saw an interesting blog post today titled Why I stick with Perl. In short, the author’s reason for sticking with Perl was that he believes it to have the best “library culture.” A strong library culture is more important to him than the language itself.
What does “library culture” even mean? I would define it as the practices, beliefs, and institutions regarding the sharing of modular code. In other words, it refers to the systems for sharing code and the practices of developers concerning those systems.
Perl certainly has a very strong library culture. CPAN is one of the most extensive library repositories out there. In my experiences with the Perl community, the use of CPAN has always been encouraged, and I’ve generally been pleased with code quality and documentation.
Besides Perl, this made me think about other library cultures. I never realized how drastically different some of them are. Here are my thoughts on a few of the more interesting cases.
Ruby on Rails
Ruby on Rails is very much so a cut and paste world. Despite the existence of RubyForge, I still find myself grabbing code from blogs, wikis, or some random guy’s self-hosted repository way too often. It’s always a little unsettling. The library culture of Ruby on Rails lacks a certain level of professionalism.
For example, a typical plugin hunt involves going to the Rails wiki, grabbing the plugin from a random guy’s subversion repo, making the changes suggested on the Rails wiki, then going to a forum or blog and copy-pasting the changes suggested there. After all this work, you later find out that some other guy did all this and checked it into GitHub in a new repo. Now whose changes do I follow, the original random guy’s repo or the new repo from a new random guy? And who are these people anyway? It all feels very questionable.
PHP
PHP provides so much in the core extensions that I rarely need to look outside of what’s already there. Whenever I do need something, PEAR or a professional framework like Zend Framework often has it. I can’t think of a single time I ever needed code from a sketchy guy’s repo. Perl might be slightly better about libraries, but PHP still has a strong library culture. In terms of professionalism, both Perl and PHP destroy Rails.
C# and .NET
.NET is a monstrous library which has everything under the sun. Microsoft also provides great documentation. Due to these two factors, C# doesn’t even really need a strong library culture, it already has a behemoth with a ton of money taking care of it.
Microsoft can’t cover everything, though, so they’ll always be the need for other libraries. Unfortunately, the third-party library culture isn’t as open as it is in languages like Perl. The Microsoft world encourages licensing libraries instead of collaborative repositories.