GNU Ensemble
Abstract: Can you explain the whole project and its expected outcome (limit 1200 chars)
Ensemble is a web platform for collaboration between music composers and performers with the goal of creating free cultural works.
Composers share their compositions in musical notation while performers bring them to life. One could say that bands can be formed irrespective of their location, or possession of certain musical instruments.
Users can start new music projects, that are instances of GNU Ensemble, or join and contribute existing projects.
A new project gets instantiated once a name, a musical genre, a free license and a list of instruments are chosen for the future composition. The files can then be uploaded - pdf, musicxml or lilypond in the case of musical notation; or users can start with bare audiotracks and upload flac, mp3 and other popular free audio formats. Users can explicitly request others users to compose new tracks, rather over existing tracks or you can ask to just play and record what you have. Users can also decide how much can the other project member change their initial ideas. For instance, if a certain piece can be improvised or if it needs to be played strictly as it was composed.
The outcome of this project is a federated network of web resources with free music cultural works created on a collaborative effort basis.
Have you been involved with projects or organisations relevant to this project before?
And if so, can you tell us a bit about your contributions?
I have experience in developing proprietary web services. When it comes to contributing to free software communities I have done small contributions and I'm eager to engage more with the community.
I'm committed to free software and I run GNU Guix on my Librebooted Thinkpad. I have contributed 2 packages to Guix.
Requested amount
10000€
Explain what the requested budget will be used for?
Does the project have other funding sources, both past and present?
This project has never received any funding.
The budget will be used for hosting the first instance (buying a domain name, a server and building the infrastructure). Also I expect to dedicate at least 6 months of full concentration on this project.
A small part of the budget will be spent on a logo.
Compare your own project with existing or historical efforts.
- Mutopia is a place for hosting free licensed and public domain sheet
music. While GNU Emsemble may seem related, it actually focus in on creating new music rather than sharing pieces of music.
https://www.mutopiaproject.org/
- Musescore's website. It allows you to host your pieces made in
Musescore and enables playback. It doesn't use libre JavaScript and doesn't encourage the use of free software licenses. I want to support Musescore files in this project.
- Most collaboration tools are either non free or limited
in some way or another. For example, there's a web service called Kompoz but users can only collaborate by sharing recorded audio files. This project promotes collaboration both in the process of composition and performance.
- GNU Lilypond is a great Scheme-like language which generates
music sheets from text format to PDF, making it suitable for collaboration. Its syntax is clearer than XML-like MusicXML. This project will support GNU Lilypond.
What are significant technical challenges you expect to solve during the project, if any?
Creating a federated network will be a challenge. Also, a version control system will have to be implemented for music project contributions, so that users will be able to track the changes.
I plan to use GNU Guix for development and deployment, which can be challenging due to the fact it's still a relatively new tool.
Also there's this hard dilemma regarding JavaScript. I want to avoid using it, but that can cost some user comfort.
Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes?
I will use Python as the main language for the web server realization, and OCaml for parsers and tools that need to be compiled. Python is a popular language choice for this kind of task, thus I think it's the right choice.
I will use Flask, some of Flask's extensions, SQLAlchemy and PostgreSQL. I will use GNU Guix for development and deployment; a virtual environment will be created for development and deployments will either happen in a generated docker container or using Guix's deployment system. (https://guix.gnu.org/blog/2019/towards-guix-for-devops/)
SourceHut (https://sr.ht/) will be used as a platform for hosting the git repository, providing mailing lists and bug tracker.
Probably I will need Kubernetes and Devops tools.
For promoting I will record series of screencasts videos which will then be uploaded on PeerTube.
English and Russian versions of this project will provided by me. Hopefully the community will help me to support as many languages as possible.
I will be the only developer, but anyone is welcome to contribute as the repository is available on my SourceHut account https://git.sr.ht/~w96k/
After some functionality will be in place, I would like to add this project to the list of GNU software to gain interest and make sure it will get maintenance.