[tahoe-dev] [tahoe-lafs] #1200: package up Brian's New Visualization of immutable download
tahoe-lafs
trac at tahoe-lafs.org
Sat Nov 27 13:17:56 UTC 2010
#1200: package up Brian's New Visualization of immutable download
-----------------------------+----------------------------------------------
Reporter: zooko | Owner: nobody
Type: enhancement | Status: new
Priority: major | Milestone: 1.9.0
Component: unknown | Version: 1.8β
Resolution: | Keywords: unfinished-business immutable download statistics performance transparency
Launchpad Bug: |
-----------------------------+----------------------------------------------
Comment (by gdt):
I'd like to suggest stepping back from the "python is special" view and
consider how the rest of the open source world deals with dependencies.
That said, I realize there is a desire to be able to download a tahoe
tarball, unpack it, type something, and end up running. I believe that
for any popular program almost everyone runs it from a packaging system.
So for development and evangelizing, easy build from source tarball is
important, but for eventual widespread success, packaging systems are
crucial.
Right now we seem to have "build" and "install" steps, but build isn't
really build - it's fetch/build dependencies. And install runs the
python compiler in addition to copying to DESTDIR. From a packaging
system viewpoint, automatic dependency fetching is a problem to be
disabled. So I'd like to suggest a new 'dependencies' setup.py target
that obtains all missing dependencies, that build compile .py but not
fetch dependencies or install, and that install just copy to DESTDIR.
One obstacle to this approach is that some programs are written in
languages that appear to have a tradition that people manually deal with
files. It's obvious to me :-) that javascript libraries should come in a
tarball with a configure script, be given a --prefix, and get installed
into $PREFIX/share/javascript/foo/bar.js, from which other programs that
need them can obtain them. Probably the build step (typing make) in the
js package would run some program to convert from source to minified form,
and make install would then install both. Then a "binary package" of the
javascript program can be distributed, and be a dependency in packaging
systems. (I find it odd that the javascript community hasn't done this,
but java seems similar in the expectation that individuals who want to use
programs get jar files and type 'java foo.jar' to run them.) So one step
would be to package up the javascript code first.
The other obstacle is complexity. As tahoe depends on something new, code
to download and build those new things (presumably for use within the
source tree, rather than installed) needs to be written. For a few
javascript files, that might be simple enough to not be an issue.
Essentially I'm arguing that a "./setup.py dependencies" step is a
(reasonable and helpful) accomodation for people wanting to use tahoe
without the dependencies already installed, and that the eventual large-
scale approach would be to have dependencies already.
Another option is to adopt the packaging-system-centric notions where it's
reasonably easy (GNU/Linux, pkgsrc, etc.) and to provide a tarball of
tahoe-dependencies that has things like the js libs. Those tarballs
could then be built for releases, but not stored in the version-control
system.
--
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1200#comment:9>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-dev
mailing list