Ask HN: What OpenSource projects are good to learn from?

14 points by emson ↗ HN
I'm trying to put together a list of OpenSource projects that would be good for coders to learn from.

These projects should demonstrate best practice in their chosen language and implementation. Ideally they should have some aspect that is truly elegant.

Perhaps they solve a problem in a novel way, and would be useful to coders trying to improve their skills and techniques.

If you have worked on an OpenSource project or have come across code snippets that you have thought "Wow", please post a comment and a link to the repository.

At the moment I am interested in the following languages: Ruby, Python, Java, C#, but am open to any suggestions that improve learning.

Any help would be greatly appreciated and I will publish all my findings on Hacker News when compiled. Many thanks...

11 comments

[ 4.5 ms ] story [ 44.1 ms ] thread
MediaWiki is a large-scale PHP project that uses good design patterns, heavy usage of OOP, etc. If you're wondering about good development practices for PHP, I think MediaWiki's codebase is a good thing to look over.
Great thanks, are there any aspects that you particularly liked?
I wanted to write a plugin for MW years ago and found it painful. There was no clean way to insert raw html into the page as far as I remember.

@Original poster: I think the book "The Architecture Of Open Source Applications" looks interesting, I haven't read it though.

http://www.aosabook.org/en/index.html

Interesting I think I'll put it on my wish list, thanks.
The Flask (http://flask.pocoo.org/docs/) Python Web framework is designed on best practices. It and the other Pocoo projects (http://www.pocoo.org/) are exceptional.
Excellent recommendation, I saw it come up on HackerNews, a while back. I think these micro web frameworks are a great way for developers to explore and experiment with coding concepts. I guess we should also mention the Ruby Sinatra project: https://github.com/sinatra/sinatra
You should also check out TinkerPop (http://www.tinkerpop.com/) -- another exceptional developer group. Graphs are a much more elegant way of storing relational data, and TinkerPop has developed the open-source software stack for the emerging world of graph databases.
sqlite and postgres are often regarded as projects with good, clean style.
I'm under the impression that if you are already a sort-of-proficient programmer in a dynamic scripting language such as Python or PHP, you should study the code of the VM where said language runs.

I learnt a lot reading CPython's code after learning Python, even not being an expert on VMs nor on C++. I also had to work with PHP's VM for a research project and learnt a lot from tinkering with it. In both cases the code is not a piece of art, but you get practical knowledge about, for example, the misses and pitfalls of the languages you are already proficient with.

SQLite and Redis.
It really depends on what your end goal is and what kind of background you are coming from. I started with PHP and then looked at the underlying C++ code. Lost interest in about 2 hours.

Right now, my goal is to learn Python, HTML5, and ObjectiveC

So I got involved with github.com/namankumar/bloggart for Python and GAE, made a game for HTML5, and am now helping people with their iOS apps (and picking up objC along the way)