Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

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:

  1. Semantic HTML (well formed, proper use of attributes, microformats where appropriate, use of CSS for style and HTML for markup)
  2. Validating HTML and CSS (XHTML, HTML4, HTML5 all acceptable - as long as it validates out of the box)
  3. Support for a blog
  4. 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
  5. 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
  6. Easy to obtain or write a themes for
  7. Support for static pages that change infrequently (about me), static pages that change sometimes (project lists), dynamic pages (blog, comments), and forms (contact me)
  8. 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
  9. Easy to integrate with other social media (Twitter? Facebook? Pandora?) - not require, but would be nice
  10. 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.

share|improve this question
    
Have you tried Jquery? <ducks> –  Tim Post Jul 20 '10 at 22:23
    
@Tim Post: I want to up vote your comment purely for the lol factor, but fear that would send the wrong impression ;) –  Zhaph - Ben Duguid Jul 20 '10 at 22:27
    
Off-topic: this is not a question about webmastering; why the upvotes? –  delete Jul 22 '10 at 4:32
    
@Kinopiko agree with most of the posts you flagged, but for me this one is on-topic. –  JasonBirch Jul 22 '10 at 6:16
add comment

8 Answers

up vote 6 down vote accepted

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:

  1. 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.

  2. 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.

  3. Support for a blog

    Yes, absolutely.

  4. 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.

  5. 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

  6. Easy to obtain or write a themes for

    Yes, see Theme Development

  7. 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

  8. 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.

  9. 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.

  10. Generation and maintenance of the sitemap and/or robots.txt

    Yes, Google Sitemap Generator.

share|improve this answer
    
For number 4 - I already have PDF, ODT, and DOC formats of my resume. I just need something that will allow me to easily upload my files and link to them on pages. Also, for the record, the link to the Google Sitemap Generator is wrong - it points to Contact Form 7. –  Thomas Owens Jul 20 '10 at 22:42
1  
Oh, sure, WordPress does file management fine. Fixed my messed up links too. –  artlung Jul 20 '10 at 22:52
    
Cool, thanks. Let me edit my original post to reflect what I actually mean (I reread it and it is kind of confusing - it does look like I want to turn my HTML/web page resume into PDF/ODT/DOC). –  Thomas Owens Jul 20 '10 at 22:58
    
Updated my answer to reflect the change in the question –  artlung Jul 21 '10 at 15:42
add comment

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.

share|improve this answer
    
Honestly, I don't care about releasing anything I write. In fact, I probably would anyway - if I can make something half way decent and it is of use to others. I'm just curious about WordPress, though - are the newer versions really suited for more than just blogging? Also, other than the primary WordPress website, are there any other repositories or indices of plugins, modules, and themes? –  Thomas Owens Jul 20 '10 at 22:36
    
They are really a lot less about blogging now. Basically, it also has Pages, and you can go with having a static homepage, and just pages, no posts. It's really your call. The wordpress.org is basically the place where you'll find everything as far plugins are concerned. Themes... they're more or less scoured around the web. I personally find Thesis of diythemes.com very helpful for easy setup/customization, but the web is literally filled with themes. And the wordpress.org repos. Be a bit wary of downloading themes and plugins from wherever. Some are malware, others just say "webspam". –  intlect Jul 20 '10 at 23:19
add comment

It depends on what you want to do, and get out of it:

  1. Learn a Technology Stack
    I 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
  2. Just run your site
    Both 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...

share|improve this answer
    
My business is not websites, that's for sure. My primary focus professionally is typically on the softer side of software engineering - requirements engineering, process and project management, design and architecture. However, I am slightly familiar with some web technology stacks (mostly because I've done back-end web development - nothing front-facing). And honestly, I would prefer to keep it simple for a personal site and emphasize the content. –  Thomas Owens Jul 20 '10 at 22:41
add comment

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)

share|improve this answer
add comment

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:

  • http://chaos.trader.name/ -- Primarily a page-oriented information site, with some blogging.
  • http://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.
  • http://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.
  • http://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.

share|improve this answer
add comment

If you have a ton of time and an itch that won't go away - yeah, roll your own. Otherwise install WordPress ("famous 5 minutes install") and give yourself 2 hours... that's all you should need to get a very good idea.

I wanted to post a couple of comments in reply to earlier replies - you can definitely build websites which are "pages" with WP not just blogs (and it's very good for building websites with integrated blogs), and agree @intlect's comment about themes. There can be a huge difference in the quality of some themes (also a good place to learn/see how WP works) - I've been bitten a couple of times also upgrading WP to find the theme isn't compatible with the newer version (and then you find out how good the developer's support is).

share|improve this answer
add comment

There is of course a third option, you could use a less "heavy" CMS like MODX this would allow you the option of not having to re-invent the wheel of all the standard cms stuff (user management, document management, etc) while giving you an easy flexible environment to make your own code. I have used a number of CMS' and they all have their niche's but if you want something that is easy to develop for and light enough that you can understand it without weeks of digging (some of the CMS systems are truly powerful beasts...something you probably don't need for a personal website). MODX is basically built for just the type of thing you want to do, it gives you a core of features and then you add your own to it. Plus people do share their code, so you find snippets, modules, etc that others have used.

share|improve this answer
    
I would like to look at this. Can you suggest more things similar to MODX? –  Thomas Owens Jul 22 '10 at 20:03
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.