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