18. Invention, Intellectual Property and Income - Week 18¶
18.1. Assignments¶
Invention, Intellectual Property and Income
individual assignment
develop a plan for dissemination of your final project
Prepare drafts of your summary slide (presentation.png, 1920x1080) and video clip (presentation.mp4, 1080p HTML5, < ~minute, < ~25 MB) and put them in your website’s root directory
18.2. Individual Assignment¶
Final Projects Source Files and License
18.2.1. Licensing¶
I want my project to be an open-source non-profit project for people to build it themself or modify and improve the original project.
Beforehand I knew some software licenses and the one I liked the most was the GPL because of the principles they stand for (Quick Guide)
But I first was unsure if I could apply it to hardware design files (KiCAD, FreeCAD) and considered a hybrid license with the CC BY-NC-SA 4.0
License. I found this license with the chooser recommended by Ferdi.
(Here I also was a bit unsure about the NC
part because I liked Prusas commercialisation approach of providing part-sets and optionally pre-build version of the open source printer)
I found this and this article comparing them (also found the GNU FDL GNU license for documentation files).
Hint
Creative Comments(CC) Abbreviations
Attribution Required (BY)
Credit must be given to you, the creator.
Commercial Use Not Allowed (NC/NonCommercial)
Only noncommercial use of your work is permitted. Noncommercial means not primarily intended for or directed towards commercial advantage or monetary compensation.
Distributed on Same Terms (SA/ShareAlike)
Adaptations must be shared under the same terms.
Modifying Not Allowed (ND/NoDerivatives)
No derivatives or adaptations of your work are permitted.
But since I liked Prusas approach, I looked into which license they used on the Prusa design files and they actually used GPLv2 :D.
But this is actually not the current version and maybe this was an actual decision Prusa made so I looked up some comparison:
GPLv2 vs GPLv3
This link also highlight the differences between GPLv2 and GPLv3 Contents
GPLv3 of June 29, 2007 contains the basic intent of GPLv2 and is an Open Source license with a strict copyleft (→ What types of licenses are there for Open Source software, and how do they differ?) However, the language of the license text was strongly amended and is much more comprehensive in response to technical and legal changes and international license exchange.
The new license version contains a series of clauses that address questions that were not or were only insufficiently covered in version 2 of the GPL. The most important new regulations are as follows:
a) GPLv3 contains compatibility regulations that make it easier than before to combine GPL code with code that was published under different licenses (→ What is license compatibility?). This concerns in particular code under Apache license v. 2.0.
b) Regulations concerning digital rights management were inserted to keep GPL software from being changed at will because users appealed to the legal regulations to be protected by technical protective measures (such as the DMCA or copyright directive). The effectiveness in practice of the contractual regulations in the GPL has yet to be seen.
c) The GPLv3 contains an explicit patent license, according to which people who license a program under the GPL license both copyrights as well as patents to the extent that this is necessary to use the code licensed by them. A comprehensive patent license is not thereby granted. Furthermore, the new patent clause attempts to protect the user from the consequences of agreements between patent owners and licensees of the GPL that only benefit some of the licensees (corresponding to the Microsoft/Novell deal). The licensees are required to ensure that every user enjoys such advantages (patent license or release from claims), or that no one can profit from them.
d) In contrast to the GPLv2, the GPLv3 clearly states that there is no requirement to disclose the source code in an ASP use of GPL programs as long as a copy of the software is not sent to the client. If the copyleft effect is to be extended to ASP use (→ When does independently developed software have to be licensed under the GPL?), the Affero General Public License, Version 3 (AGPL) must be applied that only differs from the GPLv3 in this regard.
TLDR;
The page linked to in another answer is a good source, but a lot to read. Here is a short list of some the major differences:
internationalization: they used new terminology, rather than using language tied to US legal concepts
patents: they specifically address patents (including the Microsoft/Novell issue noted in another answer)
“Tivo-ization”: they address the restrictions (like Tivo’s) in consumer products that take away, through hardware, the ability to modify the software
DRM: they address digital rights management (which they call digital restrictions management)
compatibility: they addressed compatibility with some other open source licenses
termination: they addressed specifically what happens if the license is violated and the cure of violations
The newer version sounds good to my but I don’t have any plan anyway -.-
So I’ve chosen GPLv3 for my Final Project.
18.2.2. Dissemination¶
My first ideas where to share it on Reddit and maybe add a blog post on my planed website but I wanted to know more approaches to promote an open-source, non-commercial project, so I asked a chatbot for some ideas:
Note
Generated with deepseek-r1:14b (self-hosted) with following prompt:
What are good ways to disseminate an open source GPL non commercial project?
To effectively disseminate your open-source GPL non-commercial project, follow this structured approach:
Create Comprehensive Documentation
Develop clear and detailed documentation explaining the project’s purpose, features, and usage. Include a README file that guides users through installation, configuration, and contribution processes.
Leverage GitHub Effectively
Host your project on GitHub with a well-organized repository, including tags, releases, and meaningful commit messages.
Maintain an Issues section to track bugs and feature requests, fostering community engagement.
Promote Through Writing
Write blog posts about your project, focusing on its benefits and unique features. Publish these on platforms like Medium or tech-focused blogs for broader reach.
Engage with Social Media
Share project updates and milestones on Twitter and LinkedIn to connect with developers and professionals.
Actively engage by replying to tweets and participating in relevant discussions.
Build a Community Presence
Post on Reddit’s r/opensource, Stack Overflow, and other forums to raise awareness and encourage contributions.
Establish a presence on GitHub Discussions to foster community interactions.
Encourage Contributions
Offer bug bounties and create a detailed contributor guide to lower the barrier for new contributors.
Highlight early contributors in releases to motivate participation.
Collaborate with Other Projects
Partner with related open-source projects to increase visibility and explore integrations or collaborations.
Present at Events
Showcase your project at conferences, meetups, and hackathons through talks and workshops to reach new audiences.
Develop an Ecosystem
Create plugins, integrations, or forks of related projects to expand the project’s appeal and attract more contributors.
Ensure Transparency and Communication
Regularly update a blog or newsletter with project news, roadmaps, and community spotlights.
Use platforms like GitHub Issues for transparent discussions and feedback.
Seek Partnerships
Approach companies that align with your project’s goals for potential sponsorships or integrations.
Build a Dedicated Website
Create a website with download links, documentation, and contribution information to serve as a central hub.
Consider Localization and Accessibility
Translate documentation into multiple languages and offer tutorials in various formats to broaden reach.
Utilize Video Content
Produce YouTube videos demonstrating the project’s features and usage to engage visual learners.
Optimize for SEO
Ensure your website and blog content use relevant keywords to improve search engine visibility.
Foster a Community Space
Set up a Slack or Discord channel for discussions, fostering collaboration and community building.
By systematically implementing these strategies, you can effectively disseminate your project, build a strong community, and ensure its success in the open-source ecosystem.
Many cool Ideas, I would do following:
Create a good repo with future potential to understand and improve the project
Try to keep the project active and easily maintainable/extensible
Present the project in Hackspaces/ on events like CCC
Upload a copy on other Git-Hosts (like Github/Gitlab)
Create blog-posts, Reddit posts, Dedicated side (this would be a bit overkill)
Maybe share on the Fediverse/Mastodon
18.2.3. Future Opportunities¶
For the future, following would be possible to extend the project:
add different midi-modules on the back of the keyboard with e.g.: knobs, slider, etc.
implement my first plan with an LED display and floating notes on the back of the keyboard
add the velocity sensitivity to the keys (so you get different intensities for the key values)
improve the mechanics and production process
And to make them probable I’ve chosen the GPL licence, try to keep the project active and going to document it well, so other willing to contribute don’t have a hard time getting started.