Effective January 1, 2010, this site does not use Drupal and instead uses only WordPress.
It’s Saturday morning and I thought I would take a bit of time out to discuss how this website is built. It might be instructive for any of you who are thinking of doing something similar, and it will also help me as I consider future changes.
I’ve owned sutor.com since 1996, but for most of those years there wasn’t much to it, really just a bunch of static HTML pages. Starting in 2005 I decided to do more work to turn it into something useful to me. One of the motivating factors was my mother’s death in October of that year.
Like many families, we had a lot of old photographs but very few copies of them. Therefore, to see my mom’s photo albums, you had to come to my house. I decided that I would start scanning the photos so that I would at least have digital copies I could give to my siblings. Before long, I decided to expand the project and make the photos available online. I tried Flickr for a while, but I eventually decided that I wanted to host the images myself. The result of that was an online album that I wrote in PHP.
In the meanwhile, I had started a blog on Blogger and also had one on IBM developerWorks. I used a feature of Blogger to ftp the blog content over to sutor.com so that people could read it on my site. I split my personal content so that it appeared on sutor.com and the IBM “work” content went to developerWorks (dW). I was never really happy with this division of material, in part because I only put a few entries on the personal blog and quite a few on dW. I felt that I was writing the personal blog for about 4 people.
I soon hit the wall with what I could do with processing the blog content on Blogger. I wanted the content to be in PHP files, but the default was HTML. I eventually got that to work. I wanted tags or categories, and Blogger didn’t support them (though I understand they do now). I did very much like the idea of themes and I learned quite a bit about how Blogger used them. Finally, I wanted the full machinery of the blog to run on my own site. Granted this would mean that if sutor.com went down everything would be down, but I wanted direct control over all the pieces and I wanted them in one place.
Starting with the Blogger theme, I came up with the CSS that described how to format my site. This was fine for the photo album and the few other static pages I had, but I came up with a real problem when I decided to use WordPress to run my new blog. I settled on WordPress after looking at several other open source options.
In that deliberation I always knew that I wanted to use open source. I was willing to have the software written in either PHP or Python, and I explicitly did not want it written in Java, Mono, or anything else. I was going to do the coding and so I got to choose the language I personally wanted to use. It soon became clear that PHP would be the best choice, in part because I was getting intimate with it via the photo album project. From there it didn’t take too long to settle on WordPress. I should add that the website runs on Linux. That was never a question or an issue. There is no way I would have made another choice.
WordPress is a phenomenal piece of software and the number of themes (that is, visual designs) available for it are truly amazing. It does, however, like to be the center of the site. That is, it is easiest if you start with the blog as the main thing you have and then add other static pages into the blog world. This allows you to use your chosen themes consistently throughout your site. In this way it is blogging software with a bit of content management thrown in.
I didn’t approach it this way. I already had a site with a look and feel and I wanted to insert WordPress into that. It took a while, but I was able to significantly modify a WordPress theme so that the blog fits seamlessly into the rest of the site. So I use the WordPress engine for the blog, but it doesn’t control everything. When the WordPress people come out with new releases, it is easy for me to install the new code: everything works with my theme. However, because my theme is so customized, I cannot easily switch it to a cool one I might find elsewhere. Philosophically, that’s not a great thing but technically it is not a problem since I know HTML, CSS, PHP, etc., and can make any changes I want.
Another great feature of WordPress is the plugin, or extension, architecture. This means that there are hooks at various places in the system where you can easily insert code written by others. I’ve come to rely on several of them to provide functionality in the blog. Most recently I’ve started to use a plugin that lets me have polls in blog entries. All the plugins are open source and written in PHP, which means I can modify them if I need to do so. I’ve done that in several cases. I learned a lot about both PHP and WordPress by seeing how the plugins do what they do.
This last year I stopped put entries directly into the dW blog, although excerpts are syndicated there when I remember to do so. All my content is now controlled and stored on sutor.com
Finally, let me mention that I use Mint to keep track of how the site is used. It too is a really beautiful piece of software. It is not open source, but it is written in PHP and the source code is therefore readable. At $30 it was a very good investment. It has a plugin architecture and you can extend Mint using many different “peppers.” These are usually open source.
Now that everything is up and running, I’ve started to think about how I should evolve the site in the future. It does bug me that it is not so easy to change the theme I use. I do hack the CSS and layout with some frequency as I learn how to make the site nicer looking and more navigable. One option is to switch entirely to a real content management system with blog support like drupal. It is open source and written in PHP, has many themes available, and has a plugin architecture (they call them “modules”). It would also allow me to more consistently handle the other content such as the essays and lists of recommended reading. I don’t think it would be that hard to change my photo album code into a drupal module.
The problem with this approach is that I really like WordPress and I have 1200+ entries there. I would have to do redirects for all of them so that links from Google and elsewhere would continue to work. I have not done extensive research into comparing the drupal module support compared with the WordPress plugins I use. I suspect that I would find several similar things, but not everything. If I were not dealing with an existing site, I would probably build a new one from scratch using drupal.
I don’t mean to sell WordPress short since I really do love it. I will most likely stay right there but make the following changes over time:
- Change the look and feel to freshen up the site. In so doing, clean up some of the CSS to make it easier to work with in the future.
- After the next major release of WordPress (or the subsequent bug fix), change all the extra non-photo album pages to live under WordPress’s control.
- Investigate what I have to do to allow the photo album to more closely cooperate with WordPress.
- Switch over to a bona fide WordPress theme.
I have no timeline for this and none of it is urgent. I am getting increasingly annoyed with my current hosting provider, so I might use the excuse of moving to a new one as motivation to get some of this work done sooner rather than later.
The options to use open source to build powerful, functional, secure and beautiful websites are truly wonderful these days. My requirements are fairly light. If I were building a business site that had transactional requirements I would almost certainly bring Java and JEE into the picture, but I would still try to use PHP above that.
One of the reasons that I have this site is that I want to experiment firsthand with new software and new technologies. Personally, I’ve been quite happy with what I’ve learned, but I also realize there is much more I could do if this wasn’t a spare time project!
Disclaimer: as always, these are my personal views about my personal site, and do not necessarily reflect what my employer thinks, builds, sells, or services.
In case you’re curious, I wrote this entry in the gedit editor under Ubuntu and used Firefox to preview it. I then used WordPress to publish it to my Linux-based site.
Also see: Building another website