Using GitHub to Share with SparkFun
In early 2013, SparkFun made the decision to share all of the code and design files for our products via GitHub. While we've always striven to provide as much information on our products as possible (including complete source files; after all, we are all about Open Source!), in the past, that's been a very one-way channel. Our customers can see the source, download it, and use it as they please, but there's been no (easy) way for them to share changes with us (and, by extension, with the rest of the community).
By moving our product source to GitHub, we hope to change that. Obviously, the sheer number of products we have means that migrating them to GitHub is a slow process; in fact, we're not really trying to get all of our older products moved over at all. New products (those we design in house, anyway) will always launch with a GitHub repo containing at a minimum the source files for the product and most likely containing example code, getting started information, and a (curated, but open) wiki that can be used to exchange information with other users about the product.
What is git?
Git is a source control package originally developed by Linus Torvalds for tracking changes during development of the Linux kernel. It's intended to make collaboration on projects easier by allowing locally stored repositories to be synchronized against a remotely stored master copy.
As is so often the case, the choice of source control package tends to be a deeply personal and subjective matter. We chose git (and GitHub) because they offer good support for all the tools we use at a reasonable price and are free for our customers to use to interact with us.
So what's GitHub, then?
GitHub is, at it's most basic, a web-based collaboration tool based on the git source control package. It allows multiple users to access git projects (called "repositories"), track changes, manage revisions, and merge with each other's different version.
The demarcation between git and GitHub can be fuzzy at times, until you get used to the tools. In general, things happening on the command line are using the git tool, and GitHub interactions will be done through the web page interface.
This tutorial isn't meant to get you up to speed on how to use git, in general- it's really just a step-by-step guide to show you how to make a change in a SparkFun repository and share that change with us. If you want to learn more about git and GitHub in general, we've got a great tutorial about GitHub. Git is a phenomenal tool, even if you're not collaborating. Once you get the hang of it, it's super easy to use and extremely powerful.