Just a bit of history regarding JSword. We have an FTP mechanism. We
moved it to limbo, but can put it back at any time, with little
effort. It worked just fine on Windows XP until a particular patch
came out. After that, FTP was blocked by Windows XP. But we already
had complaints that FTP did not work through proxies and was blocked
by some firewalls.
At this point we added HTTP as a second option, with FTP enabled by
default. This did not reduce the number of problem reports regarding
downloading modules, except perhaps a little.
When we first implemented HTTP, we tried to go after the directory
listing, but during developing it some server upgrade changed it. So
we went after the zips instead.
Occasionally, we get a problem report that some module is not
available that is listed and this is always due to JSword not doing
things in a proper way. But the number of problem reports is far fewer
with this mechanism than with FTP. In fact it is almost none.
BTW, I'm not against FTP nor adding it back to JSword, if we can work
around the problems. Right now the SWORD answer to proxy and firewall
problems is to download the zip and manually install it. I don't think
this is a good answer.
Troy, I can put the FTP package back and I can see if Apache's
implementation is any better. But we would still want to offer http as
a solution to those problems which cannot be solved. And we would not
want to increase the number of reported problems, so we would have to
be smarter about it than we were before.
I understand the rational for the current mechanism that any
installation of modules can be used as a repository. Today a module
consists of a conf file that gives the path to where the constituent
files can be found and it consists of those files.
I'd like to suggest that we add another file or modify the conf to
give a manifest of that content. Then there would be no need for an
http parse. The ftp parse would continue to work just as well as it
always did, but it would work just as well for it to use the manifest.
The perl script I mentioned creates a single manifest file much as the
old conf listed all the modules, but it could be made to create
separate info or insert it to a conf file. My script produces far more
info in it than is necessary for a manifest.
This would be in keeping with the notion of a installation of modules
without cache can be used as a repository.
Working together in Christ,
DM
On May 14, 2009, at 11:13 PM, Daniel Owens wrote:
Thanks for your assurances, Matthew and Troy. Just to make sure I've
understood, FTP was chosen initially because you can download
multiple files more easily, which is why JSword requires zipped
modules when downloading over HTTP. Adding the ability to download
from a working SWORD library over HTTP requires a bit more work in
the engine so that all front ends support it. Once that is added to
the engine and front ends support it, then a repository via HTTP
will likely just need the mods.d and modules folders with modules
installed just like an FTP server, right? Thanks for bearing with
me. If I understand you correctly, this will solve the anonymous FTP
hangup I ran into while not adding to the list of things content
providers must do. Sounds good to me.
Daniel
Troy A. Griffitts wrote:
Thank Matthew. Yes Daniel, we have had an established standard for
installing modules for quite some time which uses FTP for remote
module installation. I would like all of our client applications
to support all of our officially supported install methods.
The reason for this is so we can assure a content provider that
their content will be available to 'SWORD applications' if they:
x y z
Currently, we can say this, but we have to add a disclaimer:
"JSword based apps will not work unless you also zip up all of your
modules and make these zips available as HTTP downloads."
I wish for this disclaimer to shrink, not grow, so I am trying to
herd in the development efforts and ask all frontend developers to
ensure that their applications at least support the already
longstanding installation policies in place.
Now concerning new methods, like HTTP access. Matthew is correct
that we hope to add support for this in the 1.6.x branch of the
engine. At that time, we will ask all frontend developers to
expose this functionality as well so we can then give content
creators one more option (CD, FTP, ... + HTTP) to distribute their
content.
The details of how this will be implemented are being discussed,
but whether we SHOULD implement HTTP access, I think is unanimous.
I would like for this be implemented in a which doesn't depend on
scripts for minimum HTTP support for a repository. Following the
same theme as other methods: "Just expose your working SWORD module
library via HTTP."
This is difficult to implement for us, but we can do it once in C++
and have all frontends get the new functionality, and then all
content providers have an easy means to expose content.
On top of that, we may add what I've been labeling as CACHING /
OPTIMIZATION mechanisms to make downloading quicker, but these will
require the content providers be more savvy, possibly implement
cron jobs to zip up folders, etc. But these mechanisms will be
optional for the content providers. They will not need to do these
things to have a valid repository.
Imagine using your favourite SWORD application installer to install
a library of all the materials your ministry uses to reach your
people group. Everything is just how you want it on your computer.
Now you can copy it to a CD as-is, and it is a valid installation
source to any other SWORD frontend. You can pass that CD to a
church with a website and they can copy it as-is to their website
and serve the entire library with SWORDweb. They can point an FTP
server to it as-is, and it becomes a valid remote installation
source for their congregation or other people working in the same
domain and running any SWORD client,
...
and in the future, they hopefully will be able to allow HTTP access
to the same location as-is and it becomes a valid remote
installation source.
The zip scripts and ls-LR files are all fine to help improve speed
and reduce processor power, but I am willing to bite the bullet and
do the work to make things functional without them, if it keeps
this easy to propagate scenario available.
Am I helping explain my reasoning?
-Troy.
Matthew Talbert wrote:
I think I caught your drift with the caps in your previous
message, but it's
a bit discouraging and doesn't yet answer the problem I raised
awhile back.
To recap, because of security concerns with having anonymous FTP
access, one
group I work with effectively denied us the ability to set up a
repository.
If HTTP is not required of front-ends, then you MUST have an FTP
repository
to get consistent coverage among the front-ends. I'm not hearing
a clear
argument for why HTTP shouldn't become the standard except that
"Our scripts
for generating zipped modules doesn't work reliably" and "it's
hard to
create a list of modules from different formats." Are both of these
insurmountable?
I'm trying to understand why FTP is the preferred method when
HTTP is a
lower common denominator between providers. Could you explain
that to me?
My goal isn't to push an agenda but find a way to set up a
repository that
will work with all front-ends but does not use anonymous FTP.
Mildly discouraged,
Daniel
I don't think there's any need for discouragement Daniel. I believe
what Troy is saying is that *frontends* should support FTP. He's
also
saying that he intends to add support for HTTP in the engine. At
that
point, both FTP and HTTP repositories will be possible and should be
supported by all frontends. So the requirement isn't on the
repositories being a certain way, but frontends being able to handle
both types as a common denominator. Troy can correct me if I'm
misunderstanding him.
I will be happy to see HTTP support for installmgr.
One additional request that I have would be to allow installing a
single zip from somewhere on the file system. Will this be possible
with the proposed implementation? I'm willing to help with this,
as I
want it in Xiphos and was intending to implement it there, but it
would be better to have in the library.
Matthew
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page