Open Source Cry Babies

by Jacob 31. May 2007 21:22

UPDATE: Well suck. It turns out neither Martin nor Ayende deserve my censure here as NUnit uses the zlib license (which is extremely permissive). I managed to mix NAnt (which uses the GPL license) with NUnit. My bad. I hate when I mess up enough to invalidate my own points...

A number of bloggers take for given Microsoft's antagonism towards Open Source Software. Quotes like this from Martin Fowler are representative.

I was particularly sickened by Microsoft's reaction to NUnit - an excellent XUnit testing tool, elements of whose design were lauded by Anders Hejlsberg at OOPSLA. Microsoft ended not just bringing out a competitive library, but deliberately making it incompatible. That's not the kind of reaction that encourages people to invest their time in the platform.

Who Shot First?

The thing that these bloggers are overlooking is that Microsoft didn't open this licensing war. Open Source Software started this with the "CopyLeft" or "Viral Licensing" movements. These began with a set of licenses that deliberately forced anything a developer worked on that was "related" to the project to accept the same terms as that license. That meant that developers working on one of these projects could compromise the copyright of their employer if the projects could be construed as being similar. Special note about litigation: typing code instructions on a keyboard for the computer to interpret could have been construed to be "similar". The "Free" software movement thought this was a great idea and all but salivated at the opportunity to "liberate" corporate software.

That these same advocates were shocked, shocked I tell you, that companies like Microsoft then forbade their employees from working on Open Source Software even at home shows how disingenuous they can be. Again, the terms of some of these licenses were openly antagonistic to corporate-owned software and designed to jeopardize corporate software licenses. Unable to spend the resources to review every conceivable license all the projects their employees might work on, it's no surprise to me that a company will chose to go with a total ban on Open Source Software. Microsoft, in particular, is an attractive lawsuit target so it's no surprise that Microsoft was one of the first companies (if not the first) to ban its programmers from contributing to Open Source Software projects.

Things have calmed down a little from the initial hostility in the Open Source Software community as more and more devotees discover that they can't dictate terms to people with more resources than them. There are still nutballs on the fringe who maintain that Microsoft is simply evil and anyone who uses Microsoft technologies to develop applications is evil by association. While these strident voices are few, Open Source Software still has features that derive from these antagonistic forces.

The GNU General Public License

Robert Heinlein taught me that there ain't no such thing as a free lunch. I have found this assertion to be true.

Take, for example, the much vaunted GPL license. The GPL claims:

The GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

Most people have no idea what the specific terms of the license are and are content to take the FSF's word that GPL == free. This is not the case—it is not designed to give you freedom to share and change software if you ever want to recover your costs of development.

Specifically, the GPL license is an irrevocable license that includes requirements for anything "derived" from a work covered by it. These requirements include that anything you try to improve in a GPL licensed project is automatically and forever a commercial dead end and that you are required to release your source code for your improvements. In other words, all resources spent on a GPL licensed project are guaranteed to be thrown down the rabbit hole. That's hardly "free" use of the software.

As if that weren't bad enough, GPL carries a notification requirement such that anything that runs based on GPLed (or derived) code must present the GPL license information "conspicuously". I shudder to think what would happen if Microsoft had to include a conspicuous GPL notification on every installation of Visual Studio. The confusion over what's covered and what isn't is enough to set lawyers circling like sharks around a sinking sushi tanker. Plus, it amounts to free advertising for an organization that is, at best, antagonistic to Microsoft's interests. It'd be like forcing developers to open Internet Explorer in order to start Firefox (or vice versa). Not. Going. To. Happen.

Microsoft vs. NUnit

NUnit uses the GPL license, so I take both Fowler and Ayende Rahien to task for either ignorance or disingenuousness when they claim it is Microsoft's fault that NUnit wasn't picked up to become Visual Studio's unit testing framework. If you want Open Source Software to be picked up and improved by large companies, then don't use licenses that are antagonistic to large companies. I don't see how that's so confusing or controversial.

In addition, a project that is as popular and widespread as NUnit that has a GPL license associated with it is a project that Microsoft not only won't be able to adopt, they also won't be able to release anything compatible with that project without opening themselves to all manner of unseemly accusation and lawsuits. It's an unfortunate fact of the real world today that a number of highly motivated people are out to sue Microsoft. In that kind of environment, Microsoft has to take steps to reduce their legal liability and this is one of those steps.

A Middle Ground

There is hope for the future. Many licenses are in wide-spread use today that don't have GPL's more onerous terms. I don't have a feel for which licenses are most popular, but if you sincerely want to see Open Source spread into corporate environments, like Microsoft's, I recommend taking a close look at the license you are using for Open Source projects. Creating licenses that aren't directly antagonistic to corporate interest is a good step in the right direction.

On the other hand, if you continue being hostile to corporate interests, don't act all surprised when your work isn't picked up by large corporations. Cause, meet effect...

Technorati tags: , , , ,

Tags: , , , ,

General IT

Pearls of Wisdom

by Jacob 25. April 2007 11:26

Steve Harman had a post back at the beginning of the month about stuff you'd tell a young developer. It's a reaction to a similar piece by Jeremy Allison. It's an interesting topic, so I thought I'd waste a few pixels on it myself.

If it's not what you love, don't do it

I wouldn't generalize this to other fields, but for software development, I think this is a good thing to keep in mind. A lot has been made in the past by career counselors and other gurus about "finding your bliss" or similar nonsense. I think that's mostly a crock. You can be a good doctor, mechanic, or professor without liking what you do. Sure, those who love what they do will tend to excel at it and rise to the top of their field, but you have to ask yourself how much better off people at the top of a field are vs. those who are merely good enough.

That said, I think software development is somewhat unique as a career. Software development advances incredibly fast and keeping up with new technologies and ways of doing things takes a non-trivial amount of effort. You have to paddle hard just to stay even and that means experimenting and learning on your own. You could probably do fine if you have Arnold Schwarzenegger level drive, but short of that, loving what you do is about the only way to get you where you need to be.

Reputation is important

People who have been around the block know that the difference between developers can be extreme. Top developers are 5 to 20 times more productive than their peers. Given some of the complete incompetents I've known, I suspect that there's really no upper limit on that number.

Unfortunately, both Jeremy and Steve use this point to jump into the virtues of Open Source software. Open source contributions can enhance your reputation, but that has nothing to do with people being able to look at your code—it's more about working with other developers who can then form their own opinions of you as a developer. That's helpful, but limited.

A good reputation is someone talking about how well you did a job for them. It's your name coming up when someone asks "do you know any good developers?" A good reputation is more important than mere code sample availability and the wider your reputation can penetrate the better off you are.

How important is reputation? Let me put it this way: I haven't gotten a job from anyone who didn't know somebody I'd worked with since 1997. Your reputation and your skills are your only true security in this field.

Never stop asking why

The vast majority of people in any field are content to learn what they have to do to get the job done. Top-tier people are the ones who are asking pesky, even impertinent, questions all the time. Jeremy puts this under the heading of "Learn the architecture of the machine" but that's too limiting. Learn as much as you possibly can about why and how things come together to get the job done.

There's two parts to this, really. The first is that you don't stop just because you got something working. Find out why iterating backwards through an array fixed your bug. Look for the best event to use for control loading rather than just the first one you found that happens to work. Learning how to parse technical documents, navigate help files, and put a concise Google query together are key skills you'll need to master.

The second part of this is harder: if you don't know something people are talking about, ask. This becomes harder to do over time because you start believing your own hype. It's easy to believe that inner voice that's saying you can bluff your way through this conversation and look up anything important later. The thing is, the really bright people, the ones you most want to impress, aren't going to be fooled. I've also found that top technologists enjoy getting intelligent questions almost as much as they love answering them. Note the qualifier there and spend the mental effort to make your questions intelligent, though.

Your employer is more important than the community

This goes directly counter to both Jeremy and Steve and I'm going to tank any chance I have with digg or reddit, but it needs to be said.

Jeremy looks like he's coming from that staunch anti-corporation Slashdot tradition that talks in moral terms about the beauty of open source software and the depravity of Microsoft. Reality check: it is not a common goal of open source developers to create "the greatest, most beautiful work of art that all of you can create together." That's certainly not why I contribute to open source projects.

Open source developers are no more virtuous than corporate developers. While you may program for fun and the satisfaction of a job well done, the choice of project you work on is inherently a selfish one. Always. Whether you program for a paycheck, community recognition, or because you need working blog software that you can tweak when you want to your choice is based on internal needs, not virtues.

If they're both selfish, shouldn't I be saying that they're equally important? I don't think so and it's not just because a company will help support your family. The reason your company is more important is that your company has to compete in the market place. It has no choice. Because a company has to charge money for its products or services, the company is forced to provide things that other people want badly enough to part with their hard-earned cash. In practical terms, it means that a company has a reality check that can't be ignored because sooner or later they're going to have to go out there and prove themselves in the marketplace. While the tech bubble bursting was tremendously painful when it happened, imagine the crap pile we would have if it didn't burst. Ever.

In addition, companies force you, the developer, to do work that you don't want to do. Developers hate that, which is perfectly understandable. Being forced to work with unreasonable managers, clueless users, and hopelessly disconnected marketing weenies is a drag. If you're good, though, it's also a rich source of opportunities to tackle things that you might never have thought needed tackling. And it forces you to justify your dogma of choice to a group of supremely skeptical, self-confident people who have the welfare of their families on the line. Yeah, that's not fun, but it means that you'll have to learn to understand and articulate things you just know are true. With the added bonus that you'll find that they sometimes aren't so true after all.

Finally, be wary of advice from old timers

Not me, of course. My advice is nigh infallible. Just ask me, I'll tell you. If you go awry following my advice, it's probably because of errors in implementation.

Okay, maybe not. I've blogged about recent errors I've made, so I have to assume there will be others. Be careful about who you listen to. Be aware that everybody has their own hobby horses and pet peeves and it's a human trait to cram those prejudices into everything (particularly advice). Also be aware that internet communities trend towards consensus as much as any other human community does. Consensus is dangerous and will tend to mask assumptions and pitfalls. Develop a well-honed BS filter and use it liberally.

While you're at it, the sooner you learn to pass your own ideas and theories through a well-developed skepticism the better off you'll be.

Tags: , , , , , ,

Programming

Ways to Skin a Blog

by Jacob 13. January 2007 03:15

The folks who visit the actual blog (as opposed to using an RSS feed) have probably noticed that I re-skinned the site. Now that I'm more comfortable with SubText's skin structure, I figured this would be the next step. Personally, I think that it looks tons better now, but you can let me know in the comments if I'm just being delusional. I still need to tackle that calandar, though.

I can't take much credit for it if you like it. I'm perfectly aware of my (lack of) design sense. I can generally do okay evaluating existing designs, but I suck very, very much in creating my own. I found a design that I liked on Open Source Web Design and picked it apart enough to apply it to my SubText skin. Sweet that folks'll share like that.

Technorati tags: , , ,

Tags: , , ,

Programming

scruffylookingcatherder.com

Information

    Recent Posts

    Calendar

    <<  September 2010  >>
    MoTuWeThFrSaSu
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    View posts in large calendar
    Disclaimer
    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2010 Scruffy-looking Cat Herder