What’s Good for the Goose …

Last week, Forbes.com ran a great article where they interview Mark Fleury about IBM's recent Gluecode purchase. Mark is a bit miffed that IBM is trying to out-JBoss him. He thinks IBM is trying to put him out of business. In fact, the thought of IBM putting an open source company in harm's way is pretty amusing, but we haven't seen the last of this trend.

Read on for my $0.02 ...Ok, here's the backstory.
There are enough players in this conflagration to make a Tom Clancy novel,
but we can focus on a couple at a time and get a pretty good feel for the
situation. Let's start with Fleury. Here's a guy who started JBoss to
compete with the big boys by giving their software away and charging for
services. Fair enough. He's had some success, including a
>$10m Intel-backed VC round.. Along the way, he's vowed revenge on a group of developers who left to form their own company, and gotten himself and his company in a fair bit of a mess
by faking identities on some online forums
.
I get the impression that this is a guy who pounds a couple too many Red
Bulls every day.
But let's take another look. JBoss showed up as a software release in 1999,
and the JBoss organization became real in 2001. They grew via a
professional services model, and incorporated in 2004. Now you have a
company of some 150+ employees that's bringing in real revenue and hiring
real employees. They no more resemble the code-for-free open-source
stereotype than IBM does. In fact, they have promoted the term "Professional Open Source" to reflect their for-profit stance.
Now, IBM wants in, so they pick up Gluecode. They go on to announce that
they're going to undercut JBoss on services, and JBoss is a little nervous.
So, prediction time. Does IBM drive JBoss out of business? No. But I
think they may drive them into the arms of a white knight.
There are still a couple of gorillas in the mist.
Oracle is one possibility. They haven't made any big moves since picking
up Peoplesoft, and they wouldn't mind extending their position in J2EE by
getting on the hip open-source bandwagon.
A move that would make more sense would be for HP to acquire JBoss. This
would not only boost their professional services image, but would open the
door for some very interesting integrations. Consider JBoss extended to
run .Net software via Mono, and managed by HP management software (see
my earlier predition about .Net and J2EE integration in an app
server
).
You'd have a real heavyweight company getting behind J2EE and .
Net on the same application server via open source, with management that's
ready for real enterprises. All running on HP equipment and serviced by HP
experts. This would squarely hit the need that IBM is targeting: customers
want to get everything from a single vendor, but know that they could
switch if they needed to without disrupting their entire infrastructure.
For a bonus, consider HP picking up EMC and getting VMWare along with it.
Virtualization is getting hot, and HP could manage it along with everything
else.
In the mean time, it's priceless to watch Fleury squirm.

Related Reading
JBoss secures $
10m financing

Mark Fleury
accused of Astroturfing

Open Source Smack-Down

JBoss moves up to business processes

Update: IBM's Gluecode Deal Adds A New Wrinkle To Its Open-Source Strategy

Forum
discussion: Joel on Software on JBoss / IBM

Working in a Small Company or a Big Company

Most of us have had to choose whether we want to work in a big company or a small company. There are clearly benefits of each, as evidenced by the number of small companies trying to get big and the number of big companies trying to act small. But who's right? Who's best? Given the choice, do you want to work for a small company or a big company?A couple of well-known bloggers I follow chimed in and responded on this topic this week. Joel Spolsky started the volley with a post about recruiting, claiming that the environment and resources at his company greatly exceeded those available to your typical Microsoft employee.

In fairness, it's impossible to portray Fog Creek as representative of all small companies everywhere. In fact, one of the great things about small companies is that they tend to be a whole lot more unique from case to case than large companies. Joel does represent the successful small entrepeneur who's able to do some nice things to take care of his employees.

In my experience, these small companies can be extremely exciting places to be when they're working well. In general, they've started with a culture of having to succeed in order to survive, so they understand excellence and they understand execution. A young employee can learn a lot in a place like this.

Same thing goes for hiring. It's important everywhere, but it's vitally important in a small company. One bad apple can really hurt you because every part of the organization plays a critical role in the success of the company. In a bigger company, there are just more resources to deal with marginal cases -- better training facillities to make mediocre employees into good ones, counseling resources to handle problems, and so on. These things just don't exist formally in a small company, so individuals have to either sink or swim.

Availability of resources can be a mixed bag. As both Joel and Robert pointed out, there can be great resources in either environment. I've worked in some small companies, though, that were just a step or two above the stereotypical "garage and a bare light bulb." In general, if you're in a small company and you need something for your work, you get it as long as you can afford it. In a big company, you may find yourself wading through paperwork and months-long waiting lists in order to get something pretty trivial. On the other hand, when the things you need cost real money, there's nothing like the deep pockets of a big company to reach down and pony up the kind of real money it takes to buy serious hardware.

What's my preference?

I really like the energy and environment of excellence found in a small company on the rise. I also really like the resources available in a larger company. Once, I experienced a place where the small-company environment existed (to a degree) in a mid- to large-sized company. Only now do I recognize what a rare thing that was. The company's gone now, but if I ever find something like that again, I'll know enough not to take it for granted.

Generate code from XML

I've been looking at XML serialization / deserialization in VS.Net, and I'm really beginning to like working with the XSD.exe tool that ships with VS.Net. I've found that this is a great way to work from example data and end up with code that can serialize and deserialize directly from that data structure.The XSD.exe tool is found in the Visual Studio install directory in the SDK folder, and it's a command-line tool. It lets you take an XML document and generate an XSD (XML schema) document from it. You can then run XSD.exe again and generate code that works with XML that conforms to that XSD. Of course, you can perform one or the other of these steps if you want (skip generating the XSD if you already have one, for instance).

When I started playing with this tool, I knew very little about XSD schema documents, but the prototyping I've been doing has gotten me up to speed pretty quickly, and I think I'm sold on them now. These docs do an amazing job of defining the "low-hanging" business rules that seem to trip up so many applications. The final proof for me will be to see if I can use these without imparting a "sorry, try again" feel to an application (I'd like to guide users, not slap them down).

So far, I've found that I've been bouncing back and forth from XML to XSD to code trying to get things sorted out the way I want. In my case, I control the XML and the XSD, so I'm adjusting both of them to get a combination I like. It's also been very helpful to load the XML up with the generated code and browse the object structure at runtime. It's helped me see a few structural things that I've been able to clean up. Working through all of this, there are a lot of features in XSD that really help tighten up the definition of the XML, and being able to see the serializable code and browse the runtime objects really helps my understanding of the overall project.

As with any such generation technology, there's a round-trip problem here, so I expect that this is mainly a one-time prototype / jump-start tool. I also found it pretty awkward to use VS.Net to look as XSD files, because it launches a designer that doesn't really give you access to the XSD itself. Despite these small problems, it's definitely worth a look if you haven't seen this before!

Related links:
Learn about XSD on w3schools.com
Online XSD schema validator
MSDN documentation for Xsd.exe
Appdev: Generate web service stubs from WSDL

Clash of the Titans

IBM and Microsoft are squaring off for leadership of Enterprise development. Rational (IBM) is ramping down in fact on .Net support (they’ve been paying lip service only for quite a while), and Microsoft’s Ballmer (“Developers, developers, developers”) is positioning VS 2005 on the high end to be just what Enterprise developers have always needed.

Who wins and who loses here? And how does this affect the existing industry alignment (Microsoft vs. Everybody Else)?

News this week

Historical Background

Over the last few years, IBM and Microsoft have co-existed in relative
peace because they've concentrated on different markets. In the last year
or so, though, there's a definite "ain't enough roon in this town for the
both of us" feel to this landscape. IBM, whose stronghold has always been
big, big business, has made quite a bit of noise about breaking into the
SMB market. Microsoft, on the other hand, has been working hard on
building enterprise features into Whidbey, its next development platform.

The last time IBM and Microsoft really squared off against each other in a
meaningful way was when OS/2 and Windows were duking it out. In that
battle, IBM appeared to go quietly into the night, preferring to harvest
the more profitable pastures of hardware sales and high-margin services.
As the dust settled, they found themselves owning some big-company high
ground (good), but with very little platform or developer penetration (bad).

This was the point where they jumped big-time into Linux and Java support,
which made a good deal of sense for them. After all, they'd be able to
make a good living on services following this strategy. In addition, if
they couldn't own developers, they wanted to make damn sure that Microsoft
didn't either. Snapping up Rational added more fuel to this fire, fitting
well with the Java development and big-business focus. The final piece of
the puzzle for them was Eclipse, started as an IBM-sponsored open-source
Java development IDE. Ironically, in order to really woo the open-source
community, IBM had to relinquish control of the project, which has gone on
to be wildly successful.

So, IBM finds itself with a strong enterprise presence and strong ties to
Java and open source development. They have, however, no direct control
over a big-time language, OS, or IDE. They have an app server and a
database that are both respected but certainly not dominant. Finally, they'
re still outside looking in at the SMB market.

Microsoft, on the other hand, has owned the SMB market for as long as
there's been one, and they continue to advance their well-respected IDE.
They own the IDE and languages (C#, VB.Net), and they're chasing the
problem IBM had with eclipse: people are afraid to commit to platforms
owned by one vendor.

Microsoft has been vulnerable on the hobbyist programmer front relative to
open source platforms like LAMP (Linux, Apache, MySQL, and PHP/Python).
These platforms are free and it's easy to find cheap hosting with this
environment already set up, creating an uphill battle to attract weekend web
warriors.

In the enterprise, Microsoft has been losing to Java again because people
are afraid of vendor lock-in. Sun, HP, BEA, IBM and others have been quite
successful convincing big-time IT tha the only way to ensure scalability is
with a J2EE software stack on *nix. The apparent portability from one
vendor to another has also helped create the perception of safety.
Microsoft just hasn't had an answer to this, and going proprietary with .
Net didn't help their cause at all.

Today's Playing Field

Looking at this week's announcements, IBM can clearly be seen to be
retreating, while Microsoft is in attack mode. Microsoft's biggest
vulnerablility continues to be its single-platform direction, though there
are some signs of softening (cooperation with Sun, discussions with RedHat).
If Microsoft would publicly get behind cross-platform .Net efforts like
Mono and Mainsoft, I think there would be a big boost to .Net adoption as
companies see vendor and platform options become available.

IBM continues to shoot itself in the foot by taking on Microsoft directly
and even by poking at its most loyal developers (IBM created an uproar in
the Java community by showing interest in PHP; Java developers felt that
this was a show of no confidence in Java). Product offerings from IBM
continue to be disjointed and confusing, contributing to the perception
that IBM's products exist only to sell IBM's services.

The wild cards right now are vendors like Oracle and BEA, who have been
reasonably quiet in recent months. BEA just began a major campaign to
launch their next-generation SOA platform, which claims to be the optimum
platform for SOA regardless of language. Oracle is still digesting
PeopleSoft, but appears to be interested in taking the enterprise from the
applications front rather than the development front.

Predictions

As IBM's grip on enterprise development loosens, support for Java will
become more fragmented. The strong, widespread support for Eclipse ensures
that Java is in no danger of disappearing any time soon, but there's also
no sign of any unifying force for Java as a whole.

Although UML has never been really dominant (even IBM says that only about
6% of developers use UML), Microsoft's continued upward pressure will spell
the end of UML as a mainstream modeling tool. Rational will become
marginalized as a boutique vendor.

Finally, the big one. As BEA continues to position itself as the platform
to run the enterprise on regardless of language, they will integrate .Net
CLR support into WebLogic, perhaps through a derivative of Mono. This is
viable for them because they're already acknowledged as a leader in the
J2EE space, and nobody seriously considers Microsoft to be an enterprise
application management platform.

Although some have considered the possibility of a Microsoft/BEA
acquisition, it's actually more valuable for Microsoft to have BEA
establish .Net support while still independent. As an independent company,
BEA can relieve the single-vendor lock-in problem that's limiting Microsoft
today, facillitating much more rapid .Net adoption in the enterprise. As
the first application server to support J2EE and .Net, WebLogic will surge,
forcing Websphere and JBoss to follow.

There you have it - remember, you heard it here first!

Introducing Predictions

The high-tech field has never been at a loss for news. In my years as an IT professional, I have seen the change from mainly print-based (magazines, newspapers) to mainly electronic (newsletters, web sites). As distribution became cheaper, the volume of news has exploded, to the point where the volume of information that's available is overwhelming.

Though we now know more than ever before about what's happened, we're in no better position to predict the future -- until now. I've always had a talent for spotting trends and momentum in our industry, and I'm going to let you in on what I'm seeing. Watch this space for news you can really use.