Agile Zone is brought to you in partnership with:

Matt is a software engineer and web developer. He is the author of several books on programming and technology, and is a frequent open source contributor. Matt holds a Ph.D. in philosophy, and has taught both Philosophy and Computer Science at Loyola University Chicago. Matt is the lead cloud engineer at Revolv. Matt is a DZone MVB and is not an employee of DZone and has posted 18 posts at DZone. You can read more from them at their website. View Full User Profile

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

  • submit to reddit

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.

Published at DZone with permission of Matt Butcher, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


John J. Franey replied on Fri, 2014/03/21 - 10:30am

The freedom FSF wants users to have is not dependent on the user's intent.  FSF would say you deserve to have the source code regardless of whether your neighbor can be helped by the program.  Freedom is a 'moral good' by itself.   A person with freedom can choose to do 'good' or 'bad' (that is freedom).   FSF would say, without Jim's source code, your use of his program would restrict your choices.  You should get the source code even if you have no intention of helping your neighbor.

FSF asserts that with 'non-free programs', program users have less control of the programs, and so, less control of their lives.  Do you refute that?

Andrew Thompson replied on Fri, 2014/03/21 - 4:12pm

 "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."

I've never heard anybody say or even imply something like the above.  The only thing remotely similar that I've heard is that if developer X gives developer Y software - then developer Y must obey the terms of the license for that software.  And to not do so would not only be dishonest and immoral - but also illegal.  Ie, if developer Y received that software under an AGPL license for example, he has to share all of his code - but that is not a moral argument.

Otherwise, giving away your software is honest and moral.  Much in the same way that donating to charity is honest and moral.  People who give to others should be applauded for doing so.  Few people would argue that not giving to charity says anything negative about a person.  But we should certainly applaud the people that do.

Gautam Pandya replied on Wed, 2014/04/02 - 12:43pm in response to: Andrew Thompson

Overall reaction to Oracle's decisions on OpenSolaris or more recent - Glassfish; doesn't it fall into "imply something like the above" category? After all they are the business decisions Oracle thought are in their interest but it was perceived quite negatively.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.