For a time now SparkFun has been making a name for itself as a player in the Open Source Hardware game. We helped draft OSHW Version 1.0 and are regular contributors at the Open Source Hardware Summit in New York. This is a point of pride for us. It's something we truly believe in and that's evidenced by our growing line of OSHW products (embedded below: an incomplete list of current OSHW products) and regular posts about what's happening in this burgeoning world.
Today, though, I want to talk about what else we can open source. It turns out there's quite a bit!
Let's start with images. One of the things that helped SparkFun stand out in its early days was crisp, high resolution images of all of our products from multiple angles. As a company built by engineers we know how important it is for one to have a clear mental picture of any new component before the credit card comes out.
We've now licensed all of our images under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 (CC BY-NC-SA 3.0). Basically we want you to freely use our images in your projects or for whatever reasons you decide to use them so long as you provide attribution and aren't using them for commercial purposes (like that Chinese website that ripped off all of our images last year). Being realists we can definitely imagine scenarios where a commercial use of our images is totally cool so you can still contact us to work things out.
So we have hardware and images but something is still missing. Something big... the elephant in the room. Software.
Software is where open source began. It's why we call it open source... you get the source code and do what you want with it. Is SparkFun big into open source software? Yes, internally. Externally, we're on our way.
Our IT department is almost a 100% Linux shop. The website you're looking at runs on a stack of servers primarily running the Debian flavor of Linux with MySQL (an open source database layer), PHP (an open source scripting language), and Nginx (an open source web server layer). You could call it a LNMP stack. A handful of our internal software solutions are open source but there's certainly a mix of proprietary packages in there out of necessity and function.
Our primary internal software package, however, is one of custom origin called Sparkle. Sparkle is a sprawling suite of tools connected to the same common database used by sparkfun.com that includes applications for order fulfillment, production floor and supply chain management, catalog control, and content creation to name just a few things. In fact, here's an updated visualization of the scope of our code base over time:
The red sections (including those red bits within the green branch) are files that make sparkfun.com go. Everything else is either Sparkle or libraries used by both Sparkle and sparkfun.com. If this video looks familiar it is an updated (and higher-res) version of one we released almost a year ago.
Could we open source all of that? This is a heavy question we've been asking ourselves for some time now. Most companies might look at internally developed software of this scope and call it a competitive advantage. Such an argument might prevent them from ever open sourcing anything. SparkFun, however, is not like most companies.
We want to open up as much of Sparkle as possible... eventually. Our reasons include providing a set of flexible, modular internals to the next company that looks like we did many years ago trying to gain a foothold. Also, by fostering a community of followers we may ultimately see some contributions from developers outside of our walls. How exactly we're going to do this is not yet clear, but every journey begins with a first step. So here's what's open so far:
This is a simple yet powerful syslog-like event server written in node.js. We use this as a base for a wide variety of things from visualizations of real-time website activity to triggering subsequent events that cascade through our system. Senior Administrator Ben built this from scratch and all developers to date have had a chance to plug into it to do some really spiffy things.
This is a standalone PHP class to fit six types of regression curves to a data set in order to extrapolate trends. We use it deep inside Sparkle as the base of our primary stock management application which predicts sales and usage trends to activate the supply chain where needed. I wrote this years ago when I found no such libraries for PHP existed. It helped that I still had my numerical analysis textbook from college hanging around the office.
This is a FUSE-based file system backed by Amazon S3. While not a 100% SparkFun project our own Senior Administrator Ben has been responsible for the last twenty or so releases of this project. We use this to plug into our S3 account where much of our binary content like product images are served as if it was a local file share to facilitate access for all content creators.
This week we'll be migrating to using MongoDB (another open source database) to store some of our data. Mongo offers a performance boost for things that don't require the trappings of a traditional relational database like MySQL. In order to make this work seamlessly SparkFun Developer Todd put together this library to track MySQL inserts/updates/deletes to automatically store data in MongoDB. This opens up some new and exciting storage opportunities for us.
This is a great start and we're proud of what we can share. I feel very fortunate to have a team of developers passionate about open source with a whole company backing them up! Over time we'll most certainly be open sourcing more with the eventual goal of open sourcing whole modules of Sparkle for other fledgling startups to use and contribute to.
TL;DR: The future is bright for open source at SparkFun!