Share and discover files, designs, code the right way
This will be a two blog posts. Part one the what and why, Part two will be the how.
What is open source
In it’s simplest form – software for which the original source code is made freely available and may be redistributed and modified.
Why is open source cool
Open sources by it’s very name allows someone to see the source code, understand it, and potentially build upon freely and/or make it better. In the software world this is how a lot of the things use today came to be. Someone wrote a library that solves problem X, they can’t really sell it and/or want to open it up, but it’s really helpful, they open source it – in turn someone solves problem Z they open source it, so on and so forth.
When you decide “I want to enlist the help of others, want to build something awesome and want to share it” that’s where it gets interesting. With the SFX-100 open source actuator design there’s been a tonne of little projects spring up in the same vein, people are sharing their designs and ideas. Part of the license is “hey if you make a derivative from these files, then you in turn have to share your design” and that’s the beauty of it :
“I’m giving away some of my knowledge & hard work in the trust** and understanding that if you build upon it, you’ll do the same and together we’ll do something awesome”
If it rinses and repeats then a collective effort an be absolutely amazing. Things like 3d printing would not have happened, and not have democratised without open source.
** Now you just don’t have to rely on trust, there’s actual open source licenses to enforce/protect your wishes. We’ll get to that at the end.
The sim rig engineering community has had a huge influx of people that are very new to this whole concept, so I thought I’d write a post about open source and how to use what’s available to get a better result.
What could be better?
- People are sharing files quite ad-hoc i.e. “send me a pm” or “here’s something attached to a post”
- Tracking updates/changes to those files is difficult, allowing people to build upon those files is difficult
- It’s usually really unclear as to what people can do with them – as a license isn’t included. Can they make money off them? Do they have to credit the author?
Let’s try to solve some problems, for better SimRig Engineering.
What is github
First of all, let’s find a good place to store your files. Attaching to forum posts or emailing people is so old school. Welcome to your new school friend, Github.
So what is it? Well Github the worlds largest open source destination.
- “Git” is a flavour of source code control (a process and way of tracking changes to files in an orderly fashion – requires software to do it, the software is called ‘Git’)
- “GitHub” is an online service where there is a place for lots of repositories. that are hosted for you, easily searchable, you can follow them, share them, have them public or private, belong to teams and lots, lots more.
- A repository (or repo for short) is where you store your files, kinda like a really, really fancy little archiving service. Each and every file change is tracked, who/what/when. There are lots of mechanisms to help manage those files, how you share them, how you track what’s changed. We’re not going to even come close to describing what all it can do, we’ll just get you started.
Let’s take a couple of examples. First of all something simple my g-seat repository, screenshot below. There’s a handful of files, the license, an issues area, weird things that we don’t know exactly what they are (pull requests? commits? branches? forks? ) what strange world are we in???. Do not worry, we’re only going to touch on the basics, we’ll leave the nerdy stuff to the programmers.
And here’s an example of a kick-ass 3d printer project https://github.com/VoronDesign/Voron-2:
The full power of github is really only applicable for development, but for us Sim Rig Engineers, just the basics are useful enough and beats “hey email me for the files”
Yes, that’s right free. If your repository is public you’re good to go. How do they make money, no ad’s that’s for sure. It’s all the premium and enterprise customers. Free for everyone else.
Check out this. Cool huh…https://github.com/topics/simracing
Keep a log of the good, the bad, and the ugly. Not hidden away in forums. Oh and people can raise their own issues – giving you ideas, feedback etc.
Know exactly what was changed, when
And a lot, lot more.
Again, it’s truly designed for software development, but we can make it work in our world.
How do I use it?
We will cover that off in part 2.
Open source licenses
A common mis-conception is that open source means “free to do with it what you want”. So let’s clear that up first.
Typically source code/files/data would be provided with a license the license tells you what you are allowed to do with those files. E.g can you use those commercially, can you modify etc etc. Whilst you don’t contractually sign anything – the license is usually provided plain text with the files. If you use github and put the license file in the right place/right format it will even show you clearly what you can’t and can’t do :
The license captures what is the authors permission around what you do with those files and makes sure everyone is clear. What “providing the source[code]” means to one person may be completely different to another. And I can tell you – from being involved with the SFX project and seeing what people do or interpret – there is a lot of general misconceptions out there !
While you don’t contractually sign anything, usually it’s so blatant that you’ve had to read/see the license file you would have a very hard time in court of law claiming ignorance around those files. In conjunction with Copyright this does give the creator legal recourse to go after someone who violates their copyright. And it certainly makes it damn iffy to build a business violating someones open source license.
There is a little minefield of licenses to choose from. Depending on what you’re doing, and what your intent is, you choose the license. There’s a solid debate (of course) of what is the best license. And everthing ranging from incredibly complicated ones to my favourite, all encompassing, don’t be a dick license.
For my G-Seat sometimes plain english and intent like DBAD isn’t enough, so I chose to use a Creative Commons license here: https://creativecommons.org/share-your-work/
It’s really important to get this part right and have a think about what you really want to achieve.
- Can you use it private or commercial
- What happens if someone makes changes to the code
- Do they have to credit you
- Do they have to release their changes
- Do they have to follow the same license.
You can use this page here to help you choose a license
It’s important to note reality will dictate there will be a number of individuals who will flout copyright and licensing a.k.a being a dick. that has to be factored into your decision making.
With the rise of open source based sim rig engineering I’m trusting that the community will eventually set the tone – like the software community. The software world has vastly stamped out any “bad behaviour”.
We’ll go into actually using Github and setting up a repo quickly, uploading some files to it.