: How can I decide if I should roll my own software or use a packaged CMS (and appropriate plugins)? I'm a software engineer with little web experience currently in the process of wanting to
I'm a software engineer with little web experience currently in the process of wanting to actually using my web host and domain name for something other than a file dumping ground for files that I need to give other people access to. My plan is to somehow deploy a personal/professional website and blog, either using FOSS off-the-shelf products, custom software, or off-the-shelf components with custom modules/plugins.
My requirements are:
Semantic HTML (well formed, proper use of attributes, microformats where appropriate, use of CSS for style and HTML for markup)
Validating HTML and CSS (XHTML, HTML4, HTML5 all acceptable - as long as it validates out of the box)
Support for a blog
Support for editing and managing my resume in HTML form as well managing uploaded files in PDF, ODT, and DOC formats that I make available for download
Written in a language that I know and my host supports - PHP preferred since that's easiest for my to host and I also am familiar with it
Easy to obtain or write a themes for
Support for static pages that change infrequently (about me), static pages that change sometimes (project lists), dynamic pages (blog, comments), and forms (contact me)
Plays nicely with other tools in the same environment - I use Trac on the same host for project management and might deploy other software such as a personal MediaWiki deployment
Easy to integrate with other social media (Twitter? Facebook? Pandora?) - not require, but would be nice
Generation and maintenance of the sitemap and/or robots.txt
My questions:
What, if any, FOSS solution would be appropriate for me? I've toyed around with Drupal and WordPress in the past - WordPress struck me as a solid tool, but at the time was very blog-focused (I understand it's changed more recently to be more CMS-like).
What free (but not open source) solutions might be appropriate for me? I would prefer to have full access to the source, but it's not a requirement.
If I am going to roll my own, where should I begin? I would prefer not to roll my own - my software engineering background tells me that my requirements should be common and I should be able to find some existing solution(s) that I can combine to make this work.
Thanks.
More posts by @Pope3001725
6 Comments
Sorted by latest first Latest Oldest Best
I build enterprise level CMS's for a living...and I personally HATE off-the-shelf systems like Joomla, Wordpress, and Drupal. Here's my reasons:
1) Places I've worked have had these (type of) packages exploited multiple times because we weren't fast enough updating them....and in some cases, updates can be weekly. Once you get hacked, you'll seriously question why you ever went that route...it STINKS.
2) Wordpress's templates are maddening. One will have a fully-featured admin area, while the next has none and expects you to hack the code in. Where to look? AHHHHH!!! I've deployed a lot of them, but it pains me every time. In my opinion, Wordpress is a blog system...use it for what it's intended to do.
3) I put up hundreds of Joomla (and Mambo) sites in a previous job. Even when you get to know what you're doing, good luck trying to break out of that "Joomla layout" type look....especially if time isn't on your side. Same goes for Wordpress...you can TELL when you're on a Wordpress site. No thanks...I get paid to turn out original work.
4) Training. Try explaining Joomla or Drupal administration to someone in 5 minutes or less. The CMS I built can be taught to someone with one paragraph of written instructions (or less) because I built it to only include the tools that each specific website needs...otherwise, the button goes away. I challenge you to try to train someone with less than a phone book's worth of instructions, especially if they're not technically savvy.
5) Standards compliance...it's something that I personally won't compromise on. I control everything that my CMS outputs, and I've built it such that a dozen or so lines of code can be inserted into any HTML compliant template in a matter of minutes to produce compliant code every time. Wordpress is ok at this, Joomla and Drupal not always so much.
6) Marketability. CMS's all do the same things. But try going into a potential customer and saying "I'd like to charge you a lot to customize a free off-the-shelf product" vs. "Here's a system that was built specifically for your need" If it's a good product, you'll win that business nearly every time. In your case, this doesn't matter....but who knows, maybe you'd be able to build on the functionality for future projects...paying projects....
There are of course drawbacks. You build everything yourself, which takes time. If you're doing it for multiple sites, economy of scale bring the hit down. You don't have an army of people finding vulnerabilities...again, having multiple deployments can help the code evolve. But, if you have the knowledge to write quality code, it's a great solution.
Good luck.
I've used Wordpress to set up a number of sites, each with different needs, and I think that Wordpress would meet your needs as well:
chaos.trader.name/ -- Primarily a page-oriented information site, with some blogging. ludus.unicornsrest.org/ -- Primarily a blog, but with a deeply nested page structure. I wrote a plugin to create links to pages within posts while allowing me to rearrange the pages. driia.com/ -- My wife's business site, both blog and sales site. I wrote plugins that allow will automatically group posts onto pages based upon categories and tags, and to recognize that posts with a specific tag represent jewelry or art pieces that are for sale. The sale prices are stored as meta-data on the posts. barkingmad.org/ -- Advertising site for a not-for-profit entertainment group.
The number and quality of themes and plugins available for Wordpress is astounding, but the GPL license means that anything that doesn't completely meet your needs can be improved as you see fit.
It sounds like, for your use case, a packaged CMS is likely the best way to go.
It's been a few years since I last evaluated PHP CMS, and at the time my main requirement was clean extensibility. At the time, Joomla was a strong contender, and Xaraya looked intellectually interesting though the development cycle seemed slow.
If you're interested in trying a few out, the opensourceCMS site allows you to try without actually having to install yourself. Last time I tried it it seemed a lot less ad-ridden, but I guess you've got to pay the bills. Many of the CMS run their own demo sites too (e.g. Joomla Demo, Xaraya Demo)
The buy-vs-build question is an eternal one. I would say WordPress and Drupal both meet your criteria. I have more experience with WordPress so I'd do it in WordPress. To address your requirements:
Semantic HTML (well formed, proper use of attributes, microformats where appropriate, use of CSS for style and HTML for markup)
Yes, most themes for WordPress use xhtml by default with no trouble. Microformats-related markup you probably will need to do by hand in an html view, though there may be plugins which facilitate that.
Validating HTML and CSS (XHTML, HTML4, HTML5 all acceptable - as long as it validates out of the box)
Yes, most themes for WordPress validate or are very close to validating without much trouble. There's great documentation for theming.
Support for a blog
Yes, absolutely.
Support for editing and managing my resume in HTML form as well managing uploaded files in PDF, ODT, and DOC formats that I make available for download
Yes, just have the resume be a static page, and manage the uploaded files using the native Media management tool in WordPress.
Written in a language that I know and my host supports - PHP preferred since that's easiest for my to host and I also am familiar with it
Yes, WordPress = PHP + MySQL + Apache works best for mod_rewrite
Easy to obtain or write a themes for
Yes, see Theme Development
Support for static pages that change infrequently (about me), static pages that change sometimes (project lists), dynamic pages (blog, comments), and forms (contact me)
Yes pages are managed in WordPress under the Pages part of the interface. Contact forms work well with plugins such as Contact Form 7
Plays nicely with other tools in the same environment - I use Trac on the same host for project management and might deploy other software such as a personal MediaWiki deployment
Yes, though you may need to add some rewrite rules so that not everything points at WordPress. I run WordPress in a subdirectory and let it handle everything usually. You may need to add a specifier to have WordPress ignore a MediaWiki directory stem.
Easy to integrate with other social media (Twitter? Facebook? Pandora?) - not require, but would be nice
Yes, through plugins. By default you can also pull in RSS feeds into WordPress sidebars.
Generation and maintenance of the sitemap and/or robots.txt
Yes, Google Sitemap Generator.
It depends on what you want to do, and get out of it:
Learn a Technology StackI wrote most of the code that powers my personal site as a learning exercise to get up to speed with the latest changes in the technology I was working in, and have changed it as my focus changed - originally a classic ASP site, then it moved to ASP.NET 1.1, then to 2.0, and is now running on ASP.NET MVC 2.0 after a recent upgrade from ASP.NET MVC 1.0
Just run your siteBoth at work, and for a couple of church sites I run in my spare time, I've used packaged software - at work we're talking "enterprise" CMS's (MOSS, Tridion), for the church sites it's FOSS (N2 CMS) - because they offered features above and beyond those I was prepared to write.
If your profession is building websites, then there's an argument for using the technology you're "selling", if it's something else, then I'd recommend spending your time on the content rather than technology.
Responding to comment
Then I would recommend picking one off the shelf - I can't offer much of a recommendation in the PHP sphere as that's not my speciality I'm afraid. If you can cope with some C# N2 CMS is very flexible, but doesn't have the huge plug-in/theme base of something like WordPress, which by the sounds of it would probably suit your needs fairly well...
I don't think you're going to find any FOSS project that does what you want it to do OTB. WordPress is solid but you'd have to work a little to generate what you want. Drupal might be more of a headache than it looks at first. I know people love it, and I know I've tried to, but I'd rather not worry about having to maintain that many hacks between version upgrades.
Frankly, I'd go with WordPress if I were in your shoes, and custom build plugins for what you need, if you don't already find some FOSS ones.
The caveat is that ever since Matt Mullenweg (CEO of Automattic, the company behind WordPress) started pulling a Richard Stallman on everyone, he believes and advocates that any and all themes (theme code, not images/css) and plugins (plugin code) is GPL by virtue of being a derivative work of WordPress in his (what I personally find distorted) view. So you're good if you do it for yourself, but if you have "distribution", as in give the plugins to 2 people, you may be legally bound to OS them yourself, which is something you may or may not want to do.
Terms of Use Create Support ticket Your support tickets Stock Market News! © vmapp.org2024 All Rights reserved.