Matthew Palmer: Water Tanks, Reliability, and Redundancy
Water supply, in the developed world, is one of those things you just
pretty much take for granted. You turn on the tap, and clean, cool,
refreshing water comes out. Similarly, when I go to a fire in my shiny
fire truck, no matter what time of the day or night, I expect to able to
hook up to a hydrant and have a strong, steady supply of water available.
This level of reliability is something that we in the IT industry can
typically only dream of. Practically 100% reliability over a period of
decades, without constant maintenance and tweaking? Not a hope. To even
get close to that, we need clusters of fully-redundant servers, fancy
database replication techniques, and probably something totally out of
left-field like Erlang's ability to reload code on the fly.
But how do the water utilities do it? Clusters of fully-redundant
high-capacity pumps, fancy pipe re-routing techniques? Or something
totally out of left-field like a big water tank and gravity?
Where I live, we've got the latter. Thinking about how it probably
operates and is managed, I'm blown away by the sheer simplicity and
robustness of the whole design, and how it can handle all manner of
failures.
First off, consider how few components have to be working in order for
the water supply to continue for a while after some sort of catastrophic
failure. We need:
- Gravity. The water tank is at a high point, and gravity (and the derived force of air pressure) keeps the pipes pressurised. While gravity can, in theory, fail, if it actually does then we've got bigger problems.
- The water tank must be present and with at least some capacity to hold water. Yep, we can blow a hole in the top or side of the water tank and still have some (diminished) capacity to supply water. Try blowing a hole in the side of your data centre and see what happens.
- Piping from the water tank to the water consumption point. I'd say this is the weakest link, but it's a pretty robust link overall (modulo rampaging backhoes) and any other centralised water supply method (other than perhaps teleportation) is going to be at the mercy of a piping failure too.
Ironically, just after I started writing this post (and this gives you an idea of how long it's been sitting in my drafts folder), I saw an article in the RISKS digest about a water supply problem in Santa Cruz, caused by a power outage killing the refill pump for an extended period and resulting in the storage tank running dry. Hey, I never said that it was a foolproof system -- especially when you've got failures of imagination that result in the system that tells people that there's no power relying on the power source it's monitoring being up in order to be able to tell people that there's no power...
So, Debian is still trying to decide if it likes
In the interest of sharing best practices, here is my RC
bug squashing workflow:



Steinar H. Gunderson, sesse, has written an

I would like to point out that my
Someone recently asked me a few question about corporate participation
in open source communities and I thought I'd share my thoughts on this
topic here.
Are there differences between an open source project done for a
corporation and one done for personal reasons?
There are many different ways to run an open source project, led by a
corporation or by someone else. Some projects that are run by
corporations have few outside contributors. This is often the case with
projects that require copyright assignment (i.e. contributors have to
assign their copyright to the corporation). These projects may not gain
all the benefits of a true open source community, such as outside
contributions or high levels of peer review. However, they may still be
very successful projects and may have high levels of quality.
Projects done by a corporation may have better planning and may have
more resources than other projects. When a corporation, especially a
large one, starts or becomes involves in a project it can also give
credibility to the project and attract a lot of interest to the project.
This means that projects done by corporations may have a bigger impact
and might also be more visible in terms of publicity.
How do corporations successfully utilize an open source
community?
Corporations can benefit from an open source community in many ways.
For example, they can often find people who will review their code or
make code contributions. If people become excited about what the
corporation does, they might also spread the word and create viral
marketing for the corporation. Establishing a community around one's
project is often also a good way to identify people to hire since you
already have experience working with them and know their capabilities.
How do open source communities successfully utilize their corporate
relationships?
Corporations can make several unique contributions. For example, large
corporations can use their name to attract attention to a project and
give it credibility. Furthermore, corporations have some capabilities
that personal contributors often don't have access. They may have
special testing equipment (such as servers with thousands of CPUs or
hard drives) or access to a testing lab where a professional usability
test can be done. Finally, corporations can sponsor developer
conferences, which are typically very effective means for the community
to come together and work on activities together.
It is important for projects to remember that corporations are not
charities and that they will invest in an open source project for a
reason. Therefore, they have to ensure that the corporation will get
tangible outcomes from their involvement or sponsorship, otherwise they
may not stay involved in the long run.
What are the risks for a corporation when working with an open
source community?
One risk is that the code (or other form of contribution) is not
accepted. However, this is a risk any contributor to a project faces.
Before making any sort of contribution, it is therefore important to
become familiar with the project and its culture. Every project has
their own "do's" and "don'ts" that have to be followed.
Another risk is that a corporation will invest in a community project
that later on is abandoned by the community. However, in this case, the
corporation could take the lead and continue to maintain the project.
What are the risks for an open source community when working with a
corporation?
One potential risk is that the corporation will assert too much control
over the project. It's important for projects to ensure that the
community as a whole has influence over the direction of a project
rather than one particular player.
Are certain certifications needed in order for someone
to participate in open source projects for a corporation?
Certifications are not needed to get involved in or start a project.
However, it is important to become familiar with the open source
community and the project one wants to contribute to. A good first step
is to read the book Producing Open Source Software by Karl Fogel which
is
As I promised to keep you updated on recent developments on update-manager I am writing this article. Just as a disclaimer: I am not going to write about any recent developments here, but would rather like to point at a piece of code I added to update-manager that could be useful in other applications too.
Now, as the title suggests there are sphinx-aware Enums in update-manager. Enums are common constructs in other programming languages like C and allow simple creation of constants with, for example, ascending values (first constant has value 0, second has value 1 and so on). Python unfortunately does not include support for Enums itself, but I found it rather easy to write classes that emulate such a construct.
Nothing is new about Enums in Python and there are probably quite a few different implementations out there, but I believe mine is different. The sphinx-aware part means that my implementation automagically updates the docstrings of the created instances and thus allows sphinx autodata method to include sensible information in generated API documentation.
I could go on writing about and praising my method, but I believe a short example gives you a better idea how my implementation works and what I wanted to achieve with this. Have a look at
Well, not really my first patch. But the first thing I tried to mess with when I first started looking at WebKitGTK+ was the