Everything new members might want right off the bat.
Basically there are four essentials freedoms everyone should have with the software they use to do their computing:
- Freedom to use the software as you wish
- Freedom to study and modify the software
- Freedom to redistribute exact copies of the program
- Freedom to distribute modified versions of the program
So just make sure you have these freedoms with the software you use and that your users have these freedoms if you make software (whenever possible). That way you'll (generally) be doing what's best for yourself and your community.
For shorthand, we call software that respects your freedom libre, free or open source. Software that doesn't is called proprietary or closed source.
Where things get complicated is dealing with edge cases (what is your computing, what is software) and having a solid applied ethics to rest this idea on. In fact, there is a big ethics rabbit hole you can jump into on the philosophy page.
Our mission isn't complete until Miami is a libre utopia. That means everyone can be their best selves without needing to use proprietary software and great work is being done in libre software all the time.
Going all libre
These guides will sculpt you into a libre champ.
Since copyright law by default restricts users, a license is needed in order to counteract this.
There are two types: copyleft and permissive. Permissive licenses allows the user to make the software proprietary, and copyleft licenses do not. Licenses we recommend:
- Copyleft: GNU GPLv3
- Permissive: Apache
- Short and low-stakes program: Expat
- Copyleft documentation or creative work: GNU FDL or CC-BY-SA
- Permissive documentation or creative work: CC-BY or CC0
Feel free to come to a meetup or hop in the chatroom for help with licenses. It's complicated legal stuff. More information for the curious:
Buffing your skills
Get good so you can help the group (and also make all the cheddar).
Just do it! Grab some source code and start hacking. Simple guidelines for LibreMiami projects:
- Open and/or assign yourself an issue that describes the scope of your work so people know you're on it. Post updates once in a while if appropriate.
- Work in a git branch named with the issue number and a brief description.
- While you work, take care to match the established coding style. This should be in the project's docs.
- Let a maintainer know when you're done.
Non-LibreMiami projects can vary wildly on how they like work done. Some projects have entire tomes dedicated to coding guidelines. Others have no docs at all. Some projects are welcoming and others are run by total jerks. We can help you navigate all this at a meetup if there's a specific project you'd like to work on. We can also help you pick something good out.
Starting a project
Just do it! You don't have to be the best to get something amazing going. Plus, you have the rest of us cheering you on.
Here is a step-by-step guide for starting a project that you might find helpful.
Get an idea
If you already have one, great! If not you can check out the ideas page for inspiration.
Decide on motivation
Why are you starting the project? Is it to solve a problem? To learn something? For fun? Document this.
Especially if you're trying to solve a problem, see what's already out there. This can even include non-software solutions. Why are these solutions inadequate? Is there anything they get right? Can you leverage existing libre code? What problems might you run into? Document this.
At this stage you might find that there is already a really great libre solution to the problem. Maybe you decide to contribute to this project instead.
If you're not just scratching your own itch it is an excellent idea to do some proper UX research.
Pick your weapon
Decide what tools you're gonna use. Document this and also your coding style. Non-stacked braces and 4 space indentation seems popular (except for functions in C). For something like Python or Go that has a baked-in/official coding style, you should probably follow that.
We're excited to see what you come up with. Happy Hacking!