jamulussoftware / jamulus

Jamulus enables musicians to perform real-time jam sessions over the internet.
https://jamulus.io
Other
1k stars 224 forks source link

Jamulus project/source code guideline #596

Closed corrados closed 3 years ago

corrados commented 4 years ago

Jamulus started as a fun project several years ago to enable online band rehearsals for small groups of musicians. Since the pandemic the focus of this project has changed. We now have a lot more active users/servers and new requrements like supporting large ensambles/choirs or stream jam sessions (Worldjam). Also a lot of developers have contributed source code or added support for translation. So the project changed to a community project.

Right now I am the only one has write access to the official Git repo. As we now have an increasing number of pull requests and feature requests, the project management and source code integration starts to require too much time for me. So it makes sense to get other developers on board. I started with adding Peter (pljones) who has supported the Jamulus project for a long time.

If a project has more than just one project manager, it makes sense to define guidelines/rules for the project which I want to do in this issue. Here is how I have managed the Jamulus project so far:

1) STABILITY!!! This is by far the most important requirement for the Jamulus software. Much much more importanat than any new feature. Nothing is more frustrating than running a headless Jamulus server and from time to time it just crashes/disappears from the server list. It is particularily important for usecases like the Worldjam. Imagine the server or one client would crash during a live jam. That is the reason I am very caucious with changes to the core components of Jamulus.

2) I prefer the Keep it Simple and Stupid and Do One Thing and Do It Well principles. If a software has too many features, it is hard to keep everything consistent and the tests for stability and correct functionality takes a lot of time. So too many features increase the maintainence work and also risk the stability. Therefore for some functionality like "finding musicians/social functions" I prefer that this is managed by external tools like a website.

3) Focus on what is the strenght of the Jamulus software and improve that. There are many other solutions for realtime online jamming available. But it seems Jamulus with its client/server system and minimalistic GUI is kind of unique.

4) Source code consistency. I very much try to keep the source code "way of coding" and "code style" consistent. That makes understanding and maintaining the code much easier.

5) Jamulus is free Jamulus is Open Source and the usage shall be free for everyone. The barriers to use Jamulus should be as low as possible to give everyone the chance to try it out and have fun. The server lists and the registered servers are intended for everyone to find a place to jam together, find new friends, have fun and maybe create a band or even a community. It is not desired to add any password protection to Jamulus.

ann0see commented 4 years ago

Source code consistency

Good point. Do you follow a specific (official) style or a style guide? I'd suggest to add a file named something like "Contributing" which explains how to contribute and a link from https://sourceforge.net/p/llcon/discussion/developerforum/thread/69f1ecfd90/#811f to this file.

corrados commented 4 years ago

I just added the section "Jamulus is free" in my initial post.

Erioldoesdesign commented 3 years ago

Hey there! do you have any thoughts/plans for designer contributions? from a UI, UX, Usertesting/research or generally, visual pov? curious to see how I can support a designer that wants to contribute :)

ann0see commented 3 years ago

@Erioldoesdesign

@geheimerEichkater created a lot of images lately and I did a lot of Webdesign (jamulus.io). I think Jamulus could benefit from a facelift. Could you please open a separate issue on that?

jdrage commented 3 years ago

Trying to set up QT for building on Windows. It says no suitable kits are available. "Desktop" is in the list, but the checkbox is disabled. Tried changing a few of the settings, to no avail. Any tips?

ann0see commented 3 years ago

@jdrage can you open a new issue on this with a screenshot of Qt installer? This should be possible to solve.

jdrage commented 3 years ago

@ann0see Thanks, I'm sure it's user error, but the docs don't have much to go on. It appears that Qt is missing a C++ compiler. It autodetects Clang for C. I also tried manually adding Clang for C++ but that changes the warning to a red (!). I looked in setup for an additional component that might help but I didn't find any good candidates. The version of Qt Creator I've got is 4.14.0 with CMake 3.19.0 64-bit.

jdrage commented 3 years ago

Oh I'm just finding the qt-installer-windows.qs which seems to indicate I have the wrong version of Qt. Will give that a whirl.

ann0see commented 3 years ago

Ok. I hope this solves your problem. I use Visual Studio Build tools 2019 which works for me.

jdrage commented 3 years ago

Oh, I didn't realize I had to provide my own compiler. 😄 Would it be unreasonable to try to wrap this in a VS project?

ann0see commented 3 years ago

I think you can just open the Jamulus.pro file with QT Creator?

The Visual Studio project should be built automatically if you run deploy_windows.bat. But you'll need Visual Studio 2015 or if you use the new installer and installation script, you can try the powershell script from here: https://github.com/corrados/jamulus/tree/improve_win_ci/windows

have a look at #792

jdrage commented 3 years ago

Installing VS 2019 worked for me. I got it to build using the Qt project. My suggestion was more about the need to have both Qt and VS installed to do development on Windows, when it seems like VS could fill the need by itself. I might take a crack at this when my Qt trial license expires in a few days.

ann0see commented 3 years ago

Not totally sure about your answer. Could you please open an issue here so that others see your issue?

You can user Qt open source which is free. No license or similar needed.

jdrage commented 3 years ago

I seem to have installed the commercial version. I'll figure it out. Thanks.