[sword-devel] How to reverse engineer e-Sword's format (no illegality involved)
chrislit at crosswire.org
Mon Apr 6 13:22:16 MST 2009
Let's ignore EULAs and DMCA violations for a moment (given that we're
discussing interoperability, and the DMCA specifically permits reverse
engineering in such circumstances). And let's just consider the quick
and simple method of reverse engineering e-Sword's "format" without ever
visiting e-sword.net or installing any software from the site.
Step 1: Grab a user-created e-Sword module. Here's one:
Step 2: Unzip it until you get a .bbl file. (The above file is a zip
with an enclosed self-extracting zip. So use unzip or winzip or whatever
on it twice.)
Step 3: The .bbl file is an Access database. Use MS Access or any other
program capable of reading a Jet database (e.g. anything based on
libmdb, as mentioned) to analyze the structure. User created e-Sword
content will tend not to include any passwords (as the official content
does), there's no possible appearance of impropriety.
Step 4: Deal with RTF translation and encoding stuff.
Step 5: Repeat for other module types.
This doesn't address loading any of the official or paid content, since
that's all behind an access control (of a sort).
I'm not _sure_ that building e-Sword resource support into Sword is the
right way to go. It might be better to build a converter from e-Sword to
Sword or OSIS. I was working on something like that myself a couple
weeks ago, but gave up on it when it became clear how poor Perl's
cross-platform support for database support was. Something built on
libmdb or in Java might have been more fruitful.
More information about the sword-devel