<div dir="ltr"><div>Jaak,</div><div><br></div><div>I&#39;m not sure why you choose this hill to die on when BibleTime already does exactly this for the module info.</div><div><br></div><div><a href="https://github.com/bibletime/bibletime/blob/a1c5848cf70d79f97b4a80c769b4d688b0b9560e/src/backend/drivers/cswordmoduleinfo.cpp#L1035-L1041">https://github.com/bibletime/bibletime/blob/a1c5848cf70d79f97b4a80c769b4d688b0b9560e/src/backend/drivers/cswordmoduleinfo.cpp#L1035-L1041</a></div><div><br></div><div>Why now, when it&#39;s UnlockInfo, does this suddenly become a problem?</div><div><br></div><div>--Greg<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 7, 2020 at 2:58 AM Jaak Ristioja &lt;<a href="mailto:jaak@ristioja.ee">jaak@ristioja.ee</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">&gt; and you are refusing to do this because... it somehow doesn&#39;t have a<br>
&gt; clear definition of what we are doing under the covers in our RTFHTML<br>
&gt; filter.<br>
&gt;<br>
&gt; Have I restated the exact current problem?<br>
<br>
No. The RTFHTML code does not properly handle corner cases leading the<br>
way to potential (security?) issues for our users, which is why we&#39;re<br>
not going to use that as it is right now. We at BibleTime have the<br>
capability to write a better parser, to do so we would need a spec. That<br>
spec would define the allowed syntax for module writers, hence it is a<br>
public interface and not a description of what RTFHTML does internally.<br>
This would be the specification for the protocol of how SWORD (created<br>
by Crosswire) interfaces with modules (created by module writers not<br>
necessarily from Crosswire).<br>
<br>
Actually, perhaps it were better if there was a spec about the output of<br>
RTFHTML, e.g. something like Gary suggested. This together with RTFHTML<br>
working properly (not crash, not have security bugs, properly report<br>
errors including due to incorrect input) will likely suffice for the<br>
needs of BibleTime at least for the foreseeable 5-7 years.<br>
<br>
A well-defined spec for the contents of that field (the input to<br>
RTFHTML) might still be needed for module writers / generators /<br>
converters etc to properly interface with SWORD. Note also that if your<br>
configuration files would be properly versioned (e.g. configuration file<br>
contains the version of the spec it conforms to), you would have no<br>
problems adding new features to the spec and to RTFHTML while also<br>
bumping the versions. If done properly, the engine could seamlessly<br>
handle module configurations conforming to different versions of the<br>
spec. For example, if your current spec is version 5, and you want to<br>
support a new feature in the configuration file, you just add the<br>
feature into spec version 6, and then amend the configuration files<br>
accordingly, e.g.<br>
<br>
[General]<br>
SwordConfigurationApiVersionRequired=6<br>
<br>
Unfortunately, since such versioning is not part of the current spec,<br>
you need certain workarounds for something like this to work for<br>
features which extend the INI-like syntax of the configuration file, not<br>
just what changes the semantics for the values or similar.<br>
<br>
There are also other possibilities to add new features in backwards<br>
compatible manner as well (so that module configurations with new<br>
features still continue to work with (some) older versions of Sword) but<br>
this is much harder to do properly (even without specs).<br>
<br>
Therefore, since adding new features can mostly be done properly with<br>
formal (versioned) specifications and mostly in compatible manner,<br>
citing something like this as an excuse to not having specifications is<br>
rather lame.<br>
<br>
What I am offering would not hinder SWORD from offering to frontend<br>
developers what you called &quot;new modules and new functionality with new<br>
engine releases without any change in their code&quot;. On the contrary, I<br>
believe this would actually improve compatibility. Furthermore, I feel<br>
quite safe to state that proper specifications per se would not hinder<br>
you to continue to provide new features as you&#39;ve done previously<br>
(except of course if you have already done certain things wrong). The<br>
biggest downside is that you have to properly update the spec as well,<br>
which might be tedious for people with not much experience in doing so.<br>
<br>
Whether this aligns with what you called your &quot;purposes for the engine&quot;<br>
depends on you, or so it seems. As things stand now for BibleTime we<br>
still have planned for BibleTime to use Sword++ instead of SWORD when<br>
the time is right.<br>
<br>
J<br>
<br>
<br>
On 07.01.20 02:06, Troy A. Griffitts wrote:<br>
&gt; So, just to summarize for all who are reading this thread...<br>
&gt; <br>
&gt; o  A new useful feature for the end user has been added to SWORD and<br>
&gt; we&#39;re asking you to make this available to your user:<br>
&gt; <br>
&gt;       to show them how to obtain an unlock key when they try to install<br>
&gt; a locked module.<br>
&gt; <br>
&gt; The recommended way SWORD has for you to get the HTML for this is to use<br>
&gt; these 2 lines:<br>
&gt; <br>
&gt;         SWBuf unlockInfo = book-&gt;getConfigEntry(&quot;UnlockInfo&quot;);<br>
&gt;         RTFHTML().processText(unlockInfo);<br>
&gt; <br>
&gt; and you are refusing to do this because... it somehow doesn&#39;t have a<br>
&gt; clear definition of what we are doing under the covers in our RTFHTML<br>
&gt; filter.<br>
&gt; <br>
&gt; Have I restated the exact current problem?<br>
&gt; <br>
&gt; <br>
&gt; To repeat.  I don&#39;t WANT a concrete definition of what we are doing<br>
&gt; under the covers.  I WANT to be able to... for example... support some<br>
&gt; new HTML or RTF tag we might need in the future and I will add that<br>
&gt; support to the RTFHTML filter.  All frontends using the recommended<br>
&gt; lines above will magically get the new functionality without needing to<br>
&gt; change or even know we support new tags under the covers.  This is<br>
&gt; intentional.  SWORD is not a specification for someone to re-write.  It<br>
&gt; is an ever-growing library for programmers to use.  We do our best to<br>
&gt; keep our public interfaces backward compatible and try to make<br>
&gt; improvements within the implementation.<br>
&gt; <br>
&gt; I am pushing back on your suggestion for the practical reasons:<br>
&gt; <br>
&gt; a) you can do what you need right now in a very easy way: 2 lines of<br>
&gt; code-- which has been the way to do this for 20+ years.<br>
&gt; <br>
&gt; b) your suggestion to define a formal spec for what I am doing in the<br>
&gt; RTFHTML filter will prohibit me from doing exactly what SWORD offers to<br>
&gt; frontend developers: new modules and new functionality with new engine<br>
&gt; releases without any change in their code.<br>
&gt; <br>
&gt; You are preventing your users from having functionality because we don&#39;t<br>
&gt; do things the way you want.  That&#39;s your choice.  We offer the<br>
&gt; capability.  You won&#39;t use it for some esoteric reason.<br>
&gt; <br>
&gt; I am happy to cooperate, but not at the expense of our purposes for the<br>
&gt; engine.<br>
&gt; <br>
&gt; Troy<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; On 1/6/20 3:46 PM, Jaak Ristioja wrote:<br>
&gt;&gt; Dear Troy,<br>
&gt;&gt;<br>
&gt;&gt; I think the bottom line is that you just don&#39;t care for our concerns.<br>
&gt;&gt; Because by the end of the day, after much labor to communicate and<br>
&gt;&gt; improve things, we are left empty-handed, and the concerns remain.<br>
&gt;&gt;<br>
&gt;&gt; Yes, you have a bunch of justifications for why our concerns, proposals<br>
&gt;&gt; and patches are stupid, unimportant or irrelevant pseudo-problems. I&#39;m<br>
&gt;&gt; sorry, but we disagree. However stupid our concerns might seem to you,<br>
&gt;&gt; this doesn&#39;t change the fact that we still feel otherwise: that our<br>
&gt;&gt; concerns are real.<br>
&gt;&gt;<br>
&gt;&gt; Issue after issue, e-mail after e-mail our needs have been ignored and I<br>
&gt;&gt; feel that every such response from you just makes me more and more sick.<br>
&gt;&gt; It doesn&#39;t even matter if you know best, whether you&#39;re right or what<br>
&gt;&gt; your reasons are — deeds speak louder than words. The fact is that you<br>
&gt;&gt; have been very uncooperative and I feel that this has been quite toxic.<br>
&gt;&gt;<br>
&gt;&gt; BibleTime will display the UnlockInfo in verbatim plain text only and<br>
&gt;&gt; will not attempt to parse any specific formatting syntax until a good<br>
&gt;&gt; enough (for me) formal specification for that syntax has been created.<br>
&gt;&gt; My offer to help specify the syntax formally still stands.<br>
&gt;&gt;<br>
&gt;&gt; J<br>
&gt;&gt;<br>
&gt;&gt; On 06.01.20 00:47, Troy A. Griffitts wrote:<br>
&gt;&gt;&gt; Again, I would state that the problem you are having is that you aren&#39;t<br>
&gt;&gt;&gt; content to use the SWORD engine as-is, but feel you need to redesign all<br>
&gt;&gt;&gt; of its interfaces and re-implement large parts of the engine.  I am a<br>
&gt;&gt;&gt; consumer of the engine.  I write frontends regularly against the<br>
&gt;&gt;&gt; engine.  If you would be content to simply use the engine as it is<br>
&gt;&gt;&gt; written, you could write a frontend very quickly and without much effort.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I have often asked the bottom line question when you complain about<br>
&gt;&gt;&gt; these things:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What exactly and practically, can&#39;t you do that you feel you need to<br>
&gt;&gt;&gt; &quot;hack around&quot; the engine.  What exact feature are you trying to<br>
&gt;&gt;&gt; implement that all other frontend developers haven&#39;t implemented?  We<br>
&gt;&gt;&gt; eat our own cooking.  We write many different frontends in many<br>
&gt;&gt;&gt; different programming languages for many different sytles of Bible<br>
&gt;&gt;&gt; research, and improve the engine as we find difficulties writing these<br>
&gt;&gt;&gt; frontends.  It is not as if we live in a bubble and don&#39;t actually use<br>
&gt;&gt;&gt; our code.  If 3 of my frontends all had the same hack because SWORD did<br>
&gt;&gt;&gt; something unnecessarily odd, I would be the first one to push an update<br>
&gt;&gt;&gt; into the engine.  So, without specific examples of what exactly you are<br>
&gt;&gt;&gt; having trouble delivering to your users because of large issues with<br>
&gt;&gt;&gt; SWORD-- more specific than &quot;hacks all over&quot;, we can&#39;t help you either<br>
&gt;&gt;&gt; understand how we intend for you to use SWORD to deliver that<br>
&gt;&gt;&gt; functionality and help you have an easier time, or else really see some<br>
&gt;&gt;&gt; novel feature you are attempting to add which SWORD really doesn&#39;t<br>
&gt;&gt;&gt; easily handle and find together a way to improve things.  SWORD does<br>
&gt;&gt;&gt; very specific tasks, each in a very specific way.  If you use it as it<br>
&gt;&gt;&gt; was intended instead of trying to change its programmatic paradigm to<br>
&gt;&gt;&gt; what you think it should be, it works reasonably well and provides a<br>
&gt;&gt;&gt; huge amount of services necessary for building a Bible research tool and<br>
&gt;&gt;&gt; will isolate you from a ton of tasks common to many Bible research<br>
&gt;&gt;&gt; tools, to let you focus on your users and your specific frontend, and<br>
&gt;&gt;&gt; we&#39;ll try to protect you from having to rewrite your working code by<br>
&gt;&gt;&gt; providing new modules and new features under the covers which you can<br>
&gt;&gt;&gt; slowly add to your frontend if you feel it fits.  If you &quot;kick against<br>
&gt;&gt;&gt; the goads&quot; and try to make SWORD work in a way it wasn&#39;t intended, you<br>
&gt;&gt;&gt; will likely run into issues.  You have your entire frontend to design as<br>
&gt;&gt;&gt; you see fit and use whatever programming paradigm you&#39;d like.  Simply<br>
&gt;&gt;&gt; use SWORD as you would libz or libcurl or whatever other utility you<br>
&gt;&gt;&gt; need.  Accept their paradigm.  If necessary, work within their paradigm<br>
&gt;&gt;&gt; to add any features you see lacking, and save your idealism for your own<br>
&gt;&gt;&gt; code.  Life is too short to make everyone do things the way you think<br>
&gt;&gt;&gt; they should do things.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Again, I want to improve the engine.  If you are building X super cool<br>
&gt;&gt;&gt; feature and really can&#39;t figure out a way to add your super cool feature<br>
&gt;&gt;&gt; because SWORD doesn&#39;t allow it, I am happy to discuss how we can improve<br>
&gt;&gt;&gt; the engine to give you and all other frontend developers the ability to<br>
&gt;&gt;&gt; deliver X to our end users.  But these conversations between you and I<br>
&gt;&gt;&gt; are usually about incomplete specifications and lack of use of the<br>
&gt;&gt;&gt; latest C++ features or the latest in vogue programming models or trying<br>
&gt;&gt;&gt; to solve some theoretical problem no one has run into in 30 years of SWORD.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; So, yes, I am not interested in changing a highly optimized and highly<br>
&gt;&gt;&gt; portable codeset, to risk giving up that portability and optmization so<br>
&gt;&gt;&gt; we can use the latest template library, latest programming paradigm, or<br>
&gt;&gt;&gt; latest features in C++.  Again, if you have a new feature you are<br>
&gt;&gt;&gt; attempting to add to Bibletime and just can&#39;t do it because you have so<br>
&gt;&gt;&gt; much trouble getting the data you need from SWORD, please let me know<br>
&gt;&gt;&gt; and I would love to discuss and improve the engine for you and everyone<br>
&gt;&gt;&gt; else.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Troy<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 1/5/20 2:35 PM, Jaak Ristioja wrote:<br>
&gt;&gt;&gt;&gt; Dear Peter,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I really wish it were as simple as adding amending a few vague<br>
&gt;&gt;&gt;&gt; statements. But actually, the specification is just plain incorrect in<br>
&gt;&gt;&gt;&gt; many ways not so easily amendable.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; For example, the tutorial states that &quot;whitespace can be around the = as<br>
&gt;&gt;&gt;&gt; well.&quot; and also gives an example: &quot;ModDrv   =     zText&quot;. This is<br>
&gt;&gt;&gt;&gt; incorrect at least in part, because in such cases, SWConfig parses the<br>
&gt;&gt;&gt;&gt; key as &quot;ModDrv   &quot; (with including the whitespace).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; For another example, there are issues with the so-called &quot;continuation<br>
&gt;&gt;&gt;&gt; lines&quot;. Whereas <a href="http://wiki.crosswire.org/DevTools:conf_Files" rel="noreferrer" target="_blank">http://wiki.crosswire.org/DevTools:conf_Files</a> states<br>
&gt;&gt;&gt;&gt; these are allowed in some places and not in others, it seems to me that<br>
&gt;&gt;&gt;&gt; continuation lines are allowed and work everywhere (as that logic seems<br>
&gt;&gt;&gt;&gt; to be incorporated into FileMgr::getLine() which SWConfig uses to read<br>
&gt;&gt;&gt;&gt; lines). Additionally, the tutorial states that under the &quot;Continuation&quot;<br>
&gt;&gt;&gt;&gt; section the following:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   This is not a mechanism to make long lines more readable<br>
&gt;&gt;&gt;&gt;   in the module.conf file. It is a means to introducing a<br>
&gt;&gt;&gt;&gt;   break in the rendered output of that field when viewed by<br>
&gt;&gt;&gt;&gt;   a front-end or installer. It is akin to a xHTML &lt;br/&gt;.<br>
&gt;&gt;&gt;&gt;   That is, continuation is a formatting feature.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Please correct me, but it seems exactly the opposite, because the<br>
&gt;&gt;&gt;&gt; backslashes are stripped by FileMgr::getLine() so nothing can turn them<br>
&gt;&gt;&gt;&gt; into line breaks later. Continuation lines are simply a feature to make<br>
&gt;&gt;&gt;&gt; module.conf files more readable.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; There are also several other issues, but its not the issues themselves<br>
&gt;&gt;&gt;&gt; that are holding me back. I think the greater obstacle is that in<br>
&gt;&gt;&gt;&gt; reality requires talks, exchange of information and much cooperation<br>
&gt;&gt;&gt;&gt; with Sword developers, including them fixing and improving the engine.<br>
&gt;&gt;&gt;&gt; But Sword developers are not that interested (see Troy&#39;s email dated<br>
&gt;&gt;&gt;&gt; Sun, 5 Jan 2020 13:23:40 -0700), they don&#39;t see such issues as big<br>
&gt;&gt;&gt;&gt; problems. And in the end frontend developers like us have to grind our<br>
&gt;&gt;&gt;&gt; teeth while hacking around their technically &quot;wonderful&quot; library.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; As long as Sword developers continue to ignore most of our technical<br>
&gt;&gt;&gt;&gt; concerns, I don&#39;t see how me amending the wiki could be a solution. The<br>
&gt;&gt;&gt;&gt; best I could do is to document the brokenness. I don&#39;t see how it were<br>
&gt;&gt;&gt;&gt; possible for me to do better without more cooperation from the Sword<br>
&gt;&gt;&gt;&gt; developers, but it seems that once again we will not getting any of<br>
&gt;&gt;&gt;&gt; that... ;-\<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; J<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 05.01.20 15:54, <a href="mailto:refdoc@gmx.net" target="_blank">refdoc@gmx.net</a> wrote:<br>
&gt;&gt;&gt;&gt;&gt; Dear Jaak,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Thanks for the apology, accepted.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Wrt the further remarks, this is an open source project and a wiki. It is open <br>
&gt;&gt;&gt;&gt;&gt; to change and improvements. In particular the Wiki is very open to improvements, <br>
&gt;&gt;&gt;&gt;&gt; get yourself an.account and add where things are vague or unclear.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I agree in that module security can become an issue when powerful display <br>
&gt;&gt;&gt;&gt;&gt; engines are used uncritically and without sufficient sandboxing and sanitizing <br>
&gt;&gt;&gt;&gt;&gt; of module content. We try and safeguard by having our own upload criteria for <br>
&gt;&gt;&gt;&gt;&gt; modules and only allowing repos to become part of the &quot;official&quot; set up which <br>
&gt;&gt;&gt;&gt;&gt; guarantee a certain level of sanity. Security as a process.... But this may well <br>
&gt;&gt;&gt;&gt;&gt; not be sufficient and in in the end each step of the process does benefit from <br>
&gt;&gt;&gt;&gt;&gt; review and improvement at all times. So, join the wiki and improve upon it, feel <br>
&gt;&gt;&gt;&gt;&gt; free.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; As such (not speaking about RTF as I know least about that) much of the module <br>
&gt;&gt;&gt;&gt;&gt; related engine output is subject to a sanity check within the filters whereby <br>
&gt;&gt;&gt;&gt;&gt; unrecognised codes are nuked or made safe.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Peter<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Sent from my mobile. Please forgive shortness, typos and weird autocorrects.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; -------- Original Message --------<br>
&gt;&gt;&gt;&gt;&gt; Subject: Re: [bt-devel] NASB Unlock Key<br>
&gt;&gt;&gt;&gt;&gt; From: Jaak Ristioja<br>
&gt;&gt;&gt;&gt;&gt; To: <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt; CC:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     Hello Peter,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     I apologize for my poor understanding. I misunderstood Troys reply to<br>
&gt;&gt;&gt;&gt;&gt;     mean that the wiki contains &quot;the specification&quot; and thought that he<br>
&gt;&gt;&gt;&gt;&gt;     meant the <a href="http://wiki.crosswire.org/DevTools:conf_Files" rel="noreferrer" target="_blank">http://wiki.crosswire.org/DevTools:conf_Files</a> page. Now that<br>
&gt;&gt;&gt;&gt;&gt;     you also mentioned <a href="http://wiki.crosswire.org/Tutorial:Writing_Conf_files" rel="noreferrer" target="_blank">http://wiki.crosswire.org/Tutorial:Writing_Conf_files</a><br>
&gt;&gt;&gt;&gt;&gt;     I see that this page actually contains most of the information I was<br>
&gt;&gt;&gt;&gt;&gt;     missing.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     Thank you!<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     I also apologize if I&#39;ve created a misunderstanding, e.g. by not being<br>
&gt;&gt;&gt;&gt;&gt;     thoughtful enough to formulate more clearly what I&#39;m looking for as a<br>
&gt;&gt;&gt;&gt;&gt;     reference. You are correct that much of the information is available on<br>
&gt;&gt;&gt;&gt;&gt;     the two wiki pages, but I think these do not well add up to constitute a<br>
&gt;&gt;&gt;&gt;&gt;     single document which could comfortably be categorized as a formal<br>
&gt;&gt;&gt;&gt;&gt;     technical specification, because many of the details are described in an<br>
&gt;&gt;&gt;&gt;&gt;     informal and non-technical manner.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     But then again I might still be wrong and in need of your corrective<br>
&gt;&gt;&gt;&gt;&gt;     remarks.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     J<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     On 05.01.20 13:42, <a href="mailto:refdoc@gmx.net" target="_blank">refdoc@gmx.net</a> wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; The subset of RTF and the encoding directions are for the last decade at<br>
&gt;&gt;&gt;&gt;&gt;     least<br>
&gt;&gt;&gt;&gt;&gt;      &gt; in our wiki<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; <a href="http://wiki.crosswire.org/Tutorial:Writing_Conf_files" rel="noreferrer" target="_blank">http://wiki.crosswire.org/Tutorial:Writing_Conf_files</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; I do not mind intelligent criticism of the wiki, but declarations of<br>
&gt;&gt;&gt;&gt;&gt;     absence of<br>
&gt;&gt;&gt;&gt;&gt;      &gt; information by long standing collaborators should be verified by running a<br>
&gt;&gt;&gt;&gt;&gt;      &gt; simple search if the information is not found on first glance<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Jaak, that is directed at you.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; FWIW, this info on this page has been lifted (by David or me) from the<br>
&gt;&gt;&gt;&gt;&gt;     original<br>
&gt;&gt;&gt;&gt;&gt;      &gt; static tutorial subside, so is there for about 20 years in one form or<br>
&gt;&gt;&gt;&gt;&gt;     another.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Peter<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Sent from my mobile. Please forgive shortness, typos and weird autocorrects.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; -------- Original Message --------<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Subject: Re: [bt-devel] NASB Unlock Key<br>
&gt;&gt;&gt;&gt;&gt;      &gt; From: Jaak Ristioja<br>
&gt;&gt;&gt;&gt;&gt;      &gt; To: <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; CC:<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; It helps a bit, but that is a very loose definition, and hence ambigious.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; For example, starting with RTF: which version of RTF? The latest version<br>
&gt;&gt;&gt;&gt;&gt;      &gt; (1.9.1) of the RTF specification is 278 pages long, dated 19 March 2008.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; The whole of it (including support for style sheets, tables, lists,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; indenting, hyperlinks, line spacing, paging, margins, embedded fonts,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; drawing objects, pictures, UTF-16, unicode escapes, codepages, character<br>
&gt;&gt;&gt;&gt;&gt;      &gt; sets, embedded OLE objects, bi-directional text, ruby, ...) or only only<br>
&gt;&gt;&gt;&gt;&gt;      &gt; a subset? Which subset? Probably limited to ? Can the parser<br>
&gt;&gt;&gt;&gt;&gt;      &gt; expect the representation format to be ASCII (with escapes) according to<br>
&gt;&gt;&gt;&gt;&gt;      &gt; the RTF spec?<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Now, adding links to the mix, should this HTML construct<br>
&gt;&gt;&gt;&gt;&gt;      &gt; be parsed inside all RTF constructs or just certain contexts? Or should<br>
&gt;&gt;&gt;&gt;&gt;      &gt; the HTML element be parsed before RTF? Can the display text<br>
&gt;&gt;&gt;&gt;&gt;      &gt; inside the tags also contain RTF?<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; From the perspective of writing a valid parser for these configuration<br>
&gt;&gt;&gt;&gt;&gt;      &gt; entries, such details matter a great deal, which is why I&#39;m concerned.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Even with plain text entries, I couldn&#39;t find information about whether<br>
&gt;&gt;&gt;&gt;&gt;      &gt; these are encded in ASCII, UTF-8, ISO-8859-?? or something else. In case<br>
&gt;&gt;&gt;&gt;&gt;      &gt; its UTF-8, is the byte-order mark allowed at the beginning of the<br>
&gt;&gt;&gt;&gt;&gt;      &gt; configuration file?<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; I apologize if this sounded picky, but such details really do matter<br>
&gt;&gt;&gt;&gt;&gt;      &gt; from the perspective of writing correct and safe parsers. And you might<br>
&gt;&gt;&gt;&gt;&gt;      &gt; not agree with me, but I find it very important that our users get<br>
&gt;&gt;&gt;&gt;&gt;      &gt; high-quality software not just in terms of features, but also in terms<br>
&gt;&gt;&gt;&gt;&gt;      &gt; of robustness, reliability and cybersecurity.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; With these things in mind and given the many bugs I&#39;ve found when<br>
&gt;&gt;&gt;&gt;&gt;      &gt; working on that code for Sword++, I must say I don&#39;t feel safe using<br>
&gt;&gt;&gt;&gt;&gt;      &gt; Sword filters.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; But if I interpret your reply correctly, you suggest running the<br>
&gt;&gt;&gt;&gt;&gt;      &gt; configuration value through the RTFHTML filter and use that as HTML?<br>
&gt;&gt;&gt;&gt;&gt;      &gt; That at least gives me some clues about how you imagine it to work,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; which subset of RTF should be supported etc, but I&#39;d prefer such<br>
&gt;&gt;&gt;&gt;&gt;      &gt; information to be in the specification instead.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; I&#39;d be glad to help improve these specifications, but this would entail<br>
&gt;&gt;&gt;&gt;&gt;      &gt; quite a lot of scrutiny, very likely on the Sword code as well. Given<br>
&gt;&gt;&gt;&gt;&gt;      &gt; that there has been some tension between us in the past, this might<br>
&gt;&gt;&gt;&gt;&gt;      &gt; perhaps require a bit of forethought. :)<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; J<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; PS: The latest version (1.9.1) of the RTF specification is 278 pages<br>
&gt;&gt;&gt;&gt;&gt;      &gt; long, dated 19 March 2008.<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; PPS: You might want to cherry-pick this Sword++ commit into Sword to fix<br>
&gt;&gt;&gt;&gt;&gt;      &gt; two HTML injection issues in RTFHTML:<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;     <a href="https://github.com/swordxx/swordxx/commit/5959759d6951462f154dec663ea1805090a576bd" rel="noreferrer" target="_blank">https://github.com/swordxx/swordxx/commit/5959759d6951462f154dec663ea1805090a576bd</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; On 05.01.20 02:15, Troy A. Griffitts wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; Hi Jaak,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; What makes you think the specification isn&#39;t defined? It has always been,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; as many of our fields in the .conf file, RTF + a href links. If the wiki<br>
&gt;&gt;&gt;&gt;&gt;      &gt; doesn&#39;t say this, it should. The RTF to HTML filter in the engine will give<br>
&gt;&gt;&gt;&gt;&gt;      &gt; you content you can display in your html view.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; Hope this helps,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; Troy<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; On January 4, 2020 5:06:50 PM MST, Jaak Ristioja wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; Hello Troy,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; I guess we can display the UnlockInfo .conf entry as verbatim plain<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; text. If support for hyperlinks and such would be needed, I would<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; strongly prefer the format to have a formal specification which were<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; acceptable to use in BibleTime.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; The specification being &quot;just some simple HTML&quot; is not good enough,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; because passing the contents of such fields directly to some HTML or<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; web<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; view widget is not acceptable, neither is embedding it verbatim inside<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; other HTML, because that might break our GUI layouts/HTML and comes<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; with<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; security concerns (we don&#39;t want modules to be able to crash BibleTime,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; run scripts, consume too much resources etc).<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; If you want I can help write formal grammars (EBNF or similar) for such<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; things, as well as parsers, linters etc.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; Best regards,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; J<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; On 05.01.20 00:56, Troy A. Griffitts wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; Hi Gary,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; Thanks for the suggestion. We had to weigh the pros and cons of<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; this.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; Lockman is testing the module in a few of our applications and also<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; wanted to review the installation and unlock process. We decided to<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; do<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; all we can to make it as easy as possible for their executives-- who<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; are<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; not programmers-- to review and make a decision on permission.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; One thing which has been mentioned a few times on sword-devel is that<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; frontends should begin to honor the new &quot;UnlockInfo&quot; .conf entry,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; which<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; has the purpose to explain to the user how to obtain an unlock key<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; for a<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; particular module and in this modules clarifies to the user that this<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; module is still in the testing phase. It would be good to check<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; Bibletime to see if it has support for displaying &quot;UnlockInfo&quot; to the<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; user when a module is selected for installation.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; Thanks again for all you guys do,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; Troy<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; On 1/4/20 3:43 PM, Gary Holmlund wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; Troy,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; Thanks for the information. Perhaps Lockman should not be in<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; the masterRepoList.conf until it is available for purchase.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; Gary<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; On 1/4/20 11:12 AM, Troy A. Griffitts wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; Hey guys. We don&#39;t have a deal with Lockman yet. They are<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; reviewing<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; the latest work we&#39;ve done and have pointed out a few issues we are<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; trying to fix. It does seem like we are at the brink of actually<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; having<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; the NASB available, but we&#39;ve said this for years, so I don&#39;t want<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; promise anything. There is no place to purchase an unlock key yet<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; and<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; when there is, it will be directly from Lockman. SWORD has had<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; single<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; unlock code functionality unchanged for years in the engine. If<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; Lockman<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; decides they want unique unlock codes per user, then you will need<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; compile with SWORD trunk, as this capability was added about 12<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; months<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; ago. Or with the soon to be release 1.9.0.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; Hope this clears things up a bit.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; Troy<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; On 1/3/20 9:41 PM, Gary Holmlund wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; John,<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; I would like to know this also. The unlock is implemented in the<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; sword library. Perhaps you can get an answer at <a href="http://crosswire.org" rel="noreferrer" target="_blank">crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; Gary Holmlund<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; On 12/30/19 4:29 PM, John A. Sullivan III wrote:<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Hello, all. I was absolutely thrilled to see the Lockman<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; Foundation<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; now appear in the bookshelf options and I downloaded the NASB<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; module.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; I was about to purchase a key from Lockman but I see notes<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; on-line<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; that<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; the module cannot yet be unlocked and is only for testing. I<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; don&#39;t<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; know if those are old notes.<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; If I purchase a NASB key, can I use it to unlock the NASB module<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; in<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Bibletime? Thank you for your dedication to this invaluable<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; project -<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; John<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;      &gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;      &gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;      &gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;      &gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;     bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt;     <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt;     <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; bt-devel mailing list<br>
&gt;&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; bt-devel mailing list<br>
&gt;&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt;&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; bt-devel mailing list<br>
&gt; <a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
&gt; <a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
&gt; <br>
<br>
<br>
_______________________________________________<br>
bt-devel mailing list<br>
<a href="mailto:bt-devel@crosswire.org" target="_blank">bt-devel@crosswire.org</a><br>
<a href="http://www.crosswire.org/mailman/listinfo/bt-devel" rel="noreferrer" target="_blank">http://www.crosswire.org/mailman/listinfo/bt-devel</a><br>
</blockquote></div>