On Aug 15, 2009, at 3:06 AM, Vincent Manis wrote:

1. Installing a library (and its dependencies) should be as `no- brain' as possible, even if that limits the power of the library manager. Ideally it should be something like

  schemelib --install munglib --atleast 8.02

to install version 8.02 or better of munglib, along with its dependencies

Yes.

(and this should be in a GUI version as well).

Future work.

I'm not saying that there should be a way to trick the library manager into doing the obvious thing, just that it should happen automatically.

Similarly, local library directories should be managed in an appropriate way, considering that many Schemers would want personal libraries, rather than system-wide ones.

Yes.  To start, we assume a single user-specific root.

Ideally, the library manager should allow users to forget about manipulating environment variables completely.

After an initial install, yes. (you still need to set up where the root is, and probably add it to your library path or whatever your scheme implementation uses)

A user should have to read not more than one screenful of text to get far enough to set up a local library directory (that works with Ikarus and/or other Schemes) and start installing libraries. (The library manager might well require a 100-page manual for full use; I just want this use case to be simple and straightforward.)

Yes.

2. The library manager should be bundled with the Scheme system, so that users don't have to do anything to get it going. The bundle should include programs such as wget, curl, bazaar, and/or git, whatever is needed to make everything work.

No. The library manager is a separate entity that's independent of any Scheme implementation. You only need one library manager to use. If each of Ikarus, Larceny, PLT, Ypsilon, IronScheme, Mosh, etc. installs all the tools, it would be a mess.

3. While I am not a great fan of Microsoft, getting things running on Windows is always a good thing; I even think native Windows Ikarus would be a good thing :-). To this end, there's no reason why one should use Unix-specific things when a more generic approach is almost as good. For example, zip doesn't compress as much as gzip or bzip2, but it's almost as good. Similarly, symbolic links don't work on Windows, so we can live without them.

I agree that we should not rule out any platform by design. There will be compatibility bugs that we have to sort out.

4. Versioning seems to be a horrible issue everywhere I've worked. The main problem is that if you get too specific, then you are basically defining a software process, but if you get too vague, then the numbers become meaningless. I would suggest a somewhat simple versioning scheme that people can understand and apply, rather that (a) a very complex system, or (b) something that defines only the syntax but not the semantics of version numbers.

I agree in principle. It is, however, a horrible issue that's intrinsic to software itself. We should either go with something and live with the consequences, or ignore versioning completely for now and make it future work. Ignoring it for the time being may not be the worst thing, since we have only a few libraries and all of them are being actively developed. So, we can just say "give me the latest xitomatl" and it should work for the time being.

5. Documentation is not optional. Some relatively simple documentation strategy ought to be part of the package definition, so that a user can do
  schemelib --viewdoc munglib
to see the documentation on this library. HTML is a fine standard for documentation here.

Future work.

6. The packaging job should be simple rather than complex. I would go for a format where the top level of a package contains the metadata and documentation, and then there's a directory containing the actual library files. Thus for munglib, the top level has README, COPYING, MANIFEST, and DOCUMENTATION.html, and then there's a munglib directory that contains the actual Scheme code.

I think we're all in agreement on the broad lines here. It's all in the details.

7. Having multiple back ends sounds nice in principle (and the Launchpad versus GitHub arguments can be a lot of fun :-), but think of the version skew when a library maintainer decides to move the authoritative version of something from one repository to another. Things like CPAN and CTAN work because everything is mirrored. Failing that, I can easily see users becoming hopelessly confused about where to get a specific package. I would prefer to keep that part as simple as possible.

I'd ideally like to see a library manager that works essentially unchanged (though there might be system-specific code) on as many R6RS systems as possible.

The library manager should interact with repositories. Repositories fetch, construct, and mirror packages from different sources. So, the manager itself need not deal with this complexity.

Aziz,,,

Reply via email to