Open Source’s Talent Advantage

1 Comment

Was reading an article on TheStreet.com about Why Wall Street Hates Open Source.  I think one of the things that business people often don’t know about is the talent advantage open source companies have.  Answer this question:  What are our hiring practices?  How do we hire people?

We know they can do the job

Most of the developers that come to the JBoss division of Red Hat were/are contributors to at least one of our open source projects.   Think about that for a second…Before we start paying somebody a dime, we’ve worked with our potential new employees months, sometimes years at a time.  We know what they are capable of.  We know the quality of their work.

We can hire anybody anywhere

The world is our labor market.  We can hire anybody anywhere without having to move them because we already have distributed development model.  A development model that our employee has already participated in.

Our developers have initiative and are self-motivated

Open source developers are uncommon.  Why?  It takes initiative, and lots of it.  You have to have the gumption to download the code and figure out how to build it.  Then you have to have the skills to be able to understand and dive into somebody else’s code so you can add your pet feature or fix a bug that is holding you up.  You have to go beyond the scope of your job description and learn something new.  When we hire a contributor, we know we have somebody that isn’t afraid to take initiative and drive things on their own.

Our developers already know our products

In my experience, the vast majority of our contributors are actually users of our products.  They’ve come to help, because they are missing a feature or bug that hinders the progress of the work they are being paid to do.  They know our products, but more importantly, they know what’s wrong with our products and what they don’t like about our products.

Our developers enjoy what they do

Core contributors often contribute during their free time.  People aren’t willing to give up free time if they don’t a) enjoy what they are doing, b) don’t like our products.

Our developers are part of a movement

Richard Stallman aside, open source is not socialism, yet it is a movement.  A movement most developers are proud to be part of.

Anyways, this is one of the many reasons I think Red Hat is built to last.

Mocks are a Mockery

17 Comments

There were some interesting side conversations going on in the comments of my Java EE wins over Spring blog.  In particular, a few people were arguing over the value of Mocks.  I always considered Mocks a bogus pattern.  Only time I ever use them is when I’m initially starting a project and I don’t have full implementations of a particular subsystem and I need to test that something works.  You see to me, your GIT master branch, or your SVN trunk is a sacred place.  I fully believe in the idea of continuous integration.  But to have a pure Trunk, you have to test your code, as close as possible, to the target environment it is supposed to run in.  Mocks go counter to this idea.  And give you false sense of security.

My colleague, Stan Silvert said it best:

When you DO use mocks you are testing in an environment that is biased toward a passing test. An artificial environment will always make invalid assumptions about the behavior and stability of that environment.

What you end up with is a (hard to maintain) mock library that allows your tests to pass and gives you a warm feeling that you’ve done a great job. But you are fooling yourself.

The ONLY reason to use mocks is when test execution in the real environment is unacceptably slow. This used to be the case quite often. But with frameworks like Arquillian and super-fast startup times for app servers this is no longer a frequent concern.

I’ll end with an even more radical assertion. The difference between integration testing and unit testing is purely semantic. Even the smallest, most focused unit test pulls in a lot of the environment (JVM, OS, etc). In-container testing just pulls in more of the target environment and allows you to find more errors sooner.

Test in the real environment and get results that are truly valid. Stop kidding yourself with mocks.

Personally, I’m a very paranoid person when it comes to development.  Earlier in my career I did a lot of demos and live coding in front of an audience.  When you’re in this type of environment you live by the mantra that anything that can go wrong will.  So, when rehearsing, you always mimic as much as possible what your setup will be.  I carried this paranoia to Iona (an Irish company), when I worked on Orbix there.  We had a rule, that if even one test (integration or whatever) failed, you were awarded the Guiness Penalty.  If you broke the build, you had to buy every one on the team a pint of Guiness.  IN this environment, Mocks are a waste of time, both in build CPU and in coding time as you still had to run integration testing before you committed anything (unless of course you just wanted an excuse to have a few beers).

So unless a particular integration test is ungodly slow, don’t use mocks.  Stan again, said it best:

…the days of the 2 hour in-container smoke test are over.
Since mocks no longer provide much of a speed advantage their use is outweighed by the fact that they give you a phony environment, maintenance headaches, and false confidence.

But you do touch on a truth about testing that a lot of people miss. The purpose of testing is to uncover errors. And you will uncover more errors in a real environment than you would in a mock environment.

With projects like Arquillian and fast boot up times like AS7 (1.75 seconds on my laptop), there’s no need to mock anymore.

Apache damaging to Open Source

8 Comments

I just read an interesting blog by Savio questioning the value of LGPL.  IMO, he has something right, the OSS license chosen for a project is not that important as far as adoption or business goes.  The most important driver for OSS is and always has been the brand of the project.  Like their commercial counterparts, how the project is perceived by consumers is what drives both adoption and business.  So, I agree, LGPL doesn’t add a lot of value.  But, it goes both ways, the Apache license is also not that important either.

If you boil it down, the distinctions betwen GPL, LGPL, and ASL are pretty much meanlingless to most consumers of OSS.  How so?

1. The viral nature of GNU bases licenses is only triggered when binaries are distributed.  Most consumers of open source do not distribute software publicly.

2. LGPL is also not an issue for ISVs as long as they leave the binary as-is.  Its viral nature is triggered when the project is both modified and distributed.

So, when you take these two points together, the number of people affected by the differences between GPL, LGPL, and ASL become fewer and fewer.  GPL does not affect > 90% of OSS consumers.  For LGPL, the number of people actually affected by the license becomes a number that you can probably count on one hand.  The ones affected are the ones who actually want to use derivatives of the project within their own competing initiatives that are not LGPL-based.   So, do you see how meaningless it truly is?

Why making these distinctions is damanging

This all brings me to my final point.  The whole push by Apache.org and its minions that ASL is the one true license is just damaging to open source.  When you consider the handful of individuals affected, you got to question the motivation for it, especially when you match it up to LGPL.  The thing is though, highlighting the differences only helps those handful of people that have selfish motives and/or want to exploit OSS for commercial gain.  Believe me I’ve lived this.

Back in 2003, a group of JBoss contributors tried to fork both the JBoss code base and the JBoss business.  IMO, their motives were mostly financial.  They wanted a bigger piece of the pie that Marc Fleury was unwilling to give up.  Whether or not they were right to do this is besides the point, there are good arguments on both sides, and whats done is done.  They initially derived themselves from the JBoss codebase, went to Apache, and thus Geronimo was born.  We complained that their derivation was both a copyright and LGPL violation.  In the end, they started over from scratch (don’t think the LGPL had value for JBossians back then?  think again!).  When Geronimo 1.0 came out, their feature set was vastly inferior to JBoss so their push was that it was the only Java EE implementation that was ASL.  That LGPL was scary and the only way to get over the fear was to use ASL-based projects.  IBM got into the act when they purchased Gluecode (and all the Geronimo developers) and embraced Geronimo as their children’s edition of Websphere.  Again, the main push was that Geronimo was ASL based.

We then come full circle to 2010 with history repeating itself (well, sort of).  You have Tom Bayerns leaving Red hat for Alfresco to create a competing BPM engine.  Now, I consider Tom a friend, and I completely understand his reasons for leaving Red Hat.  That being said, launching a new open source BPM engine with the premise being “we want to create something in ASL because it is better for our business”, is not the way to go about it.  Again, it smacks all over of having nothing but the zero-add of the ASL distinction.  And, is just completely irresponsible.

If you are an Apache guy, you should be appalled by behavior like this when it happens.  Individuals and companies that use ASL as a weapon to further their own selfish and commercial needs should be castigated and called out instead of championed as the reason why ASL is so cool and LGPL is so bad.  Respect the choice of other open source developers, propagating the myth that an ASL project is superior to a LGPL project because of license distinctions does nothing but hurt the open source movement as a whole.  We need to stop eating our own.

Finally, I just don’t want to bash on Apache and ASL.  Joining the GPL revolution isn’t so hot either.  The fear of GPL virality is used extensively in the dual-licensing ploy of commercial interests.  Think MySQL.  For me, I would never pick GPL, because I believe in the freedom of letting ISVs distribute my stuff as-is.  As for LGPL vs. ASL?  I could care less, it really doesn’t matter.  You don’t see JBoss caring so much either.  Drools is still ASL as well as a number of other jboss.org projects.

Anyways, have fun with this, and remember taking any one position to seriously is unhealthy.

dm to Eclipse: Does it really matter?

14 Comments

I was just reading on Adrian Coyler’s blog that Spring’s dm Server is moving to Eclipse.org.  Cutting through all the blah blah blah, this is what I came up with as the reason for this move:

“At SpringSource we know that open source development and community involvement can play a huge role in evolving simple, pragmatic solutions that enable a technology to bridge from early adopter to mainstream usage. We know because it is a path we have successfully taken many times. In creating the Virgo project at Eclipse.org, we seek to accelerate the journey of the dm Server and of enterprise OSGi along this path.”

What I extrapolate from this is that they want to accelerate adoption.  I have a simple fundamental question:

Does it really matter if you host your project at an OSS organization like Eclipse.org or Apache?

I’ve been living in the Java OSS community for about 9 years now.  IMO, based on my experiences with JBoss, the only thing that Eclipse.org or Apache really gives you is an established brand to promote your project.  I’ve always felt that a move to Apache or Eclipse, while may be beneficial in the short run with a bump in your adoption curve, in the long run it is bad for both your project and ultimately your business.  Why?  Because you lose control of both your brand and the governance of your project.  Brands cost money and time to build.  Governance introduces the inefficiencies of any bureaucracy (see my previous blogs on problems at Apache.org).  So, with both of those disadvantages, I question the advantages of moving dmServer to Eclipse.org.  JBoss has never had a problem starting a new project and building new communities on our own.  Neither has Spring for that matter.  Our brands are strong enough so that we don’t need the bump of an Apache or Eclipse to drive adoption.

The only real benefit I see to move to Eclipse or Apache is if you’re trying to build a consortium of companies that build off of a base core technology.  I really don’t see that happening with dmServer, even if that is there goal.  I know we wouldn’t use the technology.  Would Oracle?  IBM?  SpringSource is no longer the little guy.  VMWare is a serious competitor to all of us.

Standardization more important

IMO, a better route to grow adoption is standardization.  Hibernate got a huge bump in adoption by aligning itself under the JPA banner and EE 5.  We are seeing the same with Seam->CDI->Weld and Bean Validation.  Standardization drives adoption because it frees competing companies from having to depend on a competitor’s code base.  Since the APIs are public, vendors can provide their own implementations and value add on their own terms.  At the same time, standardization gives an easier entry point for vendors that want to enter into the space and gives users the peace of mind that they have less vendor lock-in.  Just because something is open source doesn’t mean that it is immune to lock-in.  The lock-in here is to the implementation.  Standardization breeds multiple implementations.

With dmServer, yeah, it is built upon the OSGi specification (and OSGi implementations), but that is just not the same.  You have to bring your innovations to a standards body to create the ecosystem.

What do you think?

So please help me optimize my personal algorithm for professional open source.  Do you think it really matter if you bring your project to an established organization if you yourself are already established?  I say no…


We’re listening: REST-*.org changes

1 Comment

Message Change

  • It is now an open source project.
  • We will be publishing the final content on IETF as a set of RFCs.
  • We’re still focusing on middleware and middleware services.

“REST-* is an open source project dedicated to bringing the architecture
of the web to traditional middleware services.”

“REST has a the potential to re-define how application developers
interact with traditional middleware services. The REST-* community
aims to re-examine which of these traditional services fits within the
REST model by defining new standards, guidelines, and specifications.
Where appropriate, any end product will be published at the IETF.”

Governance Changes

  • *No more trying to be a better JCP. We’ll let the IETF RFC process govern us when we’re ready to submit something.
  • An open source contributor agreement similar to what Apache, Eclipse, or JBoss has to protect users and contributors.

(FYI we already required ASL, open source processes, NO-field-of-use
restrictions, etc…)

If you have any other suggestions, let me know:

http://www.jboss.org/reststar/community/gov2.html

RESTful Interfaces for Un-RESTful Services

Many traditional middleware services do not fit into the RESTful style
of development. An example is 2PC transaction management. Still, these
services can benefit from having their distributed interface defined
RESTfully. The nomenclature will be RESTful Service vs. RESTful Interface.

  • 2PC transactions would be considered a RESTful interface under REST-*.org. Meaning using it makes your stuff less-RESTful, but at least the service has a restful interface.
  • Messaging, compensations, and workflow services would be considered “RESTful Services” that fit in the model.

Guidelines Section

This is where I want to talk about how existing patterns, RFC’s and such
fit in with the rest of what we’re doing. An example here could be
Security. What authentication models are good when? When should you
use OAuth and OpenID? How could something like OAuth interact with
middleware services?

Some of this stuff is already up on the website. (You may have to reload
it to see it due to cache-control policies.)

Finally, apologies for the jboss.org redirection. We don’t want is as a JBoss.org project.  It was meant to be a separate entity.  It is a problem with
our infrastructure.

Yet another reason to avoid Apache.org

4 Comments

I find  it strange how Apache.org allows for competing projects as they don’t really position themselves as a Sourceforge or Google Code.  I know I’m pretty stupid for creating buzz about a competitor, but IBM and HP have launched a new JAX-RS effort at Apache.org.  The thing is, the Apache CXF project already has a pretty good certified JAX-RS implementation.  If I were Sergey or Dan I’d be pretty pissed.  This just solidifies my opinion that Apache.org is a horrible place to host an open source project or to build start an open source business.

Not only do you have to worry about some Apache bureaucrat pulling rank on you or disallowing you to commit too much work to a project, you also have to worry about sharing your already diluted brand with a  competing project.  With a competing project the “Apache” in front of your project’s name ceases to add any value to the uniqueness of your project.

BTW, I don’t mean to pick on IBM and HP.  I’m just annoyed at Apache.org.  While it may be a great place for big vendors to collaborate at a neutral site, Apache.org is just a horrible place for the little people of the world.

I also shouldn’t pick on Apache.org so much.  They are a good organization with a good message and good ideals.  I just want to encourage future OSS developers to try and go at things on their own.  Learn to promote their project on their own without relying on the Apache brand.  Its better for them in the long run.

Be Liberal with OSS Commit Access

7 Comments

Commit access allows an independent open source contribute access to your project’s source tree.  Over the years I’ve found that it is best to be very liberal when granting commit access to my projects.  If the developers has submitted a patch that has solved a particular problem that even remotely shows they understand how my project is designed, I grant them access.  Think about it.  Somebody that has posted a patch has: learned how to download the source, has learned how to build your project, has stepped through your code to find and understand their bug or new feature, and most importantly has shown a tremendous amount of initiative.  Contributors are usually very honored when they are granted commit access.  It gives them a sense of ownership and pride.  They are usually relatively careful because they are so afraid that their code is out in the wild and can be viewed by anybody.

Sure, you may have a lot of turnover on who commits or not, but you sometimes get somebody that wants to stick around for the long term.  Especially if you start to give them more resposibility on the project and respect their abilities.  Sure, being so liberal often leads to poor commits and you having to rewrite some things.  The real value here is the unit tests and blazing the initial trail if we’re talking about a new feature.  As long as the potential contributor has unit tests that go along with their bug or feature patch, I’m usually more than happy to welcome them to the community.

What are your experiences?

BTW, liberal policy is my own.  Other projects at Red Hat may or may not be as liberal.

Success for Apache or for ASL?

3 Comments

This is an add-on to my previous post…

Now this Spring acquisition is it really a big win for Apache as Matt says?  Or is it really only a (minor) win for the ASL license?  I would say the latter.  When has there been a business success story for any project hosted at Apache.org on the magnitude of the SS, JBoss, or MySql?  I don’t think the Gluecode guys or ServiceMix guys got much money.

This goes to an original point I made some time ago that Apache.org is a horrible place to build a business as Apache owns your brand.  I know that’s how they like it and to each his own.

Your OSS License Is Mostly Irrelevant

2 Comments

I was reading Matt Asay’s blog on how the Apache license has made its first big business win with the Spring/VMWare acquisition.  In my experience, I don’t think the OSS license you choose has much bearing on an open source business model.  Red Hat/RHEL proved you could build a business and launch an IPO off of GPL-based software.  JBoss proved that you could make a lot of money and get acquired for a lot of money off of LGPL-based software.  Now Spring, at least, has shown you can get a healthy acquisition of ASL-based software.  We now have successful businesses that use the wide spectrum of OSS licenses.  GPL->viral, ASL->non-viral, and LGPL->somewhere in between.

I think what this has shown is that brand is the most important factor in creating an open source business.  If you have a strong brand, it really doesn’t matter if somebody tries to steal your secrets or even fork your project.  Case in point is RHEL.  I remember Larry Ellison stating that JBoss and Red Hat weren’t worth the price tag because Oracle could just steal the code.  Well, they tried it with OEL and have yet to dent Red Hat’s growth or revenue.

I do think though that license can only be a factor to protect you becoming an Apache or Eclipse fork.  Both Apache and Eclipse are strong organizations with strong, instant-brand recognition.  If your OSS license is Apache.org or Eclipse.org compatible, there’s nothing stopping a company or individuals from forking your project and setting up shop at one of these organizations.  Sure, it is a lot harder to build a business off of a project that is hosted at Apache.org or Eclipse.org because you’ve given a large portion of your brand to these organizations, but a fork like this can do a lot of damanage to your own brand.

Case in point, remember 2003 when a few JBoss developers split with the old JBoss Group company and tried to first fork JBoss, then finally ended up creating the Geronimo project?  In retrospect, I think Apache’s LGPL aversion saved us from Geronimo being an outright fork of the entire JBoss codebase.  In the end, I think we still would have won out based on both the leadership, company structure, engineering organization, and the brand Marc Fleury built, but I think it would have damaged us a lot more than a few defectors leaving the company.

All and all what OSS license you pick should be a personal choice rather than a business decision.  Since Red Hat and JBoss’s brand is uber-strong nowadays I’ve seriously considered licensing projects like RESTEasy under ASL to be Apache.org friendly.  Still, on a personal level I’ve always preffered LGPL as its a nice middle-ground between GPL and ASL from an idealistic position…

Spring Source: The drug dealer approach to OSS

11 Comments

Rod and Spring Source continue to make some questionable decisions on the licensing and distribution of the Spring Framework.  I’m wondering if Rod is getting some serious pressure to deliver on the more than $25 Million in VC money he’s gotten over the past 2 years, he’s plain getting bad advice, or just had an SMD moment with the OSS freeloaders out there that refuse to buy subscriptions for technology that isn’t much more than an EJB container and Struts.

I told you so!

The latest botched attempt to monetize Spring was the announcment that they would not be releasing community versions 3 months after a major release and further point releases could only be gotten from a subscription.  The Spring community was pretty pissed off as noted by this 200 post TSS Thread.

A year ago I warned you VC initiated things like this might happen to Spring when I demanded to Standardize Spring in EE 6.  Open source alone doesn’t isolate you from vendor-lockin.  Its standards + open source combined that give you true freedom.  Its why we standardized Hibernate under JPA and why we’re standardizing Seam under the Web Beans specification.

A Bad Move

The funny thing is, this money grab by Rod and company didn’t need to happen.  The move left me scratching my head in wonderment at the stupidity of SS management.  This move was stupid for two reasons:

  1. Spring Source pissed off their community for no good reason.  Developers can still get access to the latest and greatest Spring source code, but they have to build it themselves.  (And also hope the current branch is stable, but that really shouldn’t be a problem with using SVN and timestamp checkouts).  What I bet will happen is some people who haven’t tried EJB3 will try it now.  Others will simply look for an alternative like Google’s Guice framework or even JBoss Seam.  Others, with more initiative might even fork Spring.  Hey, its ASL, it could even live at Apache.org!  Actually?  No, this isn’t a very big deal.  JBoss supposedly pissed off the open source “mainstream” years and years ago (2003) and this didn’t hurt our growth rate, or hinder our dominance.  Still, bad PR is bad PR.
  2. More importantly, Spring Source screwed up their ecosystem.  How?  Many Java open source projects rely on Spring to bootstrap themselves, or for integration purposes.  For example, the Grails projects uses Spring extensively.  This move by Spring Source has screwed projects like Grails that have depended on Spring to work.  The problem is that 90% of Spring (at least the 90% of what people use Spring for) is the integration it does with other third-party products and projects.  What happens to Spring if the third-party projects in their ecosystem stop using Spring to integrate?  Rod just endangered the very thing that makes Spring compelling!

A Better Way

What boggles my mind here is that this could have been done very differently.  WE DO NOT DO THIS AT JBOSS!!! WE CONTINUALLY RELEASE COMMUNITY VERSIONS OF OUR SOFTWARE. And yet, we have are are still growing like crazy.  What makes people buy subscriptions is value-add.

The biggest value add is that large organizations want to know that you are going to support versions of your software for years.  Let’s say 3-5 years after its released.  Spring Source, could have left their announcement at “We will support Spring versions for 3 years” and it would have been a huge win for them.  I know it helped our sales when we announced a similar support policy years ago.

Another value-add is what we built with the JBoss Operations Network.  JON not only gives you management and monitoring, but also helps with pushing patches and critical security updates to users as quickly as possible.  You make distribution a service that people want to pay for.

A third value-add is to give away proprietary add-ons with the subscription.  For us, what we did was license or acquire proprietary technology.  We licensed the underlying technology of JON, which we later open sourced.  We acquired technology from Excedel to help productize our Eclipse tool offering.

The fourth and final, is of course indemnification.  Where we protect you legally from lawsuits.

The Drug Dealer Approach

Instead of modeling themselves like other open source businesses, Rod had to take the drug dealer approach to professional open source.  Give open source users a free taste of pure open source smack, get them hooked, then charge them big bucks when they need a fix for their Spring addiction.  What’s sad, it just didn’t have to be this way.

Older Entries

Follow

Get every new post delivered to your Inbox.

Join 612 other followers

%d bloggers like this: