Finding Code for Network Automation Is Easier Than Ever

It is commonly said that the best software developers write very little code. So much code is available online, so many libraries and frameworks exist, that there is little reason in most cases to start your new software project from a blank slate. However, finding the best code for your use case is typically not easy, and the terms of use and community behind that code are not always clear.

Back in mid-2018, we in the Cisco DevNet team looked to tackle these challenges and make it easy for developers working with Cisco technologies to find code to complete their projects fast. We looked at over 1200 public code repositories (a.k.a. repos) related to Cisco technologies in roughly 40 organizations on GitHub. We used an algorithm that combined various GitHub statistics with recommendations from our developer advocates. The end result was a curated set of 150 code repositories that was easy to find using a new platform we launched called the Cisco DevNet Code Exchange.

Where the real magic happens

The initial set of 150 repos provided the critical mass necessary to ensure a developer interested in a specific topic could use the search capabilities and filters in Code Exchange to find code that matched their needs. This, combined with the fact that everyone is welcome to use Code Exchange (i.e. no account or signup necessary), led to the creation of a large user community very quickly. And this is where the real magic happens. This user community not only finds and uses code on Code Exchange, it also asks questions about the code, contributes fixes and enhancements to existing repos, and submits new repos into Code Exchange. As a result, the number of repos in Code Exchange doubled in less than a year to 300 repos. As of today, that number has doubled again, and we have over 600 repos in Code Exchange. This greatly improves the odds of Code Exchange helping you zero in on code that is extremely relevant to your use case and tailored to your specific needs.

Tell me more about the curation

We strive to ensure that every repo in Code Exchange is clear and easy to use.

README
For the most part, this comes down to working with owners of the code on the README. The README needs to describe what the code is, the use case it addresses and/or the problem it helps solve, how to install, configure, use, and test that the code is working. It is also helpful to state any known issues or limitations and how to get help. The goal is that the average developer who is new to the project understands what it is and how to use it. We review all submissions and work with the submitter to make sure this is the case.

LICENSE
Code that you are not authorized to use is not very useful. We make sure every repo in Code Exchange has a clear license. In order to make sure the terms of use are clear and well understood, we accept only OSI approved licenses. This makes it easier for developers to get permission from their respective legal team. The only additional license we accept is the Cisco Sample Code License, which we worked with Cisco legal to create for the purpose of making it easier for Cisco employees to share code with customers and partners. We prefer open source licenses whenever possible, but for cases in which this is not possible, the Cisco Sample Code License still enables us to share the code publicly.

CONTRIBUTING
In addition to knowing how and being able to use the code, it is important to know how to contribute back. Is it best to send an email, open a GitHub issue, fork the repo and send a pull request, etc.? Providing this information in a CONTRIBUTING file in your repo is a common way to do this. Including similar information in the README is fine as well.

TESTING
When possible, we test the code to make sure the instructions in the README are not only clear but that they work. This is not always possible due to associated deployment environments. Note that leveraging a DevNet Sandbox is very helpful in this regard. However, even in the best case, we do not test all paths or guarantee the code to be bug free at the time it is first approved and published in Code Exchange or thereafter. This is the responsibility of the owners, maintainers, and users of the repo. That said, if a repo is neglected and not maintained for some time, it is eventually removed from Code Exchange.

Submit your GitHub repository into Code Exchange?

As stated previously, anyone can use Code Exchange, and no account of signup is required. If you want to contribute a new repo to Code Exchange, you need to be a DevNet member. This enables us to establish a relationship with you, both during the review process and after your repo is accepted into Code Exchange. It also allows us to extend admin privileges to you such that you can see and maintain all your contributions easily within Code Exchange. Fortunately, creating a DevNet account is free and easy. Then you can go to https://developer.cisco.com/codeexchange/github/submit.