In the early days of Ubuntu there were three major projects that tended to influence it.
- Debian - the core that Ubuntu is based on.
- GNOME - the core that the desktop is based on, and even though the latest client things (phone and tablet) are based on Qt there is still a bunch of GNOME technology in Ubuntu.
- Python - the language that is preferred to tie a bunch of this stuff together.
A large percentage of the early Ubuntu community came from one of these other communities, they were either heavily involved or had partcipated. The GNOME and Debian influence on Ubuntu is well documented, but the stealth fact, the third piece is Python, here is a quote from Mark Shuttleworth:
Python plays an important role at Canonical. You could even go so far
as to say that Python is the language of choice for the company. Here
is a rough list of the projects that are written with Python at
Canonical:
- Bazaar: A distributed version control system. If you haven't tried Bazaar yet, you should give it a try, it is a very lightweight
alternative to centralized version control like Subversion
launchpad.net: A free software hosting and development web site that
makes it easy to, "collaborate across multiple project".
- Storm: Storm is an object-relational mapper for Python that was developed at Canonical and is used inside of launchpad.
- Landscape: A system management service that allows for centralized management of multiple Ubuntu machines. This is a commercial product
that Canonical has rolled out.
There has been tremendous buzz about Python's "infection" of systems
administration and systems programming. It will be interesting to see
where this ultimately leads. Will Canonical start writing run levels
in Python next?
To get some idea of how big of a deal Python is becoming in the Linux
world we can also take a look at Red Hat. Red Hat has a Research and
Development division called Red Hat Emerging Technology Group. The
link to that website can be found here.
If you look at the projects listed, Python either plays a role or is
the language in which the project is being developed. The future for
Linux and Python for both Canonical and Red Hat seems to be bright.
We take a bunch of cultural ideas from Python, one of the most famous is the idea of a BFL and the idea that there's one clear way to do something:
We would rather have one super smooth way to get things done, than 50 rougher ways to get things done. This is a bit like the core design value of Python: have one clear way to get something done. It's why I called the company Canonical: find the cleanest, clearest way to do XYZ. And the project is called Ubuntu because it's about humanity in the mass, and the values which support that, rather than about individuals (who were empowered by Linux long before we came along).
At the time of Ubuntu's launch Python was seeing an immense amount of attention and growth, and given Mark's experience with Python in the past (it was also used at Thawte Consulting) it's not surprising that if you were to build a new Linux distribution that Python was one of the easier choices to make.
That's not to say other languages are not welcome, the phone/tablet and soon the desktop will transition to QML and Qt (C++) and Juju was rewritten from Python to golang. Python just tends to be the default for things in Ubuntu. Authors can make tools in Python knowing that it's included in the default OS, so it makes a nice common watermark for people to get started in. Earlier releases of Ubuntu even included Dive into Python by default!
As far as Canonical itself, there's usually some form of sponsorship of PyCons, and participation from employees in Python conferences around the world.
TLDR; if you start a new project and you're passionate about certain technologies and you surround yourself with people who share those goals and beliefs, you can build awesome things.