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.
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.
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.
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.