Open Source Network Education: A Systems Approach
From the 2020 SIGCOMM workshop on Networking Education
In 2012 we published the fifth edition of Computer Networks: A Systems Approach. As with all the prior editions, we worked with a traditional publisher who retained full copyright to the material. At the time, open source software was becoming ever more important to the networking industry. Larry had decades of involvement in open source projects such as the PlanetLab and was embarking on a new initiative with the Open Networking Foundation to build an open source SDN stack, while Bruce was at Nicira contributing to the Open vSwitch project. It seemed to us that the time was right to consider how to leverage open source for networking education materials, not just for the code.
Like many textbook authors, we embarked on writing a book mostly as a labor of love. That is, we wanted to contribute to the development of the next generation of networking students, researchers, and professionals. We recognized that this desire to educate, and to reach the widest possible audience, aligned well with an open source approach. We also recognized that the book could be better if we drew on the input of the community more effectively that we were able to do in a traditional proprietary textbook.
Over the next several years we negotiated with our publisher an arrangement in which we would continue to furnish them with new editions—ideally leveraging community contributions as well as our own work—while also gaining the rights to make the entire contents of the book freely available under an open source license.
This post, originally published at the 2020 SIGCOMM Education Workshop, reports on our experiences and progress to date in developing the open source version of Computer Networks. We also offer some thoughts on future directions for networking texts, which are likely applicable to many other technical fields [1].
The latest entry in our series of open source networking books.
Getting Started
Once we had the idea to explore an open source approach to our own networking book, we also engaged in a discussion with members of the SIGCOMM community about producing open source textbooks for the networking community. (Bruce was SIGCOMM chair at this time.) This discussion was picked up by members of the Executive Committee and resulted in the book Recent Advances in Networking. A significant simplification in this case was that, being new content, SIGCOMM could publish it freely under an appropriate licence [2].
For Computer Networks, we had to address three issues:
Persuade the publisher to part with the exclusive rights to the content we’d produced for them over the years.
Construct a licencing model that would work for the publisher, for us, and for other contributors.
Design a model for producing both traditional editions and freely available online versions of the book.
Once these issues were addressed, we had to get to work on developing new content and building a community of contributors. Plenty of open source software efforts fail to thrive because there’s not a community of contributors, and our goal here was similar to a software project: make something that is constantly improving as the community makes updates. We discuss our experience in tackling these issues below.
Experience
The following highlights some of the lessons we have learned over the last two years of working with our open source textbook.
Licensing Terms
While we had experience with licenses for source code, with the Apache 2.0 license emerging as a consensus choice, everyone we asked pointed to Creative Commons as the right model for other academic content, including data sets and textbooks. Their range of terms gave us the options we needed [3].
Elsevier ultimately agreed to make the source to our book available under terms of Creative Commons CC BY 4.0 license. One of the CC’s more liberal licenses, CC BY allows others to copy, remix, and redistribute the material (including commercially). We are still under contract to not publish a competing “introduction to networking” textbook, but we are allowed to enhance and promote the online version, in part to encourage community contributions. This was the best outcome we could have hoped for.
We have subsequently written two “spin-off” books on emerging/advanced topics: 5G Mobile Networks and Software Defined Networks. The source content is also available on GitHub, and an HTML version is available online, but we subsequently learned that CC BY precludes potential publishers being able to exclusively license translations. Those books are (for now) available under the more restrictive CC BY-NC-ND license terms (no commercial use and no right to distribute). The source remains on GitHub and web versions are available.
Community Contributions
Our hope was that by putting source to the book on GitHub we would encourage others to contribute, both improving/updating the existing content, and adding new chapters on emerging topics. With respect to the existing textbook, many people have submitted “bug fixes” but contributions of updated content was minimal.
What has worked instead is to co-author stand-alone micro-books on advanced/emerging topics. These are roughly the length of a chapter in the full textbook, with the aforementioned 5G and SDN books being two examples [4]. This gives the co-authors the requisite ownership and credit, and potentially, royalties.
On the one hand, it is easy to imagine a community-wide collection of such micro-books--and we have started a Networking Systems series with Morgan & Claypool doing exactly that [5]. (This approach has been successful in the Computer Architecture community, and the hope is to replicate that success in the Networking community.) On the other hand, a series of unrelated monographs does not result in a coherent set of teaching collateral, especially at the undergraduate level.
To address this issue, we plan to curate a set of micro-books that are mutually self-consistent. Today, that involves co-authoring those books, but it is possible that a proactive editing hand can accomplish the same result. The set will also include “framing” material that will help both instructors and students navigate the material. Our experience is that instructors who are also active networking researchers have strong opinions about how their course is framed and organized (and would prefer integrating their own combination of content modules), but the vast majority of instructors prefer a more seamless, end-to-end solution.
As a side note, we have found a similar balancing of disaggregated-vs-integrated concerns applies to video content as well. Our approach is to record and distribute bite-sized video modules through CUvids rather than pursue a MOOC-style complete course [6]. This gives instructors the freedom to organize material as they see fit, using a combination of text and video.
Publication Tool Chain
Much of the value proposition of traditional publishers is formatting and design elements: the author provides the substance and the publisher supplies the style. Self-publishing tools are becoming widely available, but most require substantial buy-in to some underlying platform, making them less than ideal for a community-based, open source effort.
After experimenting with several options, we settled on a minimalist approach: reStructured Text (reST) as the canonical representation for content, and Sphinx as the document generation toolchain. (We also use Pandoc to convert the original LaTex source into reST format, but non-trivial by-hand edits were still required, given the publisher’s heavy use of formatting tweaks.) Sphinx does a good job generating HTML for web-based output, is adequate for eBook output, but just barely sufficient for producing PDFs. The latter case would benefit from a well-designed set of LaTex macros, preferably open sourced [7].
Related to the toolchain, we have adopted an “agile” development process, with minor revisions released continuously, and major revisions released (approximately) quarterly. And taking advantage of standard GitHub tools, we have adopted a variant of semantic versioning to help instructors know all their students are working with the same instance of the material [8].
Recommendations
We can’t help but notice how the trend to build disaggregated, open source software systems–which in many cases are designed to disrupt an industry stifled by a set of incumbent vendors–applies equally well to textbook publishing. (Truthfully, given our experience with networking software, this similarity is intentional.)
It is clear the textbook publishing industry needs to change. Our approach, which we would advocate to the broader community, is to pursue a model of (a) disaggregating our teaching collateral into self-contained modules, (b) make those modules available as open source, (c) reward community contribution to that collection, and (d) offer end-to-end packages that integrate a curated set of modules into a coherent and consumable whole. We are making tangible progress on the first three, and have ambitions to address the fourth. Time will tell.
REFERENCES
Open Textbook Library: https://open.umn.edu/opentextbooks/books
Recent Advances in Networking: http://www.sigcomm.org/content/ebook
Creative Commons: https://creativecommons.org/
Systems Approach Series: https://systemsapproach.org/series.html
Morgan & Claypool, Synthesis Lectures on Networking Systems: https://www.morganclaypool.com/page/networksystems
CUvids: https://cuvids.io/
Sphinx Documentation Generator: https://www.sphinx-doc.org/
Book GitHub Repository: https://github.com/SystemsApproach