Category Archives: Shotwell

The 100,000 line question

Clinton Rogers (Yorba developer and all-pro Telestrations master) pointed out something interesting yesterday.  Ohloh now lists Shotwell as having achieved an odd milestone just ten days shy of its third birthday: Shotwell has reached 100,000 lines of code.  That number represents the work of 51 code contributors and 89 translators.  (It also represents blanks and comments — 100,000 lines of pure code is a ways off.)

It’s an odd milestone because there’s a rosy tradition in computer programming of honoring tight code and efficient algorithms.  The code placed on pedestals are not thousands of lines long, they’re short and sweet, like a witty joke or a clever haiku.  Duff’s Device is my favorite example; you probably have your own.  (Tom Duff’s history of his Device is a great short read and offers a basketful of concise observations on code optimization.)

Which is why reaching the 100,000 mark makes me simultaneously proud and a little uncomfortable.  Shotwell has grown quite a bit in three years — but is it really doing the work of 100,000 lines of code?  Ur-spreadsheet VisiCalc was also 100,000 lines of code, pretty lean compared to the Macbeth that knocked it off its throne, Lotus 1-2-3 (clocking in at 400,000 lines).  Compare that to the original Colossal Cave game, which was (gulp) 700 lines of FORTRAN and 700 lines of data.  It later grew to a whopping 4,800 lines of code and data that ran entirely in memory.  100,000 lines of code feels downright luxurious, even bourgeois, in comparison.

(I’m not claiming Shotwell should be placed alongside these landmarks.  It’s just interesting to consider what 100,000 lines of code represents.  I’m also aware that there’s a number of people who think line count is a misleading, or even useless, metric.  I do think lines of code provides some scale of complexity and size.  I’ve never seen a program grow in size and get simpler.)

There’s probably no reason to duck my head in shame.  Sure, there’s plenty of features we want to add and bugs we want to squash, but those 100,000 lines of code we have today are pulling a lot of collective weight.  They include the basic organizer, a nondestructive photo editor, a standalone image viewer (which also includes an editor), hierarchical tagging, stored searches, ten plug-ins, and plenty more.  Could we scrape away 1,000 lines of code and still have the same functionality?  Almost certainly.  10,000?  I can think of a few places where fat could be trimmed, but I don’t think it’s excessive.

Note that Ohloh is counting lines of Vala code, not the C generated by valac.  Although valac does not exactly produce sparse output, it’s worth mentioning that sloccount reports over 720,000 lines of C code generated by Vala.  If Vala is producing on average six times more C code than a competent human programmer (and I’m not asserting it does), that’s 120,000 extra lines.  Reducing that by the magic factor of six means Vala saved us from writing 20,000 lines of C code, a victory worth popping open a can of beer and celebrating over.

Shotwell 0.11.6 Released!

Yorba has just released Shotwell 0.11.6, a bug-fix release of our popular GNOME-based photo manager. This release fixes a critical bug in which adding or modifying tags in the single-photo view could result in the loss of tag data. We recommend that all users upgrade.

Download a source tarball from the Shotwell home page at:
http://www.yorba.org/shotwell/

Or grab a binary for Ubuntu Natty at Yorba’s Launchpad PPA:
https://launchpad.net/~yorba/+archive/ppa

Ubuntu Oneiric ships with Shotwell 0.11.x pre-installed. Oneiric users will be upgraded to Shotwell 0.11.6 automatically as part of their regular software update cycle.

Help test Shotwell with the daily build PPA

Great news for folks helping test Shotwell on Ubuntu 11.10 (Oneiric) — we have a daily build PPA for you!

WARNING: Shotwell daily builds are for testing purposes only. We highly recommend that you only manage your important photos with a release build.  Please backup your ~/.shotwell folder and your Pictures folder before installing and testing with this pre-release version of Shotwell.

Okay, you read that warning, right?  Great! The PPA address is: ppa:yorba/daily-builds

If you find any issues in testing, please report them here. For more details on providing the best possible bug report see our FAQ.

Shotwell 0.11.5 Released!

Yorba has just released Shotwell 0.11.5, a bug-fix release of our popular GNOME-based photo manager. This release fixes an issue in which Shotwell could crash when using the “Import from F-Spot” feature for the subset of users who continued to experience this problem after the 0.11.4 upgrade. We recommend that all users upgrade.

Download a source tarball from the Shotwell home page at:
http://www.yorba.org/shotwell/

Or grab a binary for Ubuntu Natty or Oneiric at Yorba’s Launchpad PPA:
https://launchpad.net/~yorba/+archive/ppa

 

Shotwell 0.11.4 released!

Yorba has just released Shotwell 0.11.4, a bug-fix release of our popular GNOME-based photo manager. This release fixes two critical issues present in all previous versions of Shotwell 0.11.x that could cause Shotwell to crash when using the “Import from F-Spot” feature. We recommend that all users upgrade.

Download a source tarball from the Shotwell home page at:
http://www.yorba.org/shotwell/

Or grab a binary for Ubuntu Natty at Yorba’s Launchpad PPA:
https://launchpad.net/~yorba/+archive/ppa

Shotwell 0.11.3 released!

Yorba has just released Shotwell 0.11.3, a bug-fix release of our popular GNOME-based photo manager. We recommend that all users upgrade. This releases fixes two critical bugs, including:

  • Shotwell could crash at the end of photo imports where one or more files failed to import correctly
  • Showell crashed when a new tag containing a slash (“/”) character was created by context-clicking on the “Tags” item in the sidebar and choosing “New”

and improves error reporting in the publishing system.

Download a source tarball from the Shotwell home page at:
http://www.yorba.org/shotwell/

Binaries for Ubuntu Natty will soon be available at Yorba’s Launchpad PPA:
https://launchpad.net/~yorba/+archive/ppa