changed:
-
======================
Roundup Remote Library
======================
:author: Timothy J. Warren
:email: commandlineguy@gmail.com
Background: Roundup
===================
Roundup_ is a general purpose issue tracker written in Python. In
addition to a highly customizable web-based interface, Roundup
offers an e-mail interface and a simple server-side command-line
interface.
One of Roundup's great strengths is its support for many different
databases (anydbm_, SQLite_, MetaKit_, PostgreSQL_, MySQL_). All
of the database access is abstracted through a hyperdb_, which
handles the actual database communication.
About the Roundup Remote Library
================================
As mentioned in the `Background: Roundup`_ section, Roundup includes
a basic command-line interface. This interface, however, is only
intended to be used on the Roundup server itself -- it does not
provide client-side access to the Roundup database. A Roundup
*administrator* can use the existing command-line interface for
adding or changing issues, but a typical Roundup *user* cannot.
The **Roundup Remote Library** will provide a simple client-side
interface to a Roundup tracker's hyperdb and access to the functionality
exposed in the web interface. This access will benefit both the
Roundup administrator (who will be able to manage their tracker
from a remote computer) and the Roundup user.
By modularizing the access code into a library, the project will
also make it easier for other developers to integrate Roundup
functionality into their application. For instance, an application
developer may use code similar to the following:
::
import roundup-client
tracker = roundup-client.connect('http://url.to.tracker.com', 'username', 'password')
for issue in tracker.query('My Saved Query'):
print '%s %s' % (issue['Title'], issue['Status'])
...
tracker.issue(issuenum).addFile(fobj)
A command-line client (roundup-client.py) will also be included.
In addition to demonstrating how to use the library, the client
will allow shell-based remote access to:
* Create an issue
* Add a message to an issue
* Attach a file to an issue
* View issues
An example of this may be seen here:
::
$ roundup-client.py Issue47 addfile somefile.txt
$ echo 'Installed patch on server; closing ticket' | roundup-client.py Issue91 addmessage -
Transport
---------
The underlying transport between the remote client and the server
will be as transparent to the user as possible. I will initially
implement an XML-RPC transport; this will allow simple access to
all of the hyperdb functionality with the added benefit of enabling
access from other programming languages.
Using a "scraping" technique to access the data (using urllib2 as
the transport, with an HTML parser to pull out the data) was discussed
on the Roundup development list. While this provides certain
benefits to users of older versions of Roundup, a direct RPC transport
provides better access to the full hyperdb.
More information can be found in the mailing list archive at:
http://sourceforge.net/mailarchive/forum.php?thread_id=10285465&forum_id=1100
Deliverables
============
Modules
-------
* libroundup.py
libroundup.py will implement the actual library functions: signing
into a Roundup tracker, viewing issues, adding and changing
issues.
* roundup-client.py
roundup-client.py will be an interface to libroundup.py, allowing
a programmatic and comment-line access to a tracker.
Project Schedule
================
* May 23, 2006
Officially begin working on Roundup Remote Library.
Begin analyzing Roundup server code, begin work on XML-RPC server
code
* June 2
Begin work on roundup-client
* June 16
Begin integrating XML-RPC server code into roundup-server
* June 23
Begin migrating roundup-admin to use the Remote Library
* June 30
Release Library and roundup-client as alpha code, field
testing begins
* July 7
Begin work on installer
* July 21
Begin additional coding tasks as time permits: additional
transports or other enhancements, Roundup bug fixes or enhancements
* Aug 4
Release Library as RC1; begin functional and integration tests
* Aug 11
Finalize documentation
* Aug 18
Begin packaging code for delivery
* August 21, 2006
Finalize state of code, ensure code is clean and in version
control
Make final Summer of Code delivery
Version 1.0!
Personal Information
====================
I first began using Roundup about six months ago, when I needed an
issue tracker for a technical support job I had recently started.
Having used Python for several years, I knew that I wanted a tracker
which was written in Python. By no means was I expecting such a
capable product -- Roundup has exceeded my expectations several
times over. I find it easier to use and more powerful than many
of the commercial products I have used in the past.
Being written in Python made it extremely customizable. I immediately
began making some changes to make it work better for me; I have
submitted some of those changes back into the project, which has
earned me a mention in Roundup's list of acknowledgements_.
I am currently finishing my B.S in Computer Science after a seven-year
break, during which time I worked professionally in both software
development and technical support. After I graduate in December,
I am planning on continuing on to graduate school to study either
Computer Science or Electrical Engineering; long-term, I am interested
in studying Human-Computer Interaction, specifically `Ambient
Computing`_ and `Ubiquitous Computing`_.
I've been interested in open-source software for quite some time.
Although I have primarily used and support MS Windows, I have always
used open-source alternatives wherever I was able. I have always
enjoyed "giving back to the community", and have contributed code
to TightVNC, as well as opening some of my personal-use projects:
pyEdlin_ and ClipboardTransfer_.
.. _Roundup: http://roundup.sourceforge.net
.. _hyperdb: http://roundup.sourceforge.net/doc-1.0/design.html#hyperdatabase
.. _anydbm: http://docs.python.org/lib/module-anydbm.html
.. _SQLite: http://www.sqlite.org
.. _MetaKit: http://www.equi4.com/metakit.html
.. _PostgreSQL: http://www.postgresql.org
.. _MySQL: http://www.mysql.com
.. _MIT License: http://www.opensource.org/licenses/mit-license.php
.. _CNRI Python License: http://www.opensource.org/licenses/pythonpl.php
.. _acknowledgements: http://roundup.sourceforge.net/doc-1.0/index.html#acknowledgements
.. _pyEdlin: http://pyedlin.sourceforge.net
.. _ClipboardTransfer: http://cliptrans.sourceforge.net
.. _Ambient Computing: http://www.ubiq.com/hypertext/weiser/acmfuture2endnote.htm
.. _Ubiquitous Computing: http://en.wikipedia.org/wiki/Ubiquitous_computing