Have you ever wondered what happens to all those useful little tools that were created as by-products within a project? Tools that facilitate the lives of their developers or source code that solves a particular problem? What usually happens is that those creations eventually sink into oblivion once they’ve served their purpose.
Here is a suggestion: publish your code and make it available to the community.
When you look at successful open source projects, you’ll find that many of them started out as small tools that later became powerful and widely used utensils thanks to an active open source community.
Going open source is not just for idealistic individuals, but also an option for businesses. Netflix, for example, currently maintains 39 public repositories on GitHub. What drove them to release part of their intellectual property?
What’s in it From a Business Point-of-View?
There are a number of benefits. Making your source code publicly availably can help:
- Establish your solution as a best practice or standard.
- Build up your business as a technology brand.
- Engage or hire talented developers.
- Increase reliability and security due to public review.
- Benefit from a shared ecosystem.
Contributions from the community can be varied: from bug fixes and producing additional functions to ports for other operating systems and environments. Each such port widens the market appeal of the product.
Another aspect is the engagement of users. Users/developers interested in your project are likely to give you feedback regarding features they miss. They might even implement them for you.
What is GitHub and How Does it Work?
One of the most popular platforms for hosting open source projects is GitHub. With over 3 million users and more than 5 million repositories, GitHub has become one of the most important places for open source software developers to publish their code and collaborate on projects.
Projects hosted on GitHub use the Git revision control system. Git is different in several ways from centralized version control systems such as CVS, Subversion, and SourceSafe, where a single server contains the complete version history.
Git is a distributed version control system. Clients don’t just check out the latest snapshot of the project, they maintain a full copy of the repository. Thus, if a server fails, any of the client repositories can be used to restore the server.
Git introduced a new way of looking at revisions. Whereas nearly all other version control systems store data as changes to a base version of each file, Git stores data as snapshots of the project over time.
Having the entire history of the project locally available allows Git users to comfortably work offline. Tracking changes between the current version of a file and a previous version does not require a connection to a remote server. Even committing changes works without network access.
Git knows three main states a file can be in:
- Committed: the file is safely stored in the local repository.
- Modified: the file has been changed but not committed yet.
- Staged: the current version of a modified file has been marked to go into the next commit snapshot.
The basic Git workflow looks like this:
- Modify your files.
- Stage the modified files by adding them to the staging area (Git command: add).
- Commit the staged files (Git command: commit).
- Push your local repository to a shared repository, e.g. on GitHub (Git command: push).
In order to publish your code on GitHub, all you need to do is create a GitHub account, setup a Git repository (either locally or on GitHub), and add your files. Make sure to choose an open source license for your project. GitHub can help you with that, too. They have made a website that guides you through the options: http://choosealicense.com/.
Online’s Open Source Repository
As for Online Business Systems, we are making some of our own tools available as open source. A GitHub repository has been created at https://github.com/OnlineBusinessSystems/open-source-software where we will successively add more projects.
One of the first tools to be released is a web-based spreadsheet viewer. This tool was created to provide shared access to always the latest version of a spreadsheet that is frequently being updated. Furthermore, access had to be restrictable to a defined group of people. Instead of sending out regular mass emails with the new version, a static URL can be provided.
The spreadsheet viewer runs inside almost every recent desktop or mobile browser and has an intuitive user interface that is optimized for touch screens.
Besides features for navigating, sorting, searching and filtering the spreadsheet, data can be enriched with information from external sources, e.g. a Google search or data from a custom database.
A live demo of the spreadsheet viewer is available online at https://googledrive.com/host/0B65hQ0vzdRXmVFROTS1yVWZYQ0E/index.html (see the README file in our GitHub repository for more details).
For Online, this initiative is an opportunity to make more people aware of the good work our people do. We hope the published tools are as useful to others as they are to us and that the source code provides some educational insight. We are looking forward to your feedback.