Gnapsack: A Desktop Backpack Client

Note: Gnapsack is no longer being actively developed, mainly since the author no longer uses Backpack for personal information management. I am, however, available to integrate any contributions. Direct inquiries to matt_dorn AT yahoo DOT com

Gnapsack screenshot

This is the Gnapsack wiki, source code repository, and bug and feature tracker.

About Gnapsack

Gnapsack is a PyGTK-based Linux desktop client for the Backpack Web Services API. As of v0.2, there is also a Windows version. Users should be aware that is currently more of a prototype than a functional application. In its current state it is probably of interest primarily to developers, rather than active users of Backpack.

Gnapsack is free software, released under the terms of the GNU Public License (GPL).

See INSTALL.txt for installation instructions, dependencies, etc.

Requirements

Gnapsack was built for Linux GTK-based desktops. As of version 0.2, however, it will also run on Windows. It was developed on an Ubuntu (Breezy) Linux system, and has not yet been tested on other Linux systems. Ubuntu (Breezy) includes the version 2.8.1 of the python-gtk2 package. The Windows version was packaged and tested on various Windows XP systems. Feedback about other Linux and Windows systems it does/does not run on is much appreciated.

The Zope Object Database (ZODB) is required for local storage. This version of Gnapsack has been tested with ZODB 3.6.0. Your mileage with other versions may vary.

Note that one goal for the 1.0 release is a DB-agnostic backend. E.g., a SQLite module could replace the ZODB module without trouble.

Download

Windows

Screenshots

See "Attachments" below.

Installation

Linux

Requires python-gtk2 and ZODB (3.6+) packages installed.

Gnapsack has not yet been packaged with Python distutils or similar. Simply untar it into your directory of choice, change to that directory, and execute the main module:

tar -zxvf gnapsack-0.2.tar.gz
cd gnapsack
python gnapsack.py

Windows

Gnapsack for Windows has been prepared for easy installation of all dependencies with py2exe and Inno Setup. Just download and execute the gnapsack_setup.exe file.

However, developers may wish to install the dependent packages individually. In addition to the Gnapsack tarball, you'll need the following:

  • python-2.4
  • gtk-2.10.6
  • pygtk-2.10.3-1
  • pycairo-1.2.6-1.
  • pygobject-2.12.3-1
  • ZODB3-3.6.0

Usage

Upon initial startup, you'll need to provide the URL and API token for your Backpack account, as well as the path to a local database file (e.g., C:\gnap.zodb if you're in Windows), which will be created if it doesn't exist.

Via what should feel like a familiar, intuitive desktop interface, you may then either:

  • Create pages and their child elements (list items, notes, etc.) and save them locally.

  • Click on the "Connect" button to edit the pages on your Backpack account live.

  • Use "Sync" to either:
    • Upload locally created pages to your backpack account, or
    • Download your live Backpack pages to your local database

Note that "syncing" is extremely rudimentary in the current version, and is limited to those two functions.

Reminders are not implemented, because there's an iCal interface to them, and therefore another application--e.g. your desktop calendar application of choice--can handle them on and offline more effectively than anything Gnapsack would provide.

Credits

Developed by Matt Dorn (matt_dorn AT yahoo DOT com)

Python Backpack bindings (backpack.py) by Dustin Sallings.

Thanks to Ben Stiglitz for use of the name "Gnapsack" (adapted from "Knapsack," the name given to his analogous project for OS X). Thanks also to Ben for his Knappack product, which allowed me to do 95% of the work for the first release offline!

Backpack is a service mark of 37signals, LLC.

How to contribute

Gnapsack is a Free/Open Source software under the terms of the GPL license.

Bug reports submitted to this site (you can register for an account) or via email are appreciated. Bug fixes and enhancements, especially those involving issues found in the ticket tracker on this site, are very appreciated and will be acknowledged in the credits file. Submit any patches in the format returned by the unified diff (diff -u) command.

Version control for this project is handled by Darcs. Get a working copy of the latest version from the repo via:

darcs get http://fs.textmethod.com/repos/gnapsack

The Epydoc-generated documentation may or may not be helpful to prospective developers.

Version 0.2 Notes

Version 0.2 includes two fundamental enhancements that were not available in v0.1:

It continues to be basically a prototype and should not be regarded as a fully usable/mature program. Major limitations include:

  • Syncing is limited to downloading Backpack pages to your local database, and upload files created in your local DB to your Backpack account. You still can't sync changes between the two.
  • No asynchronous networking, meaning the application will seemingly hang during network communications.

Other notes:

  • I intially used the tepache code generation tool, which creates the SimpleGladeApp.py file and inserts callback methods based on your Glade UI model. While it helps you get a PyGTK project under way quickly, it's probably not the best for maintaining a project long-term, and has gone away as of v0.2.

TODO

for version 0.3:

  • alert if a user navigates away from a page without saving work
  • enhanced syncing (e.g., upload changes, not just write new pages)
  • asynchronous network activity so that application doesn't hang while connecting
  • progress indicators for network activity

beyond version 0.3:

  • context-sensitive cut/copy/paste (e.g., can cut and paste item from one list to another, in addition to just text)
  • abstract DB interface to allow for creation of other database layer modules, e.g., SQLite
  • allow manipulation of page scope, sharing, etc.
  • compliance with Gnome Human Interface Guidelines

Attachments