Monthly Archives: December 2010

It’s Been a Crazy Year

That was then…

So it’s been a crazy ride this year for me at Canonical.  I started out covering for Matt Zimmerman while he took on an internal project, which was an eye-opening adventure, where I learned to greatly appreciate the day-to-day demands the Canonical CTO encounters.  During this temporary assignment, I was involved in Canonical’s work with Google on ChromeOS and partnership with ARM to roll out Linaro.  We also released another LTS…and had a little “excitement” the day of the 10.04LTS release ;-).

Soon after Matt’s return, I created a little video for 10.10 and resumed my duties leading the Foundations and Security team…but then had to jump into Ubuntu 10.10 Release Manager duties, as our esteemed colleague and close friend, Steve Langasek, took on another opportunity with Linaro.  During my stint as Ubuntu Release Manager, I had a chance to tweak the yearly release schedule and do a “once in a lifetime” (according to some) release.   It was a fun ride, but I’m glad the role is now in safer hands.

After 10.10, I was actually looking forward to life returning to “normal”, but as fate would have it (I know…cliche)…it was time for more excitement.  Shortly after the 10.10 release, our Canonical Server team manager, Jos Boumans, decided to take on a new challenge outside of Canonical.  Shortly thereafter, the Ubuntu Server technical lead, Thierry Carrez and the team’s most senior engineer, Mathias Gug, decided to make the ultimate Ubuntu Server developer community contribution….by joining it and moving on to new adventures ;-).   As you might imagine, while the Ubuntu Server team wished all three great luck, it left them in a bit of a bind…not too mention a little in the dumps motivationally.  With me being familiar with the team and having a server background, it only made sense that I cover until we found a full-time manager for the team.

There I was…managing Foundations, Security, and Server…which really meant I knew very little about a whole lot, as it is simply too many features, people, and subject matter to have a firm grasp on.  Because of this, and my constant need to “raise my game”, I decided to apply for the Ubuntu Server manager role full-time….and lucky for me, I got it! 🙂  Now, this didn’t immediately alleviate the management hat trick I was pulling, but allowed Rick and I to move forward with posting for a backfill, as we know this can’t go on for long…it has to be resolved “quickly” (I know…but I just couldn’t resist).

…And this is now

So here I am, the official manager of the Canonical Ubuntu Server team (and acting manager of Foundations and Security)…….up ’til now, I’ve been pretty client focused… I have to switch gears to the server workspace?…..backfill two positions?…..figure out our cloud infrastructure stack?….hell, figure out cloud!……what the %$#! did I just get myself into!!!! 😛

My first thought was old-school, corporate…analyze the competition….download each major Linux server….address our shortcomings and leverage our strengths.

Then I realized what a waste of time that would be, and even more importantly, just stupid.  I don’t even feel like these server distributions are “competition”, hell…they’re allies.  Furthermore, I have more important uses of my time than trying to make Ubuntu Server a clone of any one of them.  This includes Debian, whom we owe our existence to and respect enough that I want to make damn sure we don’t simply ship out the same product, but with a slightly different installer or a handful of additional patches.  If folks want Debian, then by all means…use Debian…it is as rock solid as they come.

I want folks using Ubuntu on their server for the same reasons people use Ubuntu on their desktops, laptops, and netbooks….because it’s easy to use, easy to install, fast, technically innovative, up-to-date with the latest hardware support, and backed by one of the best opensource communities in existence….and of course free ;-).

With all that said, I’m not naive enough to think that desktop users = server users, in terms of what they want/need.  I realize most sysadmins are risk averse, cringe at the thought of upgrading their OS every 6 months, and couldn’t care less about how visually stunning their boot sequence is.  However, they do want fast start-up times (especially for cloud instances, where time is money)…quick, easy, and scalable installations….and support for the just released RAID or SAN storage card adapter they just installed.  So I don’t want to duplicate everything we’ve done with Ubuntu Desktop, but I believe we can improve Ubuntu Server based on the same ideals and concepts that make Ubuntu Desktop such a success.  I’m also not suggesting we stop releasing Ubuntu Server every 6 months, or treat non-LTS releases as unimportant…but we should consider each LTS as a perfectly integrated set of features that we’ve delivered throughout the previous three releases.

“Okay Robbie…sounds good….but I thought Ubuntu Server is now targeted for the cloud….are you leaving us bare-metal folks behind?” ABSOLUTELY NOT. Make no mistake, I want Ubuntu Server to be the best operating system for the cloud (period).   The success of Ubuntu Desktop led to Ubuntu being the most popular OS used in “the cloud” today, and we’d be fools to ignore this.  The traditional Linux server landscape has been dominated by RHEL/SLES  on licensed-install side, and Debian/CentOS on the no-cost-license side…finding a way to squeeze Ubuntu Server in would be a steep uphill battle.  Our success in the cloud is the disruptive force that we need to get us in the game.  In my opinion, in order for Ubuntu Server to be the best operating system for the cloud, we have to succeed in two areas:

  1. Cloud hosting, i.e. we provide the infrastructure to run a cloud in your own datacenter
  2. Cloud instances

I strongly believe both efforts will incorporate and require help from our existing Ubuntu Server community….and hopefully grow it.

Cloud Hosting

No matter how widespread cloud becomes, there will always be a need for hardware. This hardware will need an operating system that takes full advantage of it’s features and overlays the necessary software fabric need in a cloud datacenter.  If Ubuntu Server is going to be the best cloud hosting operating system, then we have to focus on two things:


We need to run well on hardware targeted for the cloud, e.g. high-volume, low power footprint hardware typically sold at a relatively low price because manufacturers know people need a lot of them.  This means:

  • running well on the 1-2U rack machines sold by the likes of Dell, HP, and IBM
  • we need our community’s help by filing bugs when their own server hardware doesn’t work as it should
  • we re-evaluate our server kernel config options to make sure we’re still tuned for the best performance possible
  • we integrate and/or develop power saving technologies to help our users keep their operating costs down
  • Canonical works to establish relationships with the server teams in Dell, IBM, HP, etc.  So that we can have the same advantages given to Red Hat and Novell in terms of knowing about new hardware support requirements before new server hardware is released.
  • staying up-to-speed on the latest technology trends for server hardware….two words…ARM Servers…I can’t tell you how excited I get just thinking about it 🙂

Integrate and Innovate

Ubuntu has always been about integrating the best opensource technologies, and we should do no less with our cloud infrastructure technology choices.  Ubuntu Server’s cloud infrastructure option should:

  • be fast and simple to install and configure
  • be compatible with Amazon EC2 APIs
  • provide hardware failover support, i.e. high availability
  • support the rapid deployment of nodes running any cloud OS a user may need
  • provide a complete opensource enterprise-ready solution

Cloud Instances

The other side of the coin is making sure we excel running in the cloud.  Ubuntu Server should not only run well in Ubuntu hosted clouds, but in popular cloud datacenters that support Linux instances, like Amazon EC2, Rackspace Cloud, the IBM Cloud, etc.   A few examples of how we might do this are:

  • Provide an optimized kernel for running as an instance within a given cloud.
  • Leverage our differentiating technologies, e.g. byobu could be tailored to each cloud for realtime feedback on resource usage and costs
  • Ensure the stability and reliability of workload configurations we think our users will want to deploy into the cloud.
  • Deploy and maintain mirrors within the cloud to make updates faster and reduce user costs
  • Ensure compatibility with popular cloud management applications

Oh…and One More Thing

We need to take a serious look at the Ubuntu Server installer…think about the types of users we not only have now, but also want in the future…and make sure we address everyone’s needs.  At the most recent Ubuntu 11.04 UDS we held a session about providing an Install Service, and those in attendance seem to really get behind us doing such a feature.  For details, I recommend reading the blueprint and spec, but in short, we would divide the Ubuntu Server install into 2 steps:

  1. Minimal text-based system install – This is all about doing the bare minimum needed to get the machine or instance up and running fast for users who know exactly want they want to do.
  2. This would be an optional step to assist sysadmins in configuring a machine or instance (local or remote) based on predefined configurations.  As usual, we would provide a basic set of predefined server configs: DNS, FTP, Mail, Print,etc, but then create a PPA to allow community members a way to contribute their own configurations for others to use.  For example, maybe someone has a set of packages and config scripts they commonly use to setup their home media server, so they create the server configuration file and upload it to the PPA for others to use.  This second step would also allow a sysadmin to configure a machine or instance as an install server and/or local archive mirror for other machines connected to the same internal LAN.

The Ubuntu Server team has undertaken a full evaluation of several options for the backend of this Install Service, and has come to some conclusions.  We propose that our efforts be focused on improving one of the industry standard packages, namely, Cobbler.

Our Rationale

So one key component in any modern system, is participating in a distributed network.  The rise of Infrastructure as a Service (IaaS) providers has shown us the power of having provisioning API’s for doing interesting things, like spawning nodes, tearing them down, and reconfiguring them for other purposes.

While the actual hardware may not be as readily available as VM’s, it is no less important that upon arrival, this hardware is easy to provision and integrates with existing systems quickly.  A sysadmin’s time is valuable and the less time they spend bootstrapping new machines is more time they can spend elsewhere.

With that in mind, the Ubuntu Server team believe it is key that a provisioning system be built around a web based API.  This is why we have selected Cobbler as the provisioning system most likely to improve the Ubuntu admin’s experience.

During the process of evaluation we considered other options:

  • FAI – While certainly being a sound solution.  This did not have what we considered to be a simple enough or intuitive interface.  In addition, we were hesitant to choose a backend that relied on NFS for file transfer and manipulation.  We also had trouble finding anything that would constitute an API.
  • Edison – A newcomer that was created as a Cobbler alternative.  However, it is still too early (pre-alpha) to rely on it. Trying to make this do what we want would essentially be writing 90% of it from scratch.

We also considered adapting our own tools, such as uec-provisioning or cloud-init, but felt our time and resources would be better spent on improving existing solutions that already have the base functionality we need.  Cobbler did, at one time, have the full ability to install Ubuntu, but that support has gone unmaintained. Also, there isn’t a current package in Debian or Ubuntu, but some work has already been done to produce a package and it’s not far off from the level that would be needed to add it to Ubuntu.  Finally, this was the likely candidate selected in the session at UDS, and gets the most positive feedback in preliminary discussions with Ubuntu Server community members.

We fully expect this effort to span multiple releases, and have a goal of it being done by 11.10 to allow for testing and bug fixing for the 12.04LTS.  Our focus for the 11.04 development cycle will be:

  • Packaging, including policy compliance and sane defaults
    • Our goal is to have it all in universe for Natty
  • Upstreaming Ubuntu-friendly template snippets and preseed templates
  • Improving the code for deploying Ubuntu
    • Currently there’s support for Ubuntu, but it needs to be updated and maintained.
  • Adding apt support
    • Cobbler can configure yum automatically to pull from a local mirror, we need it to do the same for apt.

Looking ahead…

I’m really excited about what we can bring to the table over the next few releases.  The ideas and plans I just laid out, are just that…my ideas and plans…so don’t be surprised if any of it changes :-).  Ubuntu Server has had the fortunate luxury of “riding on the coat tails” of Ubuntu Desktop’s success, and while I am thankful for this…I would love to see Ubuntu Server taking “top billing” in the 12.04LTS release.  I strongly believe that in order for this to happen, we will need to make some changes, and I can’t promise they’ll be changes everyone will agree with, and that’s fine….communities our size, with such committed members will have disagreements.  What I can promise is that we will make them transparently and try our damnedest to consider what’s best for our users.  And if/when we slip up, I fully expect our users and our community to keep us honest by calling us out on it….just as you’ve done so well all along. 😉

Anything is possible…

Whenever I think there’s a problem I can’t solve…or a situation I can’t get out of…I think about my kids.   You see, if you saw them separately…alone…you’d never guess they have the same parents.  They’re just my little reminder that you never REALLY know what might happen ;).