-
Notifications
You must be signed in to change notification settings - Fork 12
Brainstorming
Some 2.0 ideas. I'm not terribly worried about maintaining compatibility: what have we learned and how can we make this better?
The most complicated part of setting up Smackage currently is setting the $SMACKAGE path. Can we make this so that it is only necessary for developers: by knowing, based on the .smackspec file, what .mlb or .cm files need to have
This would also make it possible for a project to do self-contained releases (put the whole smackage library in $PROJECT_HOME/lib
, and rewrite $PROJECT_HOME/sources.cm
to refer to libraries in that directory, rewrite the projects to refer to each other). This would benefit Smackage by allowing Smackage to use libraries distributed via Smackage in a self-contained, bootstrapping Smackage release.
Smackage is currently trying to be both cabal and cabal-install. It is only good at being cabal-install. Could we separate out the abstract-over-multiple-SML-compilers into a separate companion program, which I will speculatively call "smaker"? Most or all of the smackspec might go in this tool (foo.smackspec -> foo.smaker?), and people that want to hack on how-do-I-wrap-C-libraries sorts of nonsense could work on smaker project, making Smackage more like what it was originally intended to be: a way to write SML projects that refer to other SML projects in an extensible way, resolving dependencies automatically. If you want to download SML applications and build them, that's smaker's problem; if a package has smaker hooks, then smackage calls smaker's library to install after getting the code onto your system.
The git-based approach is fine for <20 packages, but it is not the right way to scale: we need to develop a way of maintaining packages. This is ideally also a platform for distributing documentation about code; I'm not sure that SMLDoc is in a position to fill this role, though it's okay. I created this documentation once with some version of something called CMDoc - http://typesafety.net/cmlib/ - the SEQUENCE signature has comments and everything - but I haven't been able to recreate this! Erg.