Ideas for a Geek Ranch Web Site
In my last article I introduced the idea of the Geek Ranch. The facility will be more than just a place for geeks to write code. We are going to need a web site to promote the facility to the various audiences. All the pieces of that web site are not yet determined but we do have an initial features list.
Here it is:
- A basic "about the facility" part with sub-parts for each facet of the facility. That means Geek Cottages will be in a different page or section than Eco-Tourism, the conference center or the restaurant.
- Weather is a selling point. We want to offer current and historical weather information.
- Let's toss in a web cam or two. While a sunny day with coffee maturing in December isn't news here, it will certainly help someone in Minnesota decide why they would rather be here.
- A section about the farm. The farm project will be special and we want to help people understand what we are doing. Note that the people that need to understand are not just potential customers—locals need to get the picture as well.
- A reservation system. This might start out as a form that gets emailed to us but needs to evolve into an on-line system to place reservations and handle credit card processing.
- Some sort of photo gallery. This is still being thought about but, for example, it would be nice to have photos of each type of plant growing on the property and a description. I mean, some of you probably can't tell your nancite from your jocote.
- Last but not least, the site need to be at least bi-lingual.
While we could conceivably write this all from scratch, we are smarter than that. We have learned that there are lots of systems available to produce web sites. Concentrating on the look and the content is where we need to focus. That said, here are three possible approaches--each with pluses and minuses. There are, of course, many more.
Karrigell is a Python-based web framework. It is minimalist which means it does less than you might want but, on the other hand, it is very easy to understand. The Sourceforge page will tell you the story.
I used Karrigell to write a radio station controller. I did that project over three years ago. It was easy to implement and while what I built was only a prototype, it did what I needed. As the radio station is designed to be a Linux box with nothing but flash memory, a wireless link and a transmitter all running off a battery and solar panel), minimalist was important. Karrigell is compact, includes its own web server and requires little in the way of a high-performance system to get the job done.
The downside is that Karrigell is not a Content Management System (CMS). While it offers a lot of tools to put together your site, you will find yourself writing Python to get your job done. It is a step up from writing in PHP from scratch but you will still have a lot of work to do if you need to present a lot of dynamic content.
If, however, your site is mostly static with a few "intelligent" pages, Karrigell might be the perfect fit. Static content can be served directly so you only need use its magic when the page has funny stuff to do.
Drupal has been "the answer" for sites that require a CMS for us for years. While it is big it is efficient and modular. There is a module to do most of the things you want and it is easy enough to either embed PHP into a block or article or write a new module if you have something special to do. You can find more on the Drupal site.
There are also many Drupal themes that you can use or modify a bit to make the site look like what you want. With the advent of CSS and the ability in most systems (including Karrigell) to include pieces to make up a page, a pre-packaged theme is a bit less important. If, however, you want to get on with writing content and firm up your presentation later, Drupal is a very good place to start.
The one reservation I have is the multi-language aspects of Drupal. The ability to have the site information--that is, all the stuff Drupal supplies such as menus--appear in a user's choice of languages seems to work great. Handling multi-language content, however, seems to be less than perfect. Specifically, the internationalization module is a bit cumbersome to use and has an array of outstanding bugs. I am hoping that these issues get cleared up in Drupal 6.
Joomla is probably the closest competition to Drupal as far as a CMS. Joomla grew out of Mambo. A great feature for dealing with multiple languages is a module called JoomFish. The name clearly came from combining Joomla and Babelfish. While it is a multi-language module it is not an automatic translator. For a site where you want it to be correct in multiple languages, this is actually a plus.
Joomfish intercepts content reads by the CMS front end. If the user prefers a language different from the site default, Joomfish checks to see if a translation is available in that language. If so, the translated version is delivered. It has a nice management interface that shows you what you have translated, what you haven't and what was translated but is out of date.
If you want to see how this works in "real life", take a look at NicaPlaza.com. It is implemented using Joomla and Joomfish.
The Joomla site tells you a lot more including information on a possible licensing issue. Joomla is licensed under the GPL and there is a debate going on regarding the interpretation of "linking" Joomla with non-GPLed code. The current stance is that starting with version 1.5 (the next major release) this will no longer be allowed. As many Joomla third party addon modules are commercially licensed, this could send Joomla to the bottom of list of choices. Only time will tell.
What will we pick? We don't know yet. The true geek in me wants to pick yet another answer, Django a huge and amazing toolkit that among many other things means I can write just Python and never have to touch SQL again.
For me, Django would be the most fun but it is far from the quickest way to get the site we need up and running. Being a bit more pragmatic than some, I will continue to play with Karrigell, Drupal and Joomla until I am convinced which one will get the results we need with the least effort.