License Selection
Requirements
- Accessible to all FabLabs and similar organisations.
- Modifications and derivitives should be encouraged.
- Any of those modifications should be contributed back to the community.
- Pre-built dispenser modules should be able to be sold commercially.
Hardware & Software
Applying licenses to hardware is, at the very least, tricky. In many jurisdictions copyright law simply doesnt apply to creating a physical object from a drawing or model, these complexities have historically caused issue for many open hardware projects that have sought to license their hardware under an existing free
I have therefore opted to use 2 separate licenses, one for the software component and one for the hardware designs.
Selected Licenses
Software
For the software component of my project I have to consider my use of libraries, the main library I am using for the REST server component is Flask which is licensed under the 3-Clause BSD License (Often referred to as the Modified BSD License). The Modified BSD license is amongst the most permissive however it does not have any requirement for sharing modifications.
To ensure that modifications are shared I have opted to license the software component of my project under the GNU General Purpose License v3.0 (GPLv3). The Free Software Foundation lists the Modified BSD license as compatible with the GPLv3.
Hardware
Hardware is more complex, as it can be divided into 2 separate components, the design files that can be covered by copyright in most jurisdictions and the hardware itself which cannot in many. As my interest in the project is to see it as widely disseminated as possible and as useful as possible I have opted to simply release the hardware designs to the public domain.
The Public Domain is not however an accepted legal concept in all jurisdictions, so to release the rights to the hardware in those jurisdictions I have chosen to also license the hardware design files under the CC0 license which is intended to provide Public Domain-like functionality in all jurisdictions.
Dissemination
Phase 1 - Alpha & Beta Testing
My first task in disseminating my project will be to ensure that it's in a state that is actually usable to the target market, this means a controlled initial testing release. To do this I intend to leverage the FabLab network, finding some volunteers with the patience to test out the first iteration should not be particularly difficult.
Phase 2 - Public Release
The design files and code will be available immediately but I will not attempt to advertise or widely deploy the system until after the limited test mentioned above. I don't anticipate this being a point in time, rather I see it as a gradual transition as the system improves during the beta test and more users are attracted, eventually I will have to call it 1.0 but I don't see that happening for 18-24 months.
Phase 3 - Maintenance and Improvement
Ultimately the bugs will be settled and it comes time for improving and maintaining the system, I anticipate a lot of modules will be designed during the transition from phase 2 to 3.