Since working with Ruby 'Gems' and more recently, PHP Composer 'Packages' through my web development work I've been wondering if something similar could be done with Juce modules?
I.e. a simple command line interface together with a file to keep track of modules associated with the current project (equivalent to a Gemfile or composer.json). These would usually point to Git repositories, and allow the user to specify which version they want to be installed for their project. Since a module's repositirory would also contain it's dependancies, installing a module would automatically grab its dependant modules.
The reason I'm thinking about this now is that I'm extending dRowAudio's pitch detection functionality, and rather than merging my work back into his module repository via a pull request, it feels cleaner to create a small module that has the dRowAudio library as one of its dependancies.
I would propose following the exampe of Composer, using a central .json file to define associated modules for a project. In keeping with Juce funky naming conventions it could be called... Modulate :) so we would have a modulate.json file at the root of a project.
I have a range of cunning plans along these lines, ranging from simple to wildly ambitious! Hope to be able to make something a reality before too long!
Great - let us know if we can be of help.. I would personally be happy to put a little time into something like this. I really think it could open things up for Juce developers.
Just thought of bumping this thread again.
Started using Node JS for work recently, and using the NPM (Node Package Manager) makes installing modules so easy. Working on my JUCE project I am missing the ease at which I can add functionality like this.
Getting 3rd party modules into the introjucer and making it easy to find + install them is high on our agenda..
I see a future dominated by "Juce.js" / Electron apps. Just curious to hear everyone's thoughts.
this is cool... something like a marketplace not for final products, but for libraries, components and classes to be tightly integrated in the juce development... need a class ? search it with the introjucer class search and add it to the project dependencies right away ! wonderful !
when this sweety juice will be available ? :D
I thought I saw something about this a few weeks back. Are there any plans to make some kind of module repository or database linking to module repositories?
IMO, with the more flexible and inclusive license options, making JUCE modules a) easy to create and b) easy to discover and use would really boost the community.
This is one of the things that has made Ruby (via RubyGems) and NodeJS (via npm) such a success. I think the model that CocoaPods took might be a good fit for JUCE…
I also think that it would take pressure off the JUCE team to create new features, if it was easier for the community to contribute small modules for specific components or pieces of functionality.
… maybe, as was the case with CocoaPods, it will take the community create the infrastructure for this… @jimc and myself started something but I just don’t have the time and headspace to work on it atm.
(I would use a scripting language over C++ for the module management, e.g. Ruby, NodeJS or even Python…) - @odub?
would be cool to be able to specify some urls or git repos, like you point it to:
https://github.com/kunitoki/juce-modules and the modules are visible directly, and projucer will checkout things for you
Yep, it could also be done in Projucer like that… with a database of user contributed module repo URLs, and a search facility, that would be enough.