ForbesPrint.com and Open Source

A year ago, my wife, daughter and I visited my wife’s aunt and uncle in Waterford, Michigan area. She signed me up to do a small web site for them to promote the printing business. The printing business has been in the family since 1946.

I decided to use open source tools as much as possible to deliver the site. Long term, I don’t expect to have access to tools I use at work and I actually know I shouldn’t use tools from work to work on external projects. And so, I stayed with open source tools as much as possible.

I set up the website relatively quickly with ruby on rails, but did not launch it for awhile. While I like the ruby on rails approach to rapid development I haven’t used ruby enough to learn the syntax and be productive in it. In the meantime between developing the site and actually launching it, I worked on a project for a client that utilized symfony. This gave me enough opportunity and time to learn php and the symfony framework. So the in-development site was migrated from a ruby on rails to symfony project.

One thing I liked when I set up the rails project was the usage of capistrano to manage the deployment of the application to my slicehost instance. I decided to see how it could work with symfony as well. In the end, I was able to get a good amount of information from the following site. Besides paths and server changes to the configuration presented on the page, I utilize git as version control.

I have found great value in git over subversion. I like the fact that git does not require server software to run. Getting it up and running with just a dedicated user and ssh was a snap. Even better, git doesn’t manage every file with 3 extra files per instance like subversion seems to do. To copy a subversion branch from one server to another takes forever due to all the .svn files. Git can easily be moved around and ability to remove git from a file structure works just as easily.

In the end, I built the very small site, ForbesPrint.com with the following tools:

  • php for scripting language
  • symfony for php framework
  • nginx for web server
  • fastcgi for php runtime environment
  • git for source control
  • gimp for image editing
  • slicehost for server hosting utilizing Ubuntu virtual machine
  • SpringSource Tool Set for IDE with Aptana Studio plugin for php project support

Now that the basics are in place, I hope to expand the site to better accommodate their needs and growth the business.