Killer Open Source PHP Projects
Part of PHP’s power is actually found in the variety of open source (free to use) PHP based applications. I’m talking about things like blogs, web frameworks, forums, cms’ etc …
… I was just thinking, that a list of ‘killer’ PHP open source projects would be useful … for a few reasons:
- Once upon a time, a master programmer I know gave me a great piece of advice:
“Grasshopper, it is always a much better idea to use proven code (that means good open source projects) than to start from scratch.”
- Checking out examples of quality code, is a great way to learn how to become a better programmer.
- Who doesn’t need a list of ‘best of breed’ projects?
I’ve been snooping about the PHP world for a while now, and I’ve come across some crappy PHP projects (I will not name names) but I’ve also come across many great PHP projects.
To be totally honest about it, we’ve seen much of the good stuff coming out of the PHP world, in the last few years.
… PHP developers are leap-frogging ahead with regards to their level of skill and the quality of code they produce.
That all said, the following are my favorite ‘killer’ PHP open source projects:
WORDPRESS
Probably the most popular open source blogging software out there. It has gone through a few major revisions and now has a more solid object oriented code base*.
WordPress has a flexible architecture (enabled through plug-ins) that makes modifying it relatively easy.
* UPDATE: to be clear, WordPress makes use of both functions (procedural code) and classes. They also seem to use an MVC pattern .. in a way. That said, you are best to modify WordPress using its’ plug-in mechanism and not by touching the core code.
… One advantage of modifying WordPress by plug-in, is that you should be safe when the core code updates .. at least in theory!
ZEND FRAMEWORK
One of several quality web application frameworks/component libraries that should make any PHP programmer proud. I’ve chosen the Zend Framework for several reasons including:
- Has a smart flexible architecture
- Has good documentation
- Has great backing: Zend and IBM.
I’m such a big believer in the Zend Framework, that I created a Zend Framework section on killerphp.com.
You can visit the Zend Framework home page here:
DRUPAL
Drupal is a mature open source CMS that has a large community and a robust plugin system that has made Drupal very flexible in terms of what it can do.
Drupal is not object oriented, but the code is improving with each version. I’ve used Drupal 5 and played with the current (version 6) and have been impressed with the power of this CMS.
As you may or may not know, I’m a big advocate of using CMS’ or blogs as the foundation of many web design projects.
PUNBB
One of the smaller less known PHP based forums. I like PunBB because it runs fast (one advantage of procedural code), it is simple to install, simple to use and has a clean codebase. But like Drupal, it is procedural/function based.
–
If you have any ‘killer’ php project picks, please let us know.
Thanks,
Stefan Mischook
www.killerphp.com
Happy to see we made your list! Keep on ZF’in. 😉
,Wil
Hi Wil,
I’m happy to spread the word about ZF – it is deserved.
We used the Zend Framework when it was in Beta, on a couple of projects (webshapes.org and idea22.com) , and even in beta, we found the ZF to be very useful.
I look forward to future releases.
Stefan
I think vbulletin should be mentioned here, its structure has vastly inspired lots of other projects.
I know that it’s not free, but it is truely an open source php project.
Maybe Vanilla deserves a spot on your list? Ultra-light forum system, clean interface, awesome plugin system… see http://getvanilla.com/.
Just wanted to thank you for the PHP tutorials.
I’m new to programing and find them clear and easy to follow.
HI Peter,
I’m happy that the videos have been useful to you.
Stefan
PhpMyadmin – shouldn’t that be on the list?
Ok, its not a public-facing project, more of a tool really – but by comments I see on my own favourite PHP board I’d guess more than 80% of PHP/Mysql ers use it.
Consistently in the sourceforge.net top 20 for years and years.
I am currently in love with CodeIgniter. I haven’t tried enough frameworks to compare, but I find CI to be speedy, easy to set up and well-documented.
I also prefer PunBB because it is deliciously simple to customize the design, though that may have changed since the last time I used it. I had to customize the design of a Vanilla board recently and it wasn’t all that pleasant. It’s very easy to use though.
I have yet to dig deeply into the code behind Magento or SilverStripe, but I would definitely keep an eye on them both.
I have to agree with tiffany about CodeIgniter. I have tried many of the other frameworks, CakePHP, Zend, Symfony, and Prado. I’ve also tried even hopping to the python side and working with Django, and I support Zope as a Systems Administrator at work.
I in fact tried most of these after developing 2 projects with CodeIgniter, because I figured with as easy as it was with CI, I should check and see what other frameworks have to offer.
In the end, I repeatedly returned to CI until I’m at the point where I just don’t bother trying others anymore. CI just works.
Hi Stefan,
From a development point of view WordPress is one of the worst open source PHP applications. It’s easy to use, but the code is horrible. It’s very difficult to customize and extend.
CodeIgniter is the 2nd worst PHP application ever created. The architecture of that application is absolutely wrong. I found many many coding horrors in CI.
PunBB is my favourite php forum application, but the code is a little bit messy. And what have they done with the templates? OMG, a complete nightmare to update or write themes.
vBulleting is my 3rd worst open source PHP application. It’s easy to install and the performance is good, but the code is unacceptable.
ZF, Drupal, Symfony and Mediawiki are great applications, although phpMyAdmin is on top of my list.
Have you considered doing a PHP-oriented podcast? I think the results would be interesting. Just a thought.
WordPress? I had to laugh. Have you ever looked at the code? Impossible to follow, uses no objects, a procedural disaster. For good reading, check out bugs and fixes filed in their svn repo. Comical. It’s like wack the mole.
Claus,
We’ve used WordPress as the foundation of a simple CMS for several clients … it wasn’t perfect but at the time, it was reasonably easy to update.
Stefan
What versions of WordPress have you used?
I haven’t looked at the codebase in a while now (and I only touched the code myself a while ago, before handing it off), but I do know that it does use objects.
… If I can find time, I will take a look at the code and I will give you guys an update.
Anyway, nothing is perfect and you can’t please everybody. Nonetheless, WordPress is easy enough that many web designers have managed to create a lot of templates/themes for it.
With regards to WP, I think that this is where just looking at the application is a huge failing point as a solution provider. WP has critical mass (as do the other apps the Stefan mentioned here). WP did some great things back in the day (like their $wpdb object, which for its time did great things) and while you’re absolutely right about it being procedural and difficult to modify, _you_shouldn’t_be_modifying_the_source_code! WP has a plugin architecture for that specific reason and they’ve come up with probably the simplest plugin architecture out there to encourage people not to play with WP’s innards.
From a design perspective it isn’t perfect, but if you treat WP as a point solution (that offers you 80% out 100% of what you need and you don’t muck up the inner code base), you’ll end up on top. Besides are you comparing this to drupals ability to allow users to embed PHP using eval and storing it in the database!? no thanks! In my opinion, WP is a step above drupal, at least it keeps things simple enough at the db layer that you can easily migrate and work with your data once you outgrow a simple blogging engine. While Stefan might be a fan of drupal, I’ve gone through the horror of migrating a legacy drupal database with a frankenstein selection of plugins (each with their own versions / dependencies), irregularities in how good the character escaping was AND having to deal with PHP code stored with the page content. trying to debug php code sitting in a database is an accident waiting to happen.
@claus: phpMyAdmin is only still around because nothing better exists. It’s powerful stuff, but it’s basically exposing the PHP MySQL API in a semi-visual format. I think it’s a great start but it needs a facelift. Working with phpMyAdmin is just part of getting the job done, but it’s far from usable, let alone user friendly.
@Ric: I don’t see what’s so impossible to follow about WP, yes it’s procedural, however switch statements that clearly define application states and strong naming conventions (like link-*.php and options-*.php) help with doing two things that most OO developers forget about: simple, refactored distinct methods and proper namespacing. WP achieves these through strong conventions and discipline from the developers, if anything, it shows a weakness in the language for doing OO rather than anything else. While I have to agree that the mixing of template and PHP is jarring and screams of bad form, unless you’re a wordpress developer, you shouldn’t be touching that stuff anyway and a simple CMS / blogging platform is clearly NOT what you should be looking at.
Furthermore, WP was designed before a persistence layer (let alone an application domain) existed as part of a PHP development and architectural concept. While WP will have a hard time going from procedural code to OOP as PHP moves from v.5 to v.6, I firmly believe that the community that they’ve fostered will survive the growing pains. An open source project without a community isn’t an open source project, it’s a guy (or a girl) risking other people’s money on an web application platform that people don’t use, even when it’s free to download and modify! Quality of code is only part of this debate.
Hi,
I just took a look at the WordPress codebase (for the first time in a while) and it is indeed a mix of objects and procedural functions.
My apologies for confusing this issue … I had a memory of it being object oriented.
.. Probably because it does use objects for some things.
Regardless, I still think it is a great blog software.
Stefan
phpAdsNew… I mean OpenAds… Wait, I mean OpenX! Whatever it’s called, it’s an excellent ad serving solution, a snap to install and upgrade.
I’m also really liking Plogger as a photo gallery application these days.
I nominate: http://simplepie.org/ as the killer app for rss/atom feed parsing!
$feed = new SimplePie(‘http://www.killerphp.com/articles/feed/atom/’);
foreach($feed->get_items() as $item)
{
echo ‘Title: ‘.$item->get_title().”;
echo ”.$item->get_content().”;
}
– Mike
Hi,
@Wordpress: Very useful! I use it too. But the code is ugly! I don’t want to make code for it… For luck, nearly every kind of plugin already exists. So what^^
Good Alternative: Serendipity
@Zend Framework: This is very good! Nothing to say.
@Drupal: Current version 6.1. I installed it and tried some plugins, but even the standart plugins are only for version 5.1 (Guestbook for example). I don’t know anything about the code.
Good Alternative: Do not know one 🙁 At the moment I’m searching for one.
@PUNBB: Very lightweight Forum. I installed it once, I don’t know anything about the code.
Good Alternative: WBBlite i think.
All in all, very useful list. Thanks for this
@Sufijen,
I’m happy to hear you find the list useful. One of my motivations of this article was to get others to contribute their suggestions (of favorite PHP projects) along with getting feedback about the suggestions I and others have made.
Stefan
Greetings from East Africa everyone! I’d have to nominate phpMyAdmin, OrangeHRM for Human Resources Management, Simple Machines forum, and a host of others not on the tip of my tongue. Although I don’t use vBulletin, I’ve always been very impressed with its functionality.
As for Code Ignitor, I’ve quickly become a huge fan after reading the site’s AMAZING documentation, which was a real pleasure. I kept saying, “Holy shit, it does this? Damn!!” Or I’d say “Wow, they make doing this feature soooooo damn easy!!” I haven’t used it on a project yet, but I’m ready to roll. What really made me have orgasms with CI was how they implemented Active Record for database queries. Wow!!!!
All in all, I’m really impressed at where PHP is heading. I sense the community has stepped up to plate in terms of code quality along with a determination to make high quality web apps. The language itself truly is a killer application.
Good website so far. I like how it is for beginners and/or designers. I used to program ASP and do web design. Started off doing straight HTML and moved to Dreamweaver (just easier to use). Got out of it for a while. Now, I’m looking to get back in and am trying to decide what to learn .NET, PHP, or ??? The only reason I’d consider .NET is that I know ASP, have Visual Studio, and am expert with all Microsoft stuff. Yet, PHP seems like the definitive choice.
So, I want to learn PHP and have worked with it a little bit and MySQL. Can anybody recommend a good programming interface to work with…something like Dreamweaver and/or something that lets you do more “visual” building of websites, forms, applications…like a visual toolkit…that sort of thing. I will never be a great programmer, but I’m good with concepts, interfaces, etc. I will start looking at the Zend Framework.
A lot of the PHP stuff I have looked at have tons of procedures and includes…serious code for a light coder like myself. VBScript and ASP seemed pretty straightforward. PHP not so much. All the PHP people I know are serious coders. I just like to get things done.
Seems like a lot of open source stuff is pretty hard to make work at times or needs lots of mods…documentation quality varies. Don’t mind buying software if it is good. OpenX seems good. Didn’t like Drupal back when I tried it. A lot of people like Joomla…I don’t get it personally. phpMyAdmin is a killer app.
Sorry for the delay with my reply. Regarding Dreamweaver and PHP:
Dreamweaver CS3 has a reasonable environment for point-and-click PHP use. Dreamweaver includes a bunch of packaged up php scripts that will allow you to connect to databases, bind database records into HTML tables, create master-detail page sets etc …
I would NOT try to use the Dreamweaver code generator tools to build complex applications, but for prototyping and smaller projects, it maybe the best solution for web designers wanting to get into dynamic database driven websites. Something I highly recommend.
I should also point out that Dreamweaver CS3 does have a basic code editor (code view) for PHP as well.
That all said, Dreamweaver CS4 will be coming out soon and I get the feeling it’s support for PHP could be stepped up a little.
… I will comment about that when I know.
Stefan
Update:
Drupal 6.2 has been released and it looks to be a really solid upgrade. I wrote a little about it here:
http://www.killersites.com/blog/2008/drupal-6-looks-pretty-cool/
CIAO,
Stefan
Just some points:
1. WordPress (I use it) may have horrible code but it’s a global success, and you can’t argue with that.
2. @Stefan Mischook – re: Dreamweaver. Stefan, I have just redeveloped a church website, that I originally constructed using Dreamweaver 8. It’s only a small site, but I managed to cut the code base from 21,483,176 bytes to 11,939,547 bytes. All the content is the same. I simply employed my own framework and redeveloped using a text editor.
3. Do I detect PHP procedural detractors here, perhaps even turning up the nose? I use both methods, I employ good structure (as much as my ability allows), and it’s always well commented. There is nothing wrong with PHP procedural coding, don’t forget most websites and user interaction thereof, is done in a procedural fashion, plus, Drupal, particularly v6 is procedural and it’s code is clean and organised for the most part.
@Stefan (again) – thanks for a great website.
to Stefan or Moderator, SORRY, please add corrections to name.
My apologies.
Brian
Hi All,
I am looking for an open source system (preferable combinations is Windows, Apache, MySQL, and PHP), to suit (as close as possible) my requirement below.
Our company name: MAC
Our Client name: Alpha
Project duration: 5 years
Project Descriptions: The client (i.e., Alpha) will be sending inputs to design 80 advertisements for every day (display ads for yellow pages), and we (i.e., MAC) require to deliver the designed/completed ads (as PDF document) back to the customer within 2 days (24 hrs). If any rejection in the ads then client will notify us the correction details and we need to re-send the corrected ads in the same day (12 hrs).
Internal Teams (MAC): Team leader (2 members), Login (2 members), Graphic Designer (6 members), Quality Control (6 members), Quality Assurance (2 members)
External Team (Alpha): Project Coordinators (2 members)
Workflow:
Login
• The login person will enter the each ad details on the system, and attach some graphic files for design
• If any query on the ads he will raise the clarification to Team Lead
• When the Team Lead able to resolve the query then the team lead will respond back to the Login person, IF NOT
• Team lead will send/forward the query to the project co-coordinator at the client end for resolution, then the resolution notification will reach login and team lead teams
Designing
• A Designer will pick any ads randomly
• He will start construct the ads using some adobe application
• Finally he will attach the designed ads (as PDF) and complete the task
• If any query on the ads he will raise the clarification to Team Lead
• When the Team Lead able to resolve the query then the team lead will respond back to the designer, IF NOT
• Team lead will send/forward the query to the project co-coordinator at the client end for resolution, then the resolution notification will reach design and team lead teams
Quality Control
• A Quality controller will pick any completed ads randomly
• S/He will process the QC against some specification
• S/He will reject the ads and send back to the designer OR
• S/He will approve the ads and send to the Quality Assurance
Quality Assurance
• A Quality Assurance person will pick any QC approved ads randomly
• S/He will process the QA against some specification
• S/He will reject the ads and send back to the designer (again design, QC cycle will be in place) OR
• S/He will approve the ads and send to the Team lead for dispatch
Dispatch
• The team lead will dispatch the completed ads over FTP
• If any error in the ads the Project Coordinator can reject the ads
• Again login, design, QC, QA, dispatch cycle will repeat
Features required
• Web based system
• Time Tracking for each tasks
• Version control for each ads
• Email, Attachment modules
• Custom fields
• Reports
• Project Management, Collaboration, workflow, administration, security, versioning, scheduling, tem plating, syndication, personalization/localization, and session management,
I look forward to receive your views
Best regards,
Arul Kumar
Never underestimate the power of the internet. An increasing number of people use the internet
to search for a business or service so having a web presence is an important media for promoting
your company. Web design is a real skill and if your website is to not only look good but work well,
it should be constructed by a professional web designer.
If you are interested, you can contact me: hqwebdesign (AT) gmail (DOT) com
what about the rest