[jsword-devel] Clean Installation Problems

DM Smith jsword-devel@crosswire.org
Wed, 03 Mar 2004 10:24:15 -0500


I am looking at getting JSword to work well from a clean installation. That 
is, Sword (C++) has not been installed (or it has been installed to a 
non-default location) and JSword is installed "for the first time". To 
simulate this, I delete all traces of modules and ~/.jsword then run it 
either in Eclipse or via webstart (a local, hand edited jnlp file).

The problem I have encountered is multi-faceted, but it seems to manifest 
itself in three ways.
1) JSword assumes that at least one bible is installed. If one is not 
installed then the application does not work gracefully. Specifically I get 
all kinds of un-helpful error messages, with Null Pointer Exceptions and 
Book Exceptions. (I have a listing of where these errors occurred, if anyone 
wants them, but for the sake of brevity in this message, I left them out.)

2) JSword assumes that Sword is installed. It checks for modules installed 
in the Sword Module directory in one and only one place. If the program is 
not installed there then JSword defaults to putting modules in the root of 
the current drive. For me this is d:\modules and d:\mods.d. On unix, I would 
guess that it would fail on superuser permission problems. However, it does 
not look there to see if modules are installed.

3) JSword uses resource/version/ser directory to look for installed bibles 
using the Ser driver. However, when it serializes them it puts them in 
~/.jsword/sword-[INITIALS]. The problem with looking at resource/version/ser 
is that in a webstart setting this is inside resource.jar. The driver does 
correctly use the ref.data and ref.index on a subsequent run.

The net effect of the last two problems is that restarting the application 
after downloading/installing bibles, they don't show up as having been 
installed. I have not looked at the Lucene driver to see if it has similar 
assumptions.

I would like to know what the consensus on fixing these problems is.

I would suggest that on first run (every run??) that it verifies the 
run-time environment for its assumptions and if it assumed correctly, then 
the program continues as it has. If it has not then it supplies a coherent 
set of defaults and perhaps presents the user with a "Wizard" to modify 
them.

Should the "ser" files be stored on a per user basis (i.e. in ~/.jsword/...) 
or in a common area?

At this point should there be any concurrency concerns? Or do we assume that 
modules and ser files may be shared but not networked (that is the file 
system is on drives on the local machine)?

As I have some time on my hands, I will be glad to do the implementation.

_________________________________________________________________
Get business advice and resources to improve your work life, from bCentral. 
http://special.msn.com/bcentral/loudclear.armx