Over a million developers have joined DZone.
Platinum Partner

Good Guys Don't (Always) Give Away the Code

· Agile Zone

The Agile Zone is brought to you in partnership with Hewlett Packard Enterprise. Discover how HP Agile enterprise solutions can help you achieve high predictability and quality in your development processes by knowing the status of your projects at any point in time.

Sometimes proponents of Free Software make it sound as if you must give away all of your code as Free or Open Source Software (FOSS) if you want to be an honest and moral software developer. This is not the case. Morally motivated developers don't always have to give away their software. In fact, sometimes they should not give away their software. Here I explain why by drawing on some basic notions of moral philosophy.

Morally Laudable

To start with, let's make a quick philosophical distinction. There is a difference between something being morally laudable (praiseworthy) and morally obligatory (required in order for you to be good). Let's look at some examples.

It is morally laudable to...

  • Help your neighbors shovel snow off their driveways.
  • Donate money to a responsible and ethical charity.
  • Spend an afternoon tutoring at-risk children at the local school.

These acts deserve praise, and we treat them as morally good. But they are not moral obligations. What I mean by that is that it is also morally acceptable (though maybe not praiseworthy) to choose to spend your time, money, and energy on other things.

To take the analogies in a different direction, it is morally permissible to...

  • Rush off to work on a snowy day.
  • Spend money on things for yourself.
  • Spend an afternoon watching TV.

In all three of these cases, the activities are alternatives to performing the morally laudable actions. But we wouldn't call any of these wrong.

Morally Blameworthy

There are actions that are wrong for us to do. And some of these run parallel to the examples we have seen above. For example, it is morally blameworthy to...

  • Help your neighbor shovel snow onto the driveway of the sweet little old lady next door so that she cannot leave her house.
  • Donate money to a terrorist organization.
  • Teach at-risk kids how to cheat in order to better their test scores without working.

I have chosen obvious parallels to the morally laudable cases simply to show that merely volunteering time, money, or energy doesn't by that fact make an action morally laudable.

And Software?

Now we can take the ideas above and formulate some new examples based on software development. Writing software takes time, energy, and even money.

  • It is morally laudable to give away my source code under a FOSS license (provided it is morally neutral software).
  • It is morally permissible for me to choose not to give away my software, or to sell it, or to write software for a company that sells it.
  • It is morally blameworthy for me to create or use software for harmful and destructive purposes.

And this last point raises the distinct possibility that it may in fact be morally blameworthy to give away software whose practical purpose is morally blameworthy. (We might talk about black-hat hacking tools, biological warfare software, and so on.)

Most importantly, it is not morally blameworthy to create proprietary software. This is another example of not being obligated to give away time, energy, or money, even if doing so may benefit someone else. To be sure, there are instances where you may be morally obligated to give your time, energy, or money... but day-to-day software writing is not one of these.

One Seemingly Gray Area

For the most part, this all seems rather cut-and-dry. But one idea that Free Software enthusiasts often tout is that moral obligation extends this way: I want to help my neighbor, and Jim wrote software that he let me use, therefore Jim is obligated to release his software so that I can help my neighbor. If you've never read the Gnu Philosophy pages, you might want to take a look.

This sounds, on the face of it, plausible. But again, to accept this argument is to confuse moral laudability and moral obligation. Ready for an example?

Knowing my old clunker is in the shop, Janet loans me her car for the weekend. This is great for me. I need to run some errands on Saturday morning. But my neighbor Sarah's car has a flat tire, and she'd really like to drive herself to the charity auction on Saturday night.

Assuming that Sarah is at least moderately trustworthy and can legally drive, and that I desire to loan Sarah the car...

  • It is not morally permissible for me to give Sarah the car without Janet's approval.
  • It would be morally laudable for Janet to let me let Sarah borrow the car.
  • It would be morally permissible for Janet to not let me loan her car to Sarah.

My desire to share does not appear to have any impact on the moral laudability or permissibility of Janet's decision. It is, after all, her car. (Neither does the value, reproducibility, or scarcity of the car make a difference.)

Be morally praiseworthy and write some open source software. But don't fret when you can't. And don't condemn those who choose to exercise their morally permissible right to not release their code.

The Agile Zone is brought to you in partnership with Hewlett Packard Enterprise. Learn more about driving business innovation by leveraging Agile quality lifecycle strategies.


Published at DZone with permission of Matt Butcher , DZone MVB .

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}