I’m looking for some advice from my readers. I’m looking at developing some web applications to support my business. A lot of it will be data entry that will be saved in a database and then some simple data processing done to the data. I will also need multi user access with authentication and authorization functions.
My server is currently LAMP based: Debian 4, PHP 5, MySQL 5, Apache 2.2. So a solution built around this platform would be easiest to implement, and I also have basic PHP coding skills.
Here are some of the options I’m considering:
1) Roll my own application from scratch based in PHP. More work, but more flexibility and less learning.
2) Install Drupal or some other CMS and build modules. Will get a nice CMS too but need to learn a bunch of stuff and the type of apps I need to make will still require significant effort.
3) Use some kind of PHP Rapid Development Framework. Again, this will require more learning, but again has the flexibility of not being tied to a particular CMS’s requirements. But then the question is which one? CakePHP, Prado, Horde?
4) Switch over to Ruby on Rails which is supposedly the easiest way ever invented to code web apps. Means installing and learning a new platform and language from scratch.
5) Something else?
Any ideas or feedback?
well, i’m probably the wrong one to ask, since i’m rather the crazy old skool type. i used bourne shell scripts and compiled stdio-interface binaries to creat my cgi-bin processes. one of my binaries was very similar to php, and i considered php the best migration to a ‘standard’ development platform. i would suspect it still is, but i’m afraid i can’t help you with the flavor choices as i’ve never ever heard of them until your mention. good luck and happy hacking. 🙂
It depends on what you’re looking to accomplish and what type of programmer you are. I’m a lazy one. I think at heart, all programmers are. If not, we wouldn’t code things. With that said, you can now decide whether or not to listen to me:
I’ve done 1 through 3 in that order. Haven’t tried 4, due to the laziness factor.
1. Lots of work to do it right.
2. I used Joomla for a long while. Supposedly the best there was. My problem was I spent just about as much time teaching my clients how to use that darn thing. Also, stuff for Joomla just ended up looking cookie cutter.
3. This is where I am right now. It’s a nice blend of both worlds. Frameworks are excellent. Since I’m started with CakePHP, I’ve expanded my view to Frameworks for other things: Proptype for JavaScript, Blueprint for CSS. My thought is this: if a group of intelligent minded people get together and create a product over a long period of time, then they obviously can do it better than I can.
4. Should be easier than 3. But I’m in no mood to learn a new language and at the time, servers I already paid for didn’t support.
—
Baz L
Day In The Life of Baz
Ruby on Rails is, at its core, a MVC (model-view-controller) framework. Such frameworks help separate the database access (“model”), presentation code (“view”) and “business logic” (“controller”) code into separate parts, which definitely help make things more maintainable. And in practice seem to significantly reduce the amount of code you need to write, because the better abstraction it encourages allows for more plugin modules and reuse. It takes a while to get your head around where you add your bits in, but once you do it’s much more productive.
There are now web-based MVC frameworks for most popular programming languages. Ruby on Rails for Ruby; the Catalyst Framework for Perl; a bunch for Python and Java, and I imagine some for PHP too. I don’t follow PHP, so can’t suggest any specific products. But I would tend to suggest using a MVC framework in a language that you are already comfortable with over learning Ruby just to use the Rails MVC framework. I’ve used the Catalyst Framework extensively because I’m very familiar with Perl, and found it very helpful.
I’d tend to suggest against taking the CMS approach unless you particularly want the CMS part of it too. But it seems to me that you’re more wanting “web based ‘green screen’ business applications” for which a MVC framework is very powerful then a CMS wouldn’t gain you very much over writing raw PHP.
Ewen
Wow! Thanks for all the great feedback, and only a couple of hours after posting. CakePHP is also an MVC framework for PHP, so if the best thing about Rails is the MVC model then I’m leaning towards sticking with PHP and using an MVC framework, probably CakePHP. One drawback is that there really aren’t any popular books about MVC on PHP, while there are dozens on Rails. I’m starting to crack the online manual for CakePHP now to see what this MVC stuff is all about and how it is implemented in CakePHP. Another drawback is the CakePHP support on debian is still in unstable, but that’s a small hurdle.
Drupal CMS has almost all of the functionality you want. With CCK and Views, you can do all the customization yourself to fit your application needs.
We use Drupal for our Corporate Website and have it integrated with third party apps. We are now also developing apps that take Site Feeds using Drupal, Scrap the Content using Ruby on Rails, Generate Newsletter using ePublish Module of Drupal and mail out the newsletter using MailerMailer.
Drupal is being used by very large corporations like SONY BMG, Warner Brother Records, BBC UK, MTV, Discovery Channel, Canadian Broadcasting Corporation and the list can go on.
We also work on Ruby on Rails and it is also pretty powerful. If you want a totally custom solution with lot of engineering, low level programming and complex algorithms – go with RoR but I dont think this is the case here.
Obviously, I would guide you to use Drupal, but I’m also the author of one of the apps that Rina mentioned in her comment, so I’m heavily biased toward the platform.
That said, much of what you asked for, Drupal will give you pretty much automatically. There will be a bit of a learning curve in figuring out how to put some of the pieces together, but it’s a lot faster than simply writing it; even using a framework such as CakePHP or Ruby on Rails.