<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; ">First the good news:<DIV><BR class="khtml-block-placeholder"></DIV><DIV>The current build is working for Mac OS X 10.4.x</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Now the bad news</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>WebStart is still broken (for me at least)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>There are at least a couple of problems with the kjv with strongs and morphology:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The KJV bible has a lot  of problems, just a couple of examples from John 1</DIV><DIV>     %22tou%22+here+refers+to+the+act+itself+of+seeing+and+so+%0Adoes+not+behave+as+an+article+but+rather+as+a+substantive.    </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The strongs numbers and morphology tags just don't seem right.  Why are these generic links being used instead of something more intuitive like the Strong's numbers them selves.  It wouldn't be so bad if each generic link pointed to a different entry in Strong's, but sometimes several different links point to the same Strong's entry.  You can't see it here because it didn't paste for some reason, but at the end of verse 49 there are 5 links missing, s14 - s18.  The last 4 of these links all point to entry 03588. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><A name="John.1.49"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">49</SPAN></FONT></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">Nathanael</SPAN></FONT><A href="gdef:G3482"><HYPERLINK></HYPERLINK></A>  answered<A href="gdef:G611"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S2</SPAN></FONT></A> and<A href="gdef:G2532"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S3</SPAN></FONT></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">  saith</SPAN></FONT><A href="gdef:G3004"><HYPERLINK></HYPERLINK></A> unto him<A href="gdef:G846"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"> S5</SPAN></FONT></A>, Rabbi<A href="gdef:G4461"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S6</SPAN></FONT></A>, thou<A href="gdef:G4771"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"> S7</SPAN></FONT></A> art<A href="gdef:G1488"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S8</SPAN></FONT></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"> the Son</SPAN></FONT><A href="gdef:G5207"><HYPERLINK></HYPERLINK></A>  of God<A href="gdef:G2316"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S10</SPAN></FONT></A>; thou<A href="gdef:G4771"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">     S11</SPAN></FONT></A> art<A href="gdef:G1488"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S12</SPAN></FONT></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"> the King</SPAN></FONT><A href="gdef:G935"><HYPERLINK></HYPERLINK></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">  of Israel</SPAN></FONT><A href="gdef:G2474"><HYPERLINK></HYPERLINK></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">.</SPAN></FONT><A href="gdef:G3588"><HYPERLINK></HYPERLINK></A><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">  </SPAN></FONT><A href="gdef:G3588"><HYPERLINK></HYPERLINK></A> <A href="gdef:G3588"><HYPERLINK></HYPERLINK></A>  <A href="gdef:G3588"><HYPERLINK></HYPERLINK></A>  <A name="John.1.50"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"> 50</SPAN></FONT></A>Jesus<A href="gdef:G2424"><FONT class="Apple-style-span" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">S1</SPAN></FONT></A>    </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>personally, i think the font for small verse numbers and these links could be just a bit larger.   turning off small verse numbers all together is even worse.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Now for a few questions</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Where does jsword store the books?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>What is the policy for entering these issues in JIRA</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Are there any particular issues you'd like me to work on.  I have a complete java development environment installed with eclipse and subclipse, and I am at your service.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Shalom,</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Kurt</DIV><DIV>On Apr 11, 2006, at 12:00 AM, DM Smith wrote:<DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Kurt,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">   </SPAN>I have tried the current copies of the 20060409 builds out and they work for me. Earlier on Sunday they were broken, but I fixed and re-released them about 4:15 EST on Sunday. Could you verify the current build? And the current WebStart?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">See below to responses to the rest of your questions.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Thanks,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">   </SPAN>DM</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Kurt Andrews wrote:</DIV> <BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I tried the bible desktop but the installer isn't working quite right.<SPAN class="Apple-converted-space">  </SPAN>It will download a jnlp file and clicking on that will quickly open the java cache viewer followed by an instance of com.sun.javaws, but both of those just shutdown without doing anything.<SPAN class="Apple-converted-space">  </SPAN>Then I tried downloading the tar ball with the jars in it, uncompressed it into the /Applications sub-directory, modified the jsword.sh shell script so that the Darwin classpath would be set, then ran the shell script from the command line.<SPAN class="Apple-converted-space">  </SPAN>Here are the results:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">NB:<SPAN class="Apple-converted-space">  </SPAN>The Java environment on my Mac is what came from the factory (ver. 1.4.2.09)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Last login: Sun Apr<SPAN class="Apple-converted-space">  </SPAN>9 16:02:52 on ttyp1</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Welcome to Darwin!</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">kurt-andrews-computer:~ kandrews$ cd /Applications</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">kurt-andrews-computer:/Applications kandrews$ cd jsword-1.0.2-20060409</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">kurt-andrews-computer:/Applications/jsword-1.0.2-20060409 kandrews$ ./jsword.sh</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Exception in thread "main" java.lang.UnsupportedClassVersionError: org/crosswire/bibledesktop/desktop/Desktop (Unsupported major.minor version 49.0)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.lang.ClassLoader.defineClass0(Native Method)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.lang.ClassLoader.defineClass(ClassLoader.java:539)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.net.URLClassLoader.access$100(URLClassLoader.java:55)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.net.URLClassLoader$1.run(URLClassLoader.java:194)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.security.AccessController.doPrivileged(Native Method)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.net.URLClassLoader.findClass(URLClassLoader.java:187)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.lang.ClassLoader.loadClass(ClassLoader.java:289)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.lang.ClassLoader.loadClass(ClassLoader.java:235)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">        </SPAN>at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">kurt-andrews-computer:/Applications/jsword-1.0.2-20060409 kandrews$</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I've downloaded and installed the subclipse plugin so one I get things running, if there are any todos maybe I could help out.<SPAN class="Apple-converted-space">  </SPAN>I don't plan on bailing out of the c/c++ development, but I use eclipse, ant, and clearcase every day at work so that type of environment is more familiar to me and I can probably start contributing faster.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I'm curious about how jsword works with sword modules.<SPAN class="Apple-converted-space">  </SPAN>Do the jsword classes use JNI to make calls to the sword module?<SPAN class="Apple-converted-space">  </SPAN>I can't seem to find the JNI in the source code anywhere, but I haven't found and information on the gbs format either so how did you figure out how to read it?<SPAN class="Apple-converted-space">  </SPAN>May be there's less to the xml2gbs import than I think</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Well to make a long story short, JSword is a completely new implementation of the SWORD API. The form that it is in is roughly where I found it 2 years ago.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">It is completely native Java, there are no JNI calls to C++.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Not sure where to start in explaining the architecture, but I'll start at the module (the physical file) and work outward. (This is the long story!)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">There are different kinds of modules (called Book in JSword lingo), Bible, Commentary, Devotional, Dictionaries and the like. These are encoded in various ways. Bibles and Commentaries share a fundamental encoding. Dictionaries and Devotionals share a common one. This is because Bibles and Commentaries can be understood as Book, Chapter and Verse (BCV). Dictionaries and Devotionals are understood as keyed entries. Daily devotionals use some kind of month day notation for their keys. Dictionaries use terms.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">And for each of these they can be raw or compressed. For Bibles, the compression can be by verse, chapter or book (in practice, none are by verse, and most, if not all are by book.) Compression can either be LZSS or ZIP, but in practice none are LZSS (and JSword does not support LZSS, for this reason).</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Each module is represented by index files and data files. A key is used to do a lookup in the index file, which gives a start and length in the data file for that indexed item. Compression adds a layer of complexity.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">In JSword, the Java Sword API that BibleDesktop uses, these are represented by a Sword Backend (see org.crosswire.jsword.book.sword.AbstractBackend)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">These are wrapped by a BookDriver (see org.crosswire.jsword.book.BookDriver) which represents how a book is represented by a system, in this case org.crosswire.jsword.book.sword.SwordBoodDriver. A BookDriver, knows how to work with Books as a whole. The Backend for LZSS, for GenBooks and for one other kind of module (Webster's dictionary) have yet to be written.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Each Book (see org.crosswire.jsword.book.Book) provides the basic mechanisms of digging into what a book is, such as getting meta data about the book (e.g. name, initials, language, type, ...) and getting data from the book (e.g. find).</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The meta data for a Book is held in a BookMetaData object (see org.crosswire.jsword.book.BookMetaData). In the case of SwordBookMetaData, this comes from the conf that describes the module. This is loaded via org.crosswire.jsword.book.sword.ConfigEntryTable where each line from the conf file is represented as a ConfigEntry having a ConfigEntryType.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">With this we are able to locate and find a passage of a Bible or commentary, or an entry in a Dictionary or Daily Devotional. But, the modules may be encoded as PlainText, GBF (General Bible Format), ThML (Theological Markup Language, I think), or OSIS. The JSword approach is to convert each of these into OSIS (yes, even OSIS is converted, but trivially). This is done by filters (see org.crosswire.jsword.book.filter.Filter).</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">To display text we use a widget that is able to render HTML. So we convert OSIS to HTML and we use XLST to do this. (See bibledesktop/src/main/resources/xsl/cswing/simple.xsl for the stylesheet we use).</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Most of the above is hidden from the casual user of the JSword API. The best example of the typical use of the JSword API can be found at org.crosswire.jsword.examples.APIExamples.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The above does not discuss indexing or module installation. To do indexing we use Lucene. To do module installation (aka downloading) we use http tunneling. See org.crosswire.jsword.index and org.crosswire.jsword.install for more details.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Most of our coding is against interfaces. We use a simple plugin architecture to load factories with the current implementation of a particular interface.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hope this helps,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">   </SPAN>DM</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">jsword-devel mailing list</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:jsword-devel@crosswire.org">jsword-devel@crosswire.org</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="http://www.crosswire.org/mailman/listinfo/jsword-devel">http://www.crosswire.org/mailman/listinfo/jsword-devel</A></DIV> </BLOCKQUOTE></DIV><BR></DIV></BODY></HTML>