[Cialug] Mandriva - open letter to Steve Ballmer

Josh More morej at alliancetechnologies.net
Fri Nov 2 13:35:59 CDT 2007


Well, I was going to stay out of this discussion, but seeing as how I've
been called out, I thought I'd share my view a bit.  However, I am going
to do so by way of metaphor and analogy, as I think that that would be
more effective.

In my view, things such as morals and ethics are poorly documented.  The
easy-to-read specification document makes it appear as if they should be
implemented as a simple rule-based list.  Think of your standard
procedural code:

# Define value hash, 0 = right, 1 = wrong.
$value{"kill people"} = 1;
$value{"steal things"} = 1;
$value{"comfort crying child"} = 0;
...
# For each situation, check hash value before acting
...

You get the idea.  However, when it came time to implement the ethics
code from the spec, the "programmers" ($diety if you are so inclined,
$self if you are not) ran into situations like this:

# Define complicated situations
$value{"kill people who killed lots of other people"} = 1
$value{"kill people who accidentally killed someone else though
neglect"} = 0;
$value{"kill people who accidentally killed lots of other people through
neglect that they knew about"} = umm, 1, maybe?
...

To avoid this messy code, it obviously makes sense to go to an object
oriented structure.  This way, you can have things like this:

# Define basic ethics
Ethics->{"kill.people"} = 0
Ethics->{"pet.bunnies"} = 1

Then, you can sub-class both the action and the ethics object to add
things like kill.people.mass_murderer and pet.bunnies.from_Holy_Grail,
to handle the annoying little exceptions that come along.  This tends to
work well . . . until you actually have to maintain it.

To properly handle these situations, you simply have to override methods
and variables for certain situations.  To make things a bit more
realistic, here are two common beliefs:

1) Every living thing has a right to life, and should not be killed just
so a human can eat it.
2) Humans are higher evolved/favorites of $diety and therefore have the
right to subject other living things as they like

Is one right?  Is one wrong?  Well, in ancient India, there was a class
of people called the Jains that strongly believed #1, and would only eat
plants that were rendered non-living by non-human effect.  They are
commonly portrayed in contemporary culture as a bunch of undernourished
people in togas who waited for wind to make fruit drop from the trees. 
In contrast, in certain areas of this hemisphere, there are groups that
make dogs and roosters fight to the death, taking great pleasure from
the activity.  They are commonly portrayed in contemporary culture as a
bunch of undernourished people in blue jeans who wait until the weekend
and then consume massive quantities of alcohol.  Both portrayals are
fairly stereotypical and offensive.

To my mind, both of these groups effectively overloaded the "how to
treat animals" section of code with a block that hardly forks at all. 
This puts them at the skinny end of the bell curve, and makes them easy
targets for such stereotyping.  However, most of us seem to have a set
of ethics that branch (and tangle (and loop)) much more than that.

To further complicate things, as good maintenance programmers, we try to
deprecate old and crufty chunks of code.  At one point, there was a very
complex set of logic branches in this country involving slavery.  It
went something like this:

1) People from Africa are below people from Europe, therefore they
should be considered property.
2) However, the racially mixed offspring may or may not be property,
depending on their skin color, how long they have been free, and how
their parents view them.
3) Oh yeah, if an owner frees their slave, that slave is no longer
property... but they may not own property of their own.
4) Unless they live in the North
5) Unless they committed a crime in the North, then they can be property
again.
6) Unless they were very far North, and the crime was relatively light
...

You get the idea.  In the last few hundred years, we have deprecated
this code.  Luckily, from a maintenance perspective, the people running
this code have generally been deemed end-of-life.  Once they are no
longer supported, we will likely remove this module entirely.

Here is where it gets tricky.  Many of us live in areas where the
programmers decided that the module should be removed NOW.  This makes a
lot of sense from a code management perspective, but as most of us lack
the ability to inspect other classes (good for security, bad for
self-documentation), there tends to be an assumption that the module
never existed in the first place.  This leads to thinking such as:

* It was wrong for the founding fathers to own slaves at all.
* It was wrong for the ancient Greeks to enslave their enemies
* It was wrong for Ghengis Khan to kill all of those people

It is important to remember, however, that when the ethics code was run
for those decisions, the overloading module was in place and none of
those actions triggered an exception.  Generally speaking, the human
race has had pretty poor logging code, and it is very difficult to infer
system state prior the creation of electronic data storage.

So, moving on to Nathan's point, we have a similarly complex branching
logic defined for the "eating animals" issue.  I personally know people
who draw the line as follows (highly simplified, but this is just an
email after all):

* I will eat animals, but I will not eat mammals because that's what
humans are, and most animals exhibit intelligent behavior.
* I will not eat anything that can feel pain, luckily I do not believe
that fish can feel pain.
* I will not eat anything that can feel pain, luckily I do not believe
that anything but humans can feel pain that way we can.
* I will not eat anything with eyelashes.
* I will not eat anything that causes pain for any living thing,
therefore I also cannot eat animal products such as eggs or milk.
* I will not eat beef or pork, because my doctor says not to.
* I will not eat anything that does not give consent to being eaten,
unless they cannot consent.  Thus, vegetables are OK, as are people if
they consent.

Then, there are the issues of the Congo gorilla-eating rebels and the
rare human cannibals.  

It seems obvious to me that this particular ethical issue is overloaded
pretty much everywhere.  My way of handling it is to understand that
most people are running different code than I am.  If I want to interact
with them, I need a set of system standards and an API.  Lucky for me,
they exist in the forms of etiquette and manners.  Sadly, however, the
APIs are not universally implemented, and you have cross-platform
problems... which gets me back to Linux.

See, we live in a world where people use lots of different operating
systems, both on their desks and in their brains.  This is a very good
thing, as it means that a piece of malware (be it digital or idea-based)
cannot universally impact everyone.  This design feature is what has
allowed us to build what we have and grow as we have.  Without it, we
would have all perished as soon as the idea of suicide and/or murder
arose.  (Based on historical records, we've had a few close calls.)

Of course, it would be SO much easier if we could all communicate
perfectly -- thus, the perfectionist idea of everyone running Linux is
out there.  Interestingly, the exact same logic would apply to making
everyone run Windows Vista... or Windows ME.  Because of this, one of
the additions that I have made to my personal ethics code is "if I flip
the situation around, is it still OK?"  I call this error checking. 
(Other people call it flip-flopping, so it's good I'm not a politician.)

So, getting back on the topic, I honestly believe that the Mandriva
people believe that the best solution to Nigeria's IT needs is Linux...
Mandriva Linux specifically.  I also believe that Balmer is completely
certain that Windows is the best solution to Nigeria's IT needs.  I'm
also pretty sure that Nigeria doesn't care about the issue nearly as
much as Mandriva and Microsoft do.  

I can see Mandriva justifying their use of the "open letter" as
completely ethical as it warns the IT community of an instance of MS
playing unfairly.  I can see MS calling foul on Mandriva's letter
because in business, one is expected to lose gracefully.  Similarly, I
can see Mandriva's belief that MS is being unethical in what they do,
but I can see ways that MS could sway the deal in ways that seem
completely ethical to them.

For example, suppose MS told Nigeria that if they used Windows, MS would
give them the money to pay Mandriva (yay, Mandriva happy), MS would
invest $3,141,592,653 into Nigeria's water system so that Nigerian
children can be healthier (yay, Nigeria happy (and people who like
unexpected pi references are also happy)) and all MS asks is that they
use Windows on those workstations (yay, MS happy).  If this occurred,
I'm sure that neither MS or Nigeria would see any ethical issues at all.

In conclusion, I don't think that anyone other than MS and Nigeria have
any idea as to what occurred, so any idea of ethical lapses on the part
of any party is pure conjecture.  Getting upset over it is a waste of
time and a waste of resources that could be put into improving open
source and making people's lives better.  I also believe that it is
wrong for me to eat mammals and for me to kill people.  It'd be nice if
others agreed with me, but to spend my time trying to change them would
take time and resources away from other projects that I care more about.

Besides, it probably wouldn't work.





More information about the Cialug mailing list