I'd really like to spend more time writing and learning about PHP, so I'd like to delve into the code of some well-written open source projects, and possibly contribute if I became familiar enough with the code. I know everyone says you should pick something you use or enjoy, but all of the open source PHP applications I've used have been horrendous (like osCommerce) or way too mature and large to need me (like WordPress). Sooo folks, do any of you know of or have a small to medium sized open source app written on PHP that I could study and perhaps help contribute to? Thanks!
2 well-established projects that just about everyone has run across:
- MediaWiki (source control) (Wikipedia)
- phpBB (source control)
As for your issue with project maturity, even mature projects can use help. And, if nothing else, you should still be able to learn a lot from them.
You might want to look at SilverStripe, they are not large yet but very promising, very well-written and very well organised too. And they are definitely looking for developers.
Drupal
pros
- good community
- decent documentation (see cons)
- start small (modules/themes) or big (drupal core patches)
cons
- not really object oriented (see)
- documentation can be a bit sparse at times
Kohana
pros
- object oriented
- helping a framework helps yourself!
cons
- decent sized project, may be hard to just jump in
You are right to be horrified once you see something like osCommerce.
Personally I can't recommend Drupal, even though there is a large community that supports it. It has a pretty old fashioned code structure and file-layout. Some parts of it's code is excellent, but in whole it kind of is very hack-ish.
I can recommend code igniter whole-heartedly. It's stable, clean and fast and with a good file-structure and a nice, loose implementation of MVC structure. - the biggest plus and probably very appropriate for you, is that it's code is really "pretty" :-)
Textpattern is also fine but a little hard to read in a single go.
Joomla is another good example but it is very varied, depending on what component/include file you are looking at.
"Code Igniter" framework is a great project to get involved with. Community is still 'small' enough to accept submissions readily from forum users, and the community overall is a lot of fun to be around. Since it is just a framework though, you will either have to get involved with a CI based project (ala FreakAuth, CI-CMS, etc.), or you'll need a project/use of your own to use CI in a way that you will discover areas of improvement or bug fixes that other members of the community have not discovered yet.
Being able to recognize a PHP project that is full of spaghetti shows potential of a great developer, and it you're feeling extra adventurous, maybe doing a re-write of a piece of say, osCommerce, could be your introduction to the php scene.
The big things you want are experience and exposure, so get involved and start making a difference (for the good!)
As an example of really well-written PHP code I would go for Zend Framework. It's not a "product" per-se, but a really nice, modern PHP design, though a bit advanced at times.
I can second the suggestions for CodeIgniter. The code is well-written and the community still has a... well, community feel to it!
I will third the CodeIgniter suggestion and also recommend checking out CakePHP and Symfony if you're interested in other MVC frameworks.
My favourite one is the PEAR Spreadsheet_Excel_Writer
package. Spreadsheet manipulation is one of those boring programming tasks that nobody is motivated to do in his spare time so I think it is quite an achievement that some poeple wrote some open source library to export Excel spreadsheets, especially since even for .NET, there aren't many good free tools to do that stuff.
I haven't looked at the source code but I'm sure the people who wrote it are professionals because they didn't write something they found interesting personally; they wrote something they knew other people will need and use. And that's sort of professional.