Sunday, December 13, 2009

How to Screw Your (Open Source Software) Customers

I've been reading with interest (and amusement) a lot of the brouhaha around Oracle's acquisition of Sun, with specific relation to Sun's ownership of the MySQL database. The first salvo came from Stallman's concerns about MySQL being licensed under the GPL (ha!!) (also see Matt Asay's review of that event). Next up was Monty's discussion of MySQL's licensing, followed by yesterday's request to "save MySQL".

My opinion: the GPL has screwed customers worldwide.

All those customers who believed they were buying an Open Source database were misled. They bought a proprietary database, plain and simple. The GPL version was not available to them because they needed a license that didn't not require them to GPL their own software. They needed a version that could be combined with their own proprietary software.

Monty is entirely correct -- Oracle can totally screw them. It could raise licensing prices or even discontinue that licensing. It can cease development and third-parties could not fork and continue development under the MySQL name (it's trademarked).

But the fault lies in MySQL AB's choice of a business model. They chose to develop the software under GPL and require customers to pay for a less-restrictive license. Now that the software has moved beyond their control, their customers are subject to the whim's of Oracle. I'm making no predictions of Oracle's behavior, but there is no doubt who holds all the cards.

Much of the problem lies in the chosen business model (GPL with pay-for-permissive), but the enabler here is the GPL license. It gives undue control to the copyright owner. When that owner changes hands... the customers lose.

Contrast with a permissive license, such as the Apache License. Absolutely none of this discussion would have happened. Everybody would have rights to use the software, in exactly the same way. Customers could not market under the (MySQL) trademark, but they wouldn't care -- the database is a component in a larger system they are delivering to their own customers. There would not be a need to discuss the internal pieces, though they could still say "this produce includes MySQL(tm) software" and the trademark owner could not do anything about it.

If you are developing Open Source software for use by your customers, and you care about those customers, then choose a permissive license. You have no idea who will own the copyrights in the future (shoot... you might be trying for an acquisition!).

Sure, a permissive license will prevent this kind of business model, but we've now seen the dangers of the model.

Find a better model rather than hanging your customers out to dry.

Update: PJ has written a great article about this topic over at Groklaw

Monday, October 26, 2009

SubConf and ApacheCon

I'm about to head to the airport, leaving for Munich, Germany. SubConf is happening there this week. Last year, I gave a keynote; this year, I'm not giving any talks, but simply attending to work with the other Subversion committers. CollabNet, elego, and WANdisco have all pitched in to make my trip possible (thanks, guys!). Their businesses are built on Subversion, and getting committers together is a great way to make Subversion better, and grow their business.

I guess that I don't post enough about my hacking here, but Subversion has been occupying all my coding over the past year+. I'm working on rebuilding its "working copy library" -- the library that manages all those ".svn" subdirectories you see when using Subversion. There are several other people in the community that are working on this change, too. It is a huge amount of work, but will make Subversion much, much faster. The new library will appear in Subversion 1.7, which should be released early next year.

After SubConf, then I'm flying off to San Francisco. Going to see a bunch of people over the weekend, bar crawl on Halloween, and then spend next week at ApacheCon in Oakland. This is going to be a big event, as we're celebrating the ten year anniversary of the Apache Software Foundation. Huge milestone!

Friday, October 23, 2009

Posting about the Xbox again

For a couple years, I posted quite regularly to my Xbox blog. Then... nothing for pretty much the past three years.

Well. I've got my Xbox plugged in again. I've got the time. And I've been playing.

... so I started posting again. Go check it out, if you're a gamer.

Monday, September 14, 2009

OpenBSD and (oops!) NO threads


I just found out that OpenBSD only has user-space threads.

User. Space.

This came up because stdout doesn't work quite right, apparently. My friend says that OpenBSD sets it to non-blocking. In general, non-blocking means "try to write to , and what isn't written... try it later." But every program I've ever seen assumes stdout is blocking, so in the OpenBSD environment the unwritten data will just get dropped on the floor. Answer: build as an unthreaded application so stdout will work appropriately. Are you kidding?

How can an operating system claim to be Modern, yet lack something as basic as kernel threads?


Saturday, August 29, 2009

Google Books

There is an interesting furor that has been building over the past six months about the Google settlement with authors/publishers, which gives them the rights to digitize and make available books on the web. Then we have the Open Content Alliance that is "against" this process. They complain that it is giving Google some kind of monopoly over online books.

Google went through a long lawsuit and then paid a settlement to receive those rights. Why is the OCA is complaining? Why don't they just pay the same license? Why don't they just set up their own online book system?

Pah. That would be too easy. Instead, they want to complain and drag back the one company who is trying to advance online works.

They should step up, not hold back.

Wednesday, August 05, 2009

I Don't Believe in Obamacare

For a while now, I've been having issues with the idea of "Big Government" and it taking part in the health industry. There are lots of problems with health in the United States, but government bureaucracy is never a solution.

Consider the simple economic question of "how do we pay for this?" The answer has been various taxes on different entities. But that does not create value, it merely redistributes it. And any process of redistribution has overhead costs, and experience further tells us that government is quite inefficient doing this.

In short, we're simply talking about a productivity hit. Where is the additional value?

At a town hall meeting in Philadelphia, a woman had this to say:
I look at this health care plan and I see nothing that is about health or about care. What I see is a bureaucratic nightmare, senator. Medicaid is broke, Medicare is broke, Social Security is broke and you want us to believe that a government that can't even run a cash for clunkers program is going to run one-seventh of our U.S. economy? No sir, no.
She sums it up quite well. Our government has shown that it does not run programs well. The health industry is a huge part of our economy. I certainly do not trust it with the government.

I believe much of the problem in the health industry is in the supply chain. Huge markups exist at all points along the chain, and those costs are passed along to the insurance companies (not people!). Further, these supply chains and the resulting use and treatments are opaque, and (thus) resistant to careful analysis.

Many years ago, when I was not employed and had no health insurance, I was going to be billed $1500 by a hospital for a treatment. When the doctor found that I was uninsured, it was dropped to $1200. What does that tell us? There are costs in the chain of treatment that exist specifically to be paid by insurers. Rooting out inefficiencies like this would go a long ways to improving our health system today.

Tuesday, June 23, 2009

The Baen Free Library

A couple years ago, I was stranded at home with a broken ankle. Since I had just purchased my loft, and was only staying there a couple days a week (the rest of the time at a crashpad near work), I had no cable TV. Shoot... not even a TV. No internet either -- I was "borrowing" connectivity from a neighbor, though it was a crappy connection.

How to pass the time?

I figured reading a book would be good, but I certainly wasn't capable of getting myself to a bookstore. Then I recalled the Baen Free Library. I'd run into it, in some story about how publishing free content can actually help your business. Eric Flint wrote a page about why they are giving away books for free. The man gets it.

So... off I went. Through the crappy connection, I was able to get several books downloaded, and settled in to read them. One of those books was 1632, a story about a West Virginian town picked up, in whole, and thrown back in time and relocated to Germany. It is the first in a long series by Eric Flint. And it is really, really good.

And this is exactly why I say that Jim Baen gets it. After reading all the free books in the series, I went on to purchase another eight books or so. Baen Books made money where they otherwise would not have.

I have recently returned to the B.F.L. in a quest for books for my Kindle 2, which I got back in March. Yes, they offer their books in Kindle format. Lately, I've been reading the books from The Belisarious Series. The first four are available for free in the B.F.L., and the last two are free on Baen's Fifth Imperium website.

I'll end with a note that the B.F.L. is housed on, which sells quite large number of books, and all available in Kindle format. There are even some books that Amazon doesn't provide in Kindle format (like the excellent Paladin of Shadows series by John Ringo).

[Update: Eric Flint wrote that web page, not Jim]

Friday, June 19, 2009

My Bacon Number

No, not the tasty pork product.

The actor...

I've just discovered that Wil Wheaton has a Bacon Number of One, after appearing with him in She's Having a Baby.

Back in 2004, I played poker with Wil after his keynote speech at ApacheCon in Vegas.

Thus... my Bacon Number is Two.

Wednesday, May 13, 2009

Modern Day Racism

I twittered a pointer to a story about "Buy Black", and noted that it is just racism under a different label. Twitter is not a very good outlet for really discussing something, though.

I think the key question here is, "should business ownership diversity match the diversity of the population?"

If you answer "yes", then we need to fix these inequities, too:
  • overrepresentation of Mexican ownership of Mexican restaurants
  • too many Chinese-owned Chinese restaurants
  • way too many asian-owned dry cleaners
  • what's with all the Jewish diamond merchants? Get whitey in there!
I could keep going, but I hope you see my point. Why must business ownership match? Aren't you being racist by only buying from a black-owned business?

Now, granted. I can see supporting black ownership if there is something truly keeping them "down". But I would counter that Obama blows apart the notion of blacks being held back by "The Man". Hell... a black guy is The Man.

If you want to fix an inequity, then your time could be used to fight against the glass ceiling endured by women.

(and before anybody comments: yes, I use "black" just like I'm "white"; most Americans were born in the US and have nothing to do with Africa)

Thursday, April 23, 2009

The Licensing Conspiracy Idiots

When I worked at Google, one of the things that I got to do was choose the licenses that were allowed on Google Code. A quick consultation with Chris DiBona to ensure that I wasn't totally in left field, and that was it. We launched Google Code with seven licenses, and added an eighth (GPLv3) when that license was released.

I'd been observing the use of licenses on the site, and saw that the uptake on Mozilla was dead last. I mean really last. Less than a few percent. After many months of saying "we should axe that license", I actually dug in and killed it off.

And then the conspiracy nutjobs came out of the woodwork. Saying Google had some Master Plan and how it didn't like certain licenses. That it was trying to kill off licenses to further its own ends. Of course, I'd seen this utter nonsense before, so was ready for it.

The simple fact is that my goal was to reduce the number of licenses that people use for their Open Source projects. When you combine multiple software packages, the combinatorics around licensing just becomes insane. "Can we combine these? What are the overall requirements? What notices are necessary? Which pieces do we need to provide source for?" All of these questions become very difficult for the end user, and for packagers/redistributors.

Our job, as authors, is to help these people. Open Source and Free Software should be easy. We should not be wasting so much time on licensing (our own, or the people who consume our software).

In an ideal world, I believe people should choose the Apache License, v2, or the (GNU) General Public License, v3. Pick one based on your philosophy.

Middle-of-the-road licenses like MPL, EPL, and CDDL are wishy-washy. They can't decide to be permissive, or to maintain Freedom. Choose a philosophy.

And the experience on Google Code showed that people simply do not tend towards these wishy-washy licenses. Instead, they are chosen for your depending on whether you play in the Mozilla, Eclipse, or Sun playgrounds. Those licenses are not universal. So I took a step to help in that direction. Worst case, a few percent of projects would be hosted somewhere else with more choice around licensing (such as SourceForge).

The idiots barking about the Affero license totally missed the point. No conspiracy. They just had no numbers, and were fragmenting the licensing market. Go host your projects elsewhere. You never had and never will have an "entitlement" to host on the service of your choice. That is up to the service provider, and Google Code chose the path of limiting license choice.

Anyway. If you want your software to be adopted and used, then pick ALv2 or GPLv3. That keeps things very easy for your users.

Now go write some code.

(after I left, somebody added MPL back, along with EPL and CDDL; ah well... their choice now!)

Wednesday, April 22, 2009

Europeans Smoke Too Much

I've become very used to heading into a bar in Europe and wading thru smoke. I keep a machete on hand for just that purpose -- it is that thick.

And here is my obligatory stereotype comment: European is full of smokers. Fine with me. It's the culture. I'm not about to tell anybody to stop. But I am happy to return to the United States where the anti-smoking peeps have dug in and keep the air smoke-free in restaurants and bars and whatnot. Here in EU? I just deal. No complaints.

Today? Oh, dear. I've realized that the people here have elevated smoking to a whole new level. Not quite to Millenium levels, but wow.

I was out walking through the nearby forest / park. Some serious stuff here, with big trails for walking, biking, and even horses. Today, I finally saw some peeps on horses. They're at walking speed on the trail, going the opposite way. And guess what?

They're smoking. On the back of the horse. In the beautiful outdoor forest.


I hope these people will wake up one day and realize the world is a much more beautiful, clean, and clear place, when the haze of their smoke is not filling their lungs and face. I don't mind (lots of fresh air out there), but I feel bad for them ... not realizing what they are missing.

Saturday, February 28, 2009

Commit Access: It's a Social Problem

Many proponents of distributed version control systems (DVCSs) say the biggest advantage is that anybody can create a branch and begin working on a project. Whereas, for a centralized system (such as Subversion), the would-be contributor needs to have commit access before they can contribute.

Let's walk through this.

Obviously, this contributor can grab a tarball, make their change, and send a patch file to the project's mailing list. No commit access is required to do that. Why a DVCS, then? Well... the DVCS simplifies the retrieval and application of the patch (by the project's developers, or third-party users of the project). The contributor also gets use a version control system while developing the patch, which I'll just axiomatically state as a Good Thing.

Okay. So if they don't have commit access, then a DVCS is very handy. What would the scenario be if they did have commit access? The contributor could develop their change on "trunk" or on a branch. We've already stated this is a would-be contributor -- not one of the regular developers who already has commit access. It really doesn't make sense for this person to modify trunk directly, so let's just say the work is being done on a branch.

So why would this potential contributor not have commit access? Really? All their work is happening on a branch. It isn't like they're going to mess up the project from over there. They're going to generate some commit emails, sure, but maybe the other developers could then provide pointers, assistance, and feedback earlier than if the contributor had arrived with a patch, as a fait d'accompli. This is source control, people. Anything changed can always be reversed. No permanent harm is possible.

So why do potential contributors not receive commit access to a branch, as soon as they ask for it? For social reasons. It certainly isn't technical. Projects have an us versus them attitude, and they don't get to commit to our repository.

For reference, I'll note that the Apache Software Foundation provides branches to Google Summer of Code students. These students arrive with no credentials, they get a branch, and then work on their code over the summer. When they are done, the work can be merged back to trunk, if it is acceptable. It has worked out very well for all involved.

In the Subversion project, we set up branches for developers to try out their ideas. We say these developers have "limited commit access" rather than "full commit". I'll also note that there are no technical limitations on their commit access. Those developers could commit to trunk if they tried. But social restrictions prevent them from doing so. We've never had a problem with rogue developers, since it is so easy to undo any mistakes or intentional harm, and to remove their access.

In this respect, DVCSs are simply a workaround to social barriers put into place by projects. They do not address the core problem: projects should be inclusive rather than exclusive.

Thursday, February 26, 2009

Answer One, Ask One

whurley is trying out a fun series of question/answer posts on his site. He asks somebody a question, they answer, and get to ask him a question. He asked me whether distributed version control systems (DVCS) are bringing about large changes in the Open Source ecosystem. I asked him about Netbooks.

Check out the questions and answers.

Wednesday, February 18, 2009

Giving Back

Every now and then, I run into a meme in the Open Source world about "giving back". That if a person or company uses some Open Source software (OSS), then they are now obligated to give back (in the form of code, patches, money or whatever).

Why is this?

I write OSS because I enjoy coding. I have no need to keep it to myself, so I share it with others. But I don't attach strings to that sharing. That is why I've released it as Open Source. If I wanted strings, or expectations of "giving back", then I should have applied a restrictive license.

Question to other OSS authors: do you expect your users to give back? Why?

Why do we allow this "give back" meme to continue? If we are truly sharing our code, then it should not be with these kinds of expectations.

Westvleteren 12

I've blogged about this beer before. Even used a picture outside of the brewery for a profile picture. Fabulous stuff, as many reviewers would say, and a couple sites call it the best beer on the planet. I'm certainly a fan.

It is just so hard to get. They don't sell the stuff into the retail chain. You can't simply go to your neighborhood bar and grab a case. This is fine -- the monks are only making as much profit as they need, rather than being sell-outs. But it makes it hard as a consumer.

So... Answer is that the abbey will sell you cases. But you have to call ahead of time. And call. And call. AND CALL. The problem? The line is busy. There are so many people trying to get their beer reserved, that you need to be hovering over your Redial key.

This morning, I finally got through. Talked to the monk and reserved three cases of the Westvleteren 12, to be picked up next Tuesday. It'll be a nice long drive through the Belgian countryside, but it is worth it.

You know... Belgium does have its high points!

Friday, January 30, 2009

Taxes, Again?

First, there was Geithner with his late taxes. Big story on Capitol Hill. "Oh no! He doesn't pay his taxes properly! He can't be Mr Finance!"

Now we have Daschle and an amended return for taxes due to "value received" in terms of a car and driver. "Oh no! A second failure for Obama!"

You know what? Fuck all that. The root of the problem here is not people trying to stiff the government. It is not people trying to get out of taxes. The real problem? Taxes are too god-damned complicated.

These freakin' lawmakers want to point fingers at these candidates and hang them out to dry for tax problems. It has nothing to do with the actual payments... they're just being political bitches. Find a wound they can rub salt in. Grind it down.

You. Me. Those candidates. Any damned human in the United States is going to make mistakes on their taxes. And you know why? It is those same bitchy congressman poking at each other. They passed the laws. They made Tax Law this complicated.

Taxes are an Industry. You wanna know how much H&R Block makes? All those independent tax accountants and attorneys? Intuit with their TurboTax. And helluva lot more than I can mention here. It is a bajillion dollar industry. And that industry has lobbyists. They want to keep the taxes complicated. Those congressman are not going to make this crap any simpler.

Result? People make mistakes. Even those candidates. They're human.

(and no, I have no opinion on them; I'm just pissed off at the hypocracy of Congress pointing fingers at the candidates about their taxes, when it is Congress that made it impossible for any rational human to properly follow the tax code)

(real answer: flat tax. seriously.)

Wednesday, January 28, 2009

The History of Python

Guido has been kind enough to allow me to post on a blog about The History of Python. I've just published my first post, talking about Microsoft shipping Python code back in 1996.

Tuesday, January 13, 2009

From the Wreckage Known as Perl...

Many years ago, I was setting up cvsweb to display CVS repositories on my web server. There was something funky going on (don't recall what), and so I went to go and fix the script. No problem, right? It's Open Source, after all!

Yeah. Right.

Hey, I'm no slouch as a programmer, and can actually get around a bit in Perl. But that cvsweb script is an absolute disaster!! (I suspect the FreeBSD peeps have fixed it tremendously; it was core to their version control for many years; but I'm talking back in 1999).

I'll repeat that again: DISASTER

Global variables. Functions with strange side effects. Sloppy organization. Poorly named functions and variables. Few comments.

One of the things that I've learned about Perl over the years is that it takes an advanced Perl programmer to produce maintainable code. Novice or intermediate programmers produce crap. The language is just so fluid and forgiving, that it is easy to create write-only code. I recommend Python to people because you only need to reach an intermediate level to produce reasonable code.

Back to cvsweb. After staring at the depths of hell for a while, I realized there was really one solution to the problem: rewrite it all in Python. I spent a weekend doing just that. About 2500 lines of Perl became 2500 lines of Python, and I published it as "ViewCVS".

That tool has since grown support for Subversion, been renamed to ViewVC, and is being further developed and maintained by some friends.

Thursday, January 01, 2009

The Power of Facebook Relationship Status

Everybody seems to notice and watch your Relationship Status on Facebook. Your updates may come and go, pictures may be posted, or other weird things may fall into the feed on your wall, and it goes right past your friends. But everybody notices changes in your Relationship Status.

One year ago, I changed my status from unstated to "Single", and got an outpouring of concern that I was "now" single. Of course, I had been for a long time, but just didn't throw it "out there" on Facebook. I do have to confess that doing so may have changed my outlook on life. "I'm now telling people explicitly that I'm single" -- that does indicate a change in mindset, really.

This New Year's Day, I got to change my status to "Engaged". What a difference a year makes! If you had asked me where I thought I would be in a year... this certainly would not have been on the list! But it is, and I am incredibly happy about it (obviously, duh). It has been just eight hours since I made that change, and there are already lots of comments from my friends! (mostly of the "congrats" form)

People wake up from a long night of New Year's Eve partying, and check Facebook. It's a crazy world we live in, but I think it is also a great way to "get the word out" and let your friends know that your life has changed.

Thank you everybody for the warm wishes so far, and thanks in advance for the wishes not yet said.