We did start a conversation about building a package manager, but have not had anyone champion this as a project. I admit to being a little lazy about this due to including so much code in the main repository.
I admit I have not read into detail the above specification, but I think that an approach in the style of Metacello (from the SmallTalk community) would be simple to develop and fit Factor nicely.
There need not be changes to the way vocabularies are loaded: instead one can make some words that change the vocab roots according to some configuration files. One could have a FACTOR-ROOT/cache directory in addition to work, core, and extras, where packages are arranged by version. Then some machinery could set the right vocab-roots based on a specification.
One would need
- some words to create structure that describe packages (Maven-like). This would allow to declaratively say that my project, at version x, consists of this and that vocabulary, and relies on project foo at version y and project bar at version z
- some words to automate fetching the dependencies of my project recursively from common repositories (one could start with github)
- a word to set the vocab roots according to my dependencies
Ideally, I would like to write a configuration file that lists my dependencies and then do something like
USE: my project.config
myconfig set-deps
On top of this, one could develop GUI tools to automate writing specification files, or even suggesting officially endorsed packages. See for instance the GUI tools in Pharo for a great example of this.
The advantage would be that we would not have any changes to the way vocabularies are loaded, and the change would be much more incremental
andreaferretti|11 years ago
There need not be changes to the way vocabularies are loaded: instead one can make some words that change the vocab roots according to some configuration files. One could have a FACTOR-ROOT/cache directory in addition to work, core, and extras, where packages are arranged by version. Then some machinery could set the right vocab-roots based on a specification.
One would need
- some words to create structure that describe packages (Maven-like). This would allow to declaratively say that my project, at version x, consists of this and that vocabulary, and relies on project foo at version y and project bar at version z
- some words to automate fetching the dependencies of my project recursively from common repositories (one could start with github)
- a word to set the vocab roots according to my dependencies
Ideally, I would like to write a configuration file that lists my dependencies and then do something like
On top of this, one could develop GUI tools to automate writing specification files, or even suggesting officially endorsed packages. See for instance the GUI tools in Pharo for a great example of this.The advantage would be that we would not have any changes to the way vocabularies are loaded, and the change would be much more incremental
andreaferretti|11 years ago