|How to Help|
|How search works|
|SF project page|
Yabman is for academics and researchers. It is a tool for managing bibliographic references created by Reid Priedhorsky. Key features are:
Yabman currently runs on Linux only, though it's written in Python with the wxWidgets GUI toolkit, so ports to other systems are likely to be easy/trivial. I welcome patches.
Note that Yabman is still in early stages of development. It is not yet ready for general use. In particular, neither BibTeX export nor CiteULike integration is yet implemented.
The user interface and the data model are why you should use Yabman instead of some other bibliography manager.
Yabman is currently in a pre-alpha stage: I (Reid) use it daily for keeping track of my own references, but there are many features missing and a few bugs. Skills in Python, wxWidgets (wxPython), and possibly SQL will be helpful in your hacking.
I placed Yabman on SourceForge because, being a grad student, I don't have the time needed to really give Yabman the TLC it needs to bring it to a stable, fully-featured version 1.0. Please help!
Eventually, I'd like a co-maintainer or two who can actually put more work into it than I do. However, even a patch or two would be very helpful.
To get started hacking:
svn diffis your friend for this part.)
At this stage, it is best for you to just use Subversion to grab the source and keep it up-to-date. Install Subversion, then say:
$ svn checkout https://yabman.svn.sourceforge.net/svnroot/yabman/trunk/ yabman
This will create a directory called yabman. cd into it and start hacking!
Alternatively, you can download a tarball from the SourceForge file servers. However, I highly recommend that you opt for Subversion instead.
Prerequisites -- you'll need to install the following:
(Other versions are untested. Higher versions of Python, PostgreSQL, and pyPgSQL are likely to work. I welcome feedback and backwards-compatible patches to increase version compatibility, and also patches to make Yabman work with other RDBMS packages.)
After unpacking the tarball or pulling the source with Subversion, you'll need to:
Set up the database. Create a database (using
or equivalent) with whatever name you prefer, then initialize the schema by
running the SQL scripts
sql/update-*.sql in order, i.e.:
$ psql -f sql/update-001.sql $DBNAME(etc.)
$ psql -f sql/update-002.sql $DBNAME
It is prudent to review the output and make sure there are no problems. If there were and it's my fault, please let me know.
If you want to populate the database with some sample data (this is
optional), run the corresponding
script after each update script. Not all update scripts have sample
~/.yabman file. I recommend copying
doc/config-example and editing as appropriate.
To run the program, cd to
src/ and say
gui.py at the shell prompt.
The scripts in
sql/ can also be used to update the database
schema to the version required by the current software. (Note that the schema
version is independent of the Yabman version.) Script update-n.sql
changes the schema from version n-1 to version n. The
scripts have the following (soft) guarantees:
Note that user data may be *changed* in some cases to conform to the new schema. There should be no semantic changes unless noted in the release notes.
If you have schema version x (say
select max(version) from
schema_update; at your SQL prompt) and wish to update to the current
version y, simply run all the scripts numbered x+1 to
y in order. You may also wish to run the corresponding
There are also sometimes update reversal scripts.
revert-n.sql reverts the changes made by
update-n.sql. These are meant to be developer tools, and
you probably shouldn't run them unless you know what you're doing. They may
not be complete, correct, or even present.
Always back up your database before running any SQL scripts. (If you do run into problems, however, please let me know!)
When you first run the program, you're presented with the basic search interface. Enter a list of keywords, separated by whitespace, into the text box. Keywords are case-insensitive; non-alphanumerics other than dash, apostrophe, and underscore are removed. The keywords have AND semantic, i.e. each keyword must appear somewhere in each result.
Example: Searching conferences for "human computer interaction" finds each conference where:
Depending on the number of hits, different things happen:
|References:||title, tags, author and editor names|
|Features:||topic name, topic abbrev, feature name|
If the search string appears to be a fully specified name, i.e.
then a targeted search is performed. For example, both the of the above will find each person where:
This is so the above searches match "W. Clinton" and "W. J. Clinton", which is useful because citations so often omit full first names.
If the search string appears otherwise, the rules above apply. The first name and last name fields are searched.