Closed daveyarwood closed 8 years ago
I'm making great progress on this so far. I think it should be done soon!
So far:
I've extracted out the following components into separate repos:
I haven't yet pushed these repos to GitHub, but will do it soon.
This repo (alda-lang/alda) will continue to exist and function as the "landing page" for the Alda project on GitHub. It will include docs, the same user-friendly README we have now, the script to install the FluidR3 soundfont, and releases.
So, the end user experience will be exactly the same as it is now, it's just that the source code for all the components will now live in separate, focused repos.
build.boot
file.boot build -o $output_directory
like we do now.TODO:
[x] See if we can break alda-core up further.
There is currently a lot of stuff in the alda-core repo. I realized that the alda.lisp and alda.parser components are fairly intertwined, so at the minimum alda-core needs to contain both of those things.
play!
function that expects a fully realized Alda score map.alda.now depends on both alda.sound and alda.lisp -- it's sort of a user-friendly bridge between them. I'm thinking maybe it should be a part of the alda.sound project, which could have an alda-core development-only dependency.
So then, to use Alda in a Clojure project, you would want to include the alda/core
and alda/sound-engine-clj
dependencies, and use the alda.lisp
and alda.now
namespaces in your code like you do now.
I think alda.sound
could still function without alda.lisp
potentially, e.g. if somebody wanted to implement an alternate parser/compiler and pass the result to alda.sound/play!
.
For now, I think we can extract it into an alda-repl-clj repo with dev dependencies on alda-core and alda-sound-engine-clj.
The main project can then include alda/repl-clj
as a dependency until we implement the REPL functionality in the Alda client.
At that point, we can remove the alda/repl-clj
dependency from the main project and mark the alda-repl-clj repo as deprecated.
3 more issues to go!
Also I'd imagine that releases would still be pushed and available for download here; on the central project.
Yep, that's exactly what we're doing!
The "main repo" (i.e. this one) now functions as a landing page, a place to find documentation, and a place to get the latest release.
Would #50 go under main or one of the other repos?
I was wondering about that... it doesn't really fit under any of the other repos.
The closest match would be the website repo. I'll probably move it there.
Done!! 🎆 🎆 🎆
Right now, a handful of different things are lumped into this one repo (alda-lang/alda):
I wonder if it might be a better idea to split these things out into their own projects within the alda-lang org, so we can focus on developing them separately. We can deploy artifacts to Clojars, and the other projects can pull them down as dependencies.
A nice benefit of this is that Clojure programmers can play around with using Alda as a library without needing to pull in the sound-making dependencies if they don't want to. The "core library" component of Alda ought to be very light. I would personally be interested in playing around with the Alda core library + Overtone as a sound generator, just for fun.
This will also make it easier to experiment with alternate implementations (ClojureScript, etc.) of the server, client, sound engine, etc.
Usefully, waffle.io allows you to track multiple issues on one board, so we can still get a nice "big picture" visual of the development of the Alda project as a whole.
It will probably be a while before I get around to making this change, but until then, I thought I'd get this idea out there and let it marinate. I'm very curious to hear other developers' thoughts on this.