(Pulled from here: http://www.concrete5.org/about/our_philosophy/a-letter-to-php-developers/)
I'm Franz, I used to be a developer, now I write emails. I was programming logo in first grade, I was running BBS's in the 80's, hacking together sites with SSI and PHPv3 in the 90's. Now I run concrete5.org with Andrew, who grew up hacking IRC and has worked with me for over a decade. We built concrete5 after years of consulting and frustration with other systems.
I know there are thousands of content management systems, and the learning curve for any new system is a beast, so I applaud the fact that you've bothered to look for something new and have read this far at all. Let me tell you a few things about where we're coming from that might help you continue to find the energy to get under the hood of concrete5:
- We talk about "path of least resistance" around the office a lot. This means creating elegant solutions to real problems. You can't get too high-level or you've just added a layer of confusion. You can't get too specific because you'll end up re-writing it constantly. It's about finding what the consistent elements of the challenge are and building a solution that addresses them while offering complete flexibility around everything else. Path of least resistance doesn't mean cutting corners, it means spending the time to understand a problem and create strong tools for building all the types of solutions you'll need in the future.
- Object oriented code is a good means to an end – but it's not the goal. The goal is having reusable code that someone can understand at a glance. If I had to spend 30 minutes looking for a single line of code that is buried 10 directories deep in a file with nothing else in it, chances are you've failed in meeting the goal, even though you're strictly OOP. That doesn't mean procedural is good, it just means quality is about thoughtful balance.
- Just because you can, doesn't mean you should. It's fun to brainstorm but lets not pretend every idea is a good one. I personally am the proud owner of many bad ideas. Every feature added means that much more risk of edge case bugs, so lets debate the value/cost ratio of that feature. Just because we're "open source" doesn't mean we're socialist hippies. Lets also not forget that the first 80% of building something is relatively fun and easy, it's the last 20% of dialing it in that will kill you.
- Less is more. These are websites, not rocket-ships. A page on a website is just a page. While concrete5 certainly has a learning curve and you will need to invest a little energy to get started, you should find the number of concepts you have to grapple with to be far lower than what you've grown accustomed to.
- From the ground up concrete5 was designed to be a CMS. We built this as our tool box to make picky agency clients happy. It's not a blog that people use as a CMS. It's not a news site that had features draped on it until it served no particular market and got dubbed a CMS. It is a well thought-out framework that was designed to let crazy clients manage a great looking website, with next to no training.
If you're hot under the collar right now because I just made it clear I'm not going to automatically approve your add-on when it doesn't follow standards, or that I've failed to understand that your computer science teacher is a god amongst men – chances are you're going to find your developer glory elsewhere. If these points resonate with you, keep exploring. You'll find a nicely thought out system that follows MVC and OOP practices where they add value, and helps you get your job done faster and more effectively in the real world.
CEO, Concrete CMS Inc.