As a developer who worked on Cisco's operating systems (IOS, IOS-XE, IOS-XR, NXOS), routing protocols, kernel programming, virtual memory, device drivers and SDN, I needed a lot of time to understand how cloud computing can be done using Python. When I read that OpenStack is a cloud “operating system”, I was not able to comprehend why Wikipedia says that OpenStack is written in Python. On the right is a screenshot from Wikipedia. So, I initially thought OpenStack does not include Linux.
I have been working on OpenStack since 2013 (Grizzly release), and after more than two years, I realize that OpenStack does include “some” Linux (I will elaborate the size of “some” later in this blog!).
To understand the role of Linux in OpenStack, I will continue this blog with a few questions and pictures. The questions and pictures are around Python and Linux. The readers of this blog can find their own answers! ![](/legacyfs/online/emoticons/wink.png)
Which figure below is the right way to visualize OpenStack's building blocks ? Is Figure 1 that has a big Python block correct ? Or, is Figure 2 with a big Linux block correct ? Or, should both Python and Linux be equal-sized blocks ?
![Building_blocks.jpg](/legacyfs/online/fusion/91154_Building_blocks.jpg)
Who is cute ? Penguin (Linux's logo) or Python ?
![Who_is_cute.jpg](/legacyfs/online/fusion/91155_Who_is_cute.jpg)
According to the theory of evolution, even though Penguins (birds) evolved from Pythons (reptiles), we all know that Linux did not evolve from Python. But, did Python evolve from Linux ?
![Evolution.jpg](/legacyfs/online/fusion/91156_Evolution.jpg)
Who is your hero in the tech industry ? Linus Torvalds (creator of Linux) or Guido van Rossum (creator of Python) ?
![Who.jpg](/legacyfs/online/fusion/91160_Who.jpg)
As I think about these questions, when someone says "OpenStack minus Python", below are the concepts in OpenStack that immediately come to my mind. All of these concepts can be understood / implemented in Linux and I've listed them for OpenStack's most popular and contributed projects - Neutron, Nova, Glance, Horizon, Keystone and Cinder.
"Neutron minus Python" includes many networking concepts like Linux namespaces, layer-2 switching, VLANs (access, trunk), VXLAN, GRE, layer-3 routing, sockets, bridges, TCP, UDP, dual stack (both IPv4 and IPv6), DHCP, DNS, default routes, broadcast, multicast (IGMP, PIM), unicast, OSI model and a lot of other cool things.
"Nova minus Python" includes many virtualization concepts like hypervisors, bare-metal provisioning, PXE booting, IPMI, libvirt, qemu, KVM, virt-manager, virsh, resource isolation, nested virtualization, cgroups, vNICS, VM snapshots, VM live migration, cloud-init, paravirtualization and a lot of other cool things.
"Glance minus Python" includes many imaging concepts like disk formats (ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso), container formats (ami, ari, aki, bare, and ovf), virtual appliance (ova), image registry, virtual hard disk (VHD) and a lot of other cool things.
"Horizon minus Python" includes many web services / UI concepts like HTTP, REST, HTML, JSP, CSS, web templates, AJAX, AngularJS, JavaScript, web server, presentation layer, UIX, Model-View-Controller (MVC), UI components (panels, tabs, buttons, scrollbars, workflows, actions, URLs) and a lot of other cool things.
"Keystone minus Python" includes many authentication concepts like AAA, Single sign-on (SSO), Federated identity management (FIM), OpenID, cryptography, encryption algorithms (RSA, DSA, SHA, MD5, Diffie-Hellman, PGP), key exchange, key rotation, authentication token and a lot of other cool things.
"Cinder minus Python" includes many storage concepts like Fibre Channel, Fibre Channel over Ethernet (FCoE), Fibre Channel over IP (FCIP), Small Computer System Interface (SCSI), iSCSI (Internet SCSI), Storage Area Networks (SAN), SAN booting, RAID, Logical Unit Number (LUN), data replication and a lot of other cool things.
So, I think Python is the front-end of OpenStack and Linux is the backend that implements a lot of cool things. Along with Python, I think an OpenStack user / developer must try to understand, implement, scale and debug the concepts listed above as well in order to deploy the best clouds. The OpenStack community must also continue to build expertise around these concepts.
For example, it looks like Red Hat is one company that understands these concepts, develops a good Linux distribution as a trusted backend for OpenStack, and makes money from a lot of cloud deployments. Red Hat is the backend Linux distribution for CloudStack as well and makes money from CloudStack RHEL RPMs used by Java lovers too! I really think that cloud providers must try to capitalize and profit from "OpenStack minus Python".
Do let me know your comments and also the answers for the questions in this blog!