One of the wonderful things about open source software is that you have the code, you can see how it works, you can change it and see what happens, and you can fix it if it is broken. Open source projects like OpenStack and Linux are incredibly sophisticated pieces of software engineering and there is nothing to stop one from making them teaching aids, or even the centerpiece of a course. Text books on Operating Systems regularly refer to the Linux kernel implementation and coursework often involves changing or implementing some specific extension to the kernel.
So, why not make OpenStack the centerpiece of a set of courses?
Last week I had the privilege of speaking to a number of students at Worcester Polytechnic Institute(WPI) about OpenStack. Before going any further, my thanks to Prof. Craig Wills (http://web.cs.wpi.edu/~cew/) and Nilesh Patel, the president of the local ACM chapter who made this possible. I was also lucky to have along with me Davanum Srinivas (dims) and Kamesh Pemmaraju (@kpemmaraju), both of Mirantis. My thanks to both of them for joining me (at a few hours notice).
I know that when I was a kid, I loved to take things apart and I have not lost that fascination to this day. That, to the right is a two-axis tourbillon and similar to one which was in a clock my grandfather and I took apart about forty years ago. I still recall the thrill of looking at the mechanism for the first time and trying to figure out how it worked!
I wanted to see whether a group of CS/EE students would find it interesting to have a complete and functioning cloud on their own machine. One where they could see all the inner workings. Where they could tweak and change pieces of it and see what happened, or where they could write their own cool extensions to it.
I had some slides prepared where I could talk about OpenStack and interest students in playing with it, but after about 10 minutes of slides it was clear that a presentation wasn’t the right approach.
But, I had devstack on my laptop and so we went to a terminal session and proceeded for the next 90 minutes or so to alternate between that and the whiteboard. It was a fascinating discussion and incredible to see the immediate connection that some of the students made to things they could do.
Some were interested to know how networking worked, so we dug into Neutron for a bit. Others wanted to know about the UI so we talked about Horizon. We talked a lot about hypervisors and how easy it was to get this all running on a laptop.
It was clear that I’d made a connection when one student pointed out that OpenStack Block Storage has a database labeled “nova database” [docs.openstack.org/openstack-ops/content/architecture.html]. That and the fact that my slides listed Docker (not Magnum) as an OpenStack project [oops]
No matter what area of computer science you are interested in, there’s an OpenStack project for you, in some cases more than one.
So here is my goal for OpenStack in the Classroom.
I am convinced that a collection of courses about various subjects in computer science can be constructed with OpenStack as the exemplar. Networking courses could focus on Neutron and Designate while those interested in storage could focus on Cinder, Swift or Manila. Courses could also focus on Nova, Magnum, Keystone, Barbican, and so on. Courses that wished to teach software development methodologies currently have students participate in a development exercise on a fictitious open source project. Why not make that a real open source where the code actually gets reviewed and merged upstream?
I know that some universities already have these kind of initiatives under way. A tip of the hat to Prof. Orran Krieger (http://www.bu.edu/cci/okrieg/) who has already begun to do this at Boston University.
Let us make (and I’m looking to the Foundation to support this as a formal initiative) it a priority to have every university offer courses on computer science and cloud computing with OpenStack as the exemplar system.
Personally, I’m going to work with educational institutions in Massachusetts and near Toronto (where Tesora has offices, and where I tend to spend most of my time) to try and make available a course on cloud computing with OpenStack as the exemplar system. I’m going to make the materials, and offer to teach the course, and I will contribute the materials to the Foundation.
So this is an open offer to any university in Massachusetts and near Toronto; if you want someone to develop and deliver a course on cloud computing, please let me know!
I think we can all come together and: take OpenStack to the Classroom so that every graduating student interested in cloud computing has a working knowledge of OpenStack.
As we left the room, I overheard two students talking about the differences between Python 2 and Python 3. Nilesh who helped me organize this event is interested in cybersecurity and in addition to being the president of the local ACM chapter, also runs the WPI Cyber Security Club. We need that kind of talent in the OpenStack community (python 2 vs. 3 for sure).
I am positive that OpenStack would be a huge winner if we can get more people into the community. So join me in taking OpenStack to the Classrooms.
Image credits: “Greubel Forsey DT30 mechanism” by Greubel Forsey – http://www.greubelforsey.com/download.asp. Licensed under CC BY-SA 3.0 via Wikimedia Commons