10 Years of Zoph: Open Source

14 Sep 2010 by jason

On April 12, 2002 I emailed two friends from work asking them to take a look before the release. I finished up the website and documentation and posted the release to Freshmeat on April 24 and to a few open source directories the following day. It was out!

My initial description of Zoph on Freshmeat went something like this:

Zoph is yet another photo album/gallery/management system, written using PHP and MySQL. It can store lots of information about your photos, including the regular EXIF info, photographer, location, title, description, rating, and the people in the photo. Photos can appear in multiple albums and categories. Additional features include search, slideshows, email and access privileges.

Freshmeat site
The website clarified Zoph's purpose like this:

If you just want to generate a gallery of thumbnails from a bunch of images, you may want to try one of the other numerous photo album projects. But if you want to also store additional information about your photos, search them, or control access to them, take a look at Zoph.

Zoph site

The first response I got was an email on May 9th. Thankfully it contained kind words: "Let me first say, I totally love your ideas about Zoph! It's exactly what I want! By extension, you're probably also really cool." Great! Of course it continued, "But there's one thing it lacks"...

My reply was twice as long as the message I received; I must have been eager to please. But it worked: "I think I'll go with Zoph, as you've responded so quickly." I felt I was off to a good start.

By the end of May I had a number of email threads going with people trying out Zoph. I was surprised but impressed that people were willing to work with me to help debug whatever issues they were with this unproven project. But then this must be the sort of feedback loop that makes quality open source software possible.

On June 16th I received my first unsolicited patch, fixing a typo.

On June 21 2002 I released Zoph 0.2.1 which included fixes for bugs the early adopters had found as well as a default user feature to try to help more than one person who wanted to have their site display photos without forcing people to log in.

I continued to receive mostly favorable feedback from people trying Zoph. One person wrote, "Hey, I like it. Though I miss some of the flash of the plain photo album projects." I think that pretty much summed up Zoph: it was more about the data and less about the flash.

On July 14th I received my first email from someone using Zoph in their business: "we have around 4000 classified photos right now, and the system behaves extremely well! ... zoph spits the pages or do[es] the searches in microseconds :) I'd bet its due to the general tidyness and good software engineering, not the system power."

There's nothing like hearing things like that to motivate you to continue to develop a project.

I knew that "ego satisfaction" drives lots of open source, but I hadn't experienced it first hand before.

Jason Geiger

On the topic of motivation, as the months passed I received a broader range of requests, some for things I didn't think aligned with Zoph, and other that did but that I didn't have a particular use for or desire to build. Some of these I worked on anyway, like the default user. Others I got lucky and someone contributed code for, like a web importer. Others I just didn't do.

I considered the database and the ability to store structured metadata on thousands of photos to be the most important part of Zoph. But there were other key pieces as well, such as access control. I was happy that some people at least wanted a system like Zoph which took security a little more seriously than most projects. For example, I hadn't seen most photo albums provide the ability to stream photos in order to control access rather than serve them statically. At least one person early on used this optional feature of Zoph and even sent in some improvements. I should say that though security was important to me, and I was initially confident I had done a decent job at it, over the years numerous flaws were discovered and reported. It didn't take very long to learn that I shouldn't rely on only my own eyes when it comes to security.

Zoph 0.3

Besides the web importer, another big contribution from outside was internationalization. Someone added the ability to translate each static string in Zoph and sent me a French localization. As more translations came in this feature made me disproportionately happy because none of the work on it was my own; it was all contributions from people around the world.

Those changes and others were in the September 25 release of Zoph 0.3. Development remained fairly active through the end of the year with version 0.3.3 released in December. I created a Sourceforge project for Zoph and began hosting the releases, bug reports and feature requests there. Reading this, I imagine it seems like this should be the point that Zoph starts to really take off. But that's not what happened.

In the move to Sourceforge I began to use their CVS repository. This switch to public source control was good development practice but may have contributed to the lack of a new release of Zoph for almost two years. The primary factor was just myself though. I didn't spend as much time on Zoph in 2001. When I would make changes, I'd submit them to the repository but wouldn't create a minor release. The updates would be there in CVS for people to grab if they needed it. As time went on, the list of changes grew larger and the differences between 0.3.3 and 0.4 somehow made it more difficult to assemble the new version.

Debian

Development didn't cease but it was more sporadic. One highlight from 2003 was an offer by someone to be the maintainer of an official Debian package of Zoph. When I eventually saw I could apt-get Zoph it was bliss. But as time passed I began receiving much more spam in my Zoph account than emails from users.

I don't like projects in which the only recent version to use is the latest from source control. But that's exactly what happened to Zoph. "Release early, release often," is the mantra but for a long time Zoph didn't. From the outside I'm sure it looked like the project had stagnated. The appearance of activity is a big deal; many people will dismiss a project that looks like it might be dead or dying.

Zoph is by far the best web/mysql based photo album i've ever seen/used. Sadly, however, it hasn't been updated in a very long time. :(

Freshmeat comment by "SplasPood", 25 july 2004
Zoph's growth slowed over this time but people still wrote me, including those offering to add something to the project. Jeroen Roos asked about CSS in 2003, something I hadn't really been familiar with when I started the project. He ended up working on converting the layout from nested tables to styled elements. This was a big task that touched on most of Zoph UI and I talked with him a little about the design principles behind Zoph, such as they were.

I had been taking fewer digital photos and had less time for Zoph after I started a new job at Lucasfilm in September of 2003. But eventually, largely motivated by Jeroen's contributions, I focused on getting a prerelease available followed by the release of 0.4 in September 2005. I was relieved to get all the latest code out, but I knew that I would again start spending less time on Zoph than was required to keep it healthy.

Thankfully, Jeroen had expressed interest taking over development of Zoph and the next chapter in the project began.