|
|
||
N. Alex Rupp's BlogBusiness ArchivesDrools is 100% JSR-94 compliant and an order of magnitude faster!Posted by n_alex on July 28, 2004 at 04:52 AM | Permalink | Comments (7)Also, in the last week we stripped bsh out of the core and replaced it with Janino. This change has made Drools an order of magnitude faster than it was (in the worst conditions--some of our tests actually ran a half an order faster than that!) We expect to tag a 2.0-final release sometime in the next month or two. Special thanks to Andy Barnett and Mark Proctor for their commitment to the project! I feel very comfortable using Drools in production systems, and the future of the project is looking very bright indeed. TC IASA presents "The Secrets of ROI for Software Architects" by Cris RossPosted by n_alex on July 23, 2004 at 06:44 AM | Permalink | Comments (0)Interested in Software Architecture? Twin Cities Resident? On Monday, August 16th 2004 from 6:30 to 8:30 PM, Cris Ross, CIO of United Behavioral Health will be delivering a presentation on "The Secrets of ROI for Architects" for the Twin Cities Chapter of the International Association of Software Architects (TC-IASA). The meeting'll be hosted by Intertech Training in Eagan, MN. Intertech Training (David Blevins of OpenEJB used to teach classes here) has sponsored the Twin Cities IASA chapter! They'll be providing us with a venue for our software architecture meetings. I've put up some more information on the August meeting at the TC IASA home page. If you want to come to the meeting, please drop me an email and let me know. Software architects of all stripes are most welcome, as are those interested in learning more about software architecture. Also, it's not a done-deal yet, but I'm talking with Gregg Kloke, former CTO of SimonDelivers.com (online grocery delivery service for those of you in cities without one!) about speaking in September. I'll let you know when I find out more about that. -- AlexApproaching ArchitecturePosted by n_alex on July 07, 2004 at 07:36 AM | Permalink | Comments (4)Warning--high buzzword content in this blog entry might cause headaches. Aspirin, cool water and a whitenoise generator recommended. For best results, do not read on an empty stomach. I've recently begun a Twin Cities chapter of the International Association of software architects. IASA is a not-for-profit company devoted to advancing the science of software architecture. The Twin Cities chapter will give residents of the Minneapolis and St. Paul area a language-neutral forum for discussing architectural concepts. We're having our first meeing in August, on the 16th. I'm still looking for a flexible and affordable venue, but we've got our speaker lined up and it's sure to be good. I'm just extremely thankful to have a group like IASA, which can offer me a national superstructure for hosting architectural meetings. I've really longed for high-level architectural discussion in the course of the last year, and found a rather sparse community. Believe it or not, the best friend the architecture community has right now is probably Microsoft corporation--they've been a tireless advocate of advancing architecture as a science and as an art form, and they've been more eager than I would originally have thought to assist my fellow IASA chapters (all of whom to my knowledge have been founded, organized and run by Java User Group leaders). They're actively encouraging me to seek out sponsorship for my local chapter from the J2EE industry, because they know that architecture is a language and platform neutral science (it's been around far longer than .NET or J2EE/J5EE/whatever version Sun's PR goons want to call it. The willingness of Redmond to assist without control and encourage cooperation with Sun, IBM, BEA, SAP, Borland, etc is an advanced indicator to me that Interop and SOA is truly the way of the future. And that means that software architecture as an explicit and well-developed science is also the way of the future. But so very little is commonly known or understood about software architecture. You can't get a degree in it. You can't really even become certified in it. Sun offers an architect certification, but theirs is really a language and platform biased vision of architecture that doesn't hold its own in the world of legacy interop and the emerging web services market. Paul Preiss, the President and Founder of IASA, has been coaching me on his views of architecture and I've been noticing a distinct bias against including the concerns of developers and development practices in the architects repertoire. This is strikingly familiar to the bias developers hold toward practitioners of interaction design (and also a little reminiscent of the stratospheric nasal tilt many enterprise developers have shown .NET developers in the past five years). In defense of those developers out there looking to learn more about software architecture, and as an early attempt to make architecture more accessible and less "mystic", I'd like to throw out a few of my own ideas about architecture, and some links to other definitions and resources that people might find helpful. The separation of development and architectural concerns should be undertaken only for practical reasons--when it is more efficient to have specialists focusing on each role than it is to have developer teams juggle traditional programming/construction and architectural/design responsibilities. The "Model-2" approach to software development kicked off a trend toward greater isolation and abstraction between roles in development teams. In addition to separating the concerns of interaction designers and software engineers, there have been advances for isolating the administrative and executive concerns from the development process. This might be mere conjecture, but based on my own experience, we might have software engineers to thank for most of these architectural advances--it is possible they've been providing automation hooks and tools to remove themselves from the middle seat. I think that perhaps some underground coalition of long-toothed Unix hackers tired of having its shores invaded by milling throngs of well-meaning but tiresome (savage) artists and executives has finally elected to do something about it. On the other hand, perhaps we are the savages and have the suits to thank for these new advances. Or (most likely), there's a bit of savage and a bit of savant in each of us. architecture, in a way, is a way for developers to climb up and see the larger picture. The more you work with different Open Source projects (especially when you're trying to augment, alter or otherwise extend an existing software product), the more you'll gnash your teeth and notice how difficult a poorly thought-out (or even a well planned but strategically dissimilar) architecture can hinder your progress and spoil an otherwise good user experience. For example, the Jakarta Tomcat server has a very specialized architecture that allows it to operate in a standalone environment. This is sort of like an astronaut in a space suit--it's got lifecycle management, onboard dependencies, all the things it needs to operate in the depths of space. But all that luggage might prove a hindrance when trying to embed it in a service-rich environment. For this purpose Jetty is clearly superior--it is well adapted to life in lush surroundings. This metaphor is working, and metaphor, really, is what software architecture is about, so I'm going to run with it. One could describe an architecture like one describes the evolutionary skeletal adaptations of an animal. The Irish Elk had a very specialized "architecture" in its 13 foot antler crown. Tomcat has a very specialized architecture that allows it to function in the barren environments typically operated by green-skinned n00bs. Both, because of their relative inflexibility (and I'm not by any means trying to cast a shadow on Tomcat--I've warmed to it quite a bit since becoming familiar with OpenEJB) stand to lose out when the environment changes. In the case of the Irish Elk, the weather improved and firebearing bipedals arrived on the scene. In the case of Tomcat, service rich environments and flexible component based architectures could render the "all in one" solution unnecessary. In order to avoid falling into disuse, Tomcat will need to adapt. And development concerns are not what's holding them back. The key lies in architecture. And this is why developers need to learn about architecture--particularly good developers. There is even cause for them to specialize--the all in one solution might not be well suited to our contemporary technical job markets any more than the Irish Elk was to the woods. The advantage that developers have over self-styled architecture purists is that they know from experience, perhaps on an untrained but intuitive level, how and where the programmatic weaknesses in certain software architectures might lie. But in learning about architecture, they need to abandon the minutiae of flow control and implementations of their software, and begin to concern themselves with the construction of modular but holistic systems, functional organs for a service-oriented world. In this world, executive concerns and Interaction Design play at least as important a role in the delivery of software products as developers. This morning's ramble is complete for now. I'll continue on this topic (and assemble some links to resources) soon. I landed my dream job: Open Technology SystemsPosted by n_alex on June 21, 2004 at 12:07 PM | Permalink | Comments (4)It's been a long haul since I started working with Open Source technology. There have been times when I've joked about the rice and lentils diet, only I wasn't really joking. I was putting a brave face on a pretty frightening and hungry lifestyle. I've never known for certain if my work in Open Source was going to pan out, and I've been just barely scraping by for longer than I care to admit. I figured if that's what it took to do what I really love, which is to write software and write about software, then that's what I was going to do. I had long since resigned myself to the "starving artist" mentality, because of my devotion to writing and poetry. I actually majored in writing and poetry in college, and there's an interesting story behind that. I was nearly expelled half-way through my senior year in high school (1997) for hacking past our school's security system (with a Mac, no less) and into the local bank. I had accidentally gained access to the district's payroll system (quite without knowing it, I swear!) In Saint Croix Falls Wisconsin they don't really know how to deal with that sort of thing. So, for the second half of my senior year in high school I wasn't allowed to use a computer at school unless a teacher was sitting next to me, watching my every move. No lie. It was a tremendously painful experience. I'd already taken almost every class I needed for graduation, and had very few electives to choose from (small school). So I doubled up on the independent art classes and took FOUR English classes with Mr. Beversdorf (sorry if I mangled your last name, sir--it's been a while), a weight lifting class and study hall. That's right. Full enforced immersion in the humanities for one semester, and I never quite recovered. I didn't have a computer at home (much less the internet), so this was a crippling blow to my hacking career. I learned during that semester that I wanted to study the liberal arts when I went to college, and not computer science. And that's what I did. I ended up taking a class on first and second order sentential logical languages my first semester, but didn't begin programming in earnest until I got a gig as a web designer at Dain Sundstrom's first company, Arcane Logic. (Here's a bit of trivia--one of Dain's parters at Arcane Logic was Charlie Demerjian, who writes for TheInquirer.net, and who is my roommate. Small world, eh?) By the time I took my first (and last) computer science class in college, I'd already been studying Frege and Russel's linguistic theory, and had made it and lost it in the boom. I could have been a better computer science student, but language theory itself is what commanded my interest, along with human-computer interface theory and language/literary theory. Also the University of Minnesota's computer science classes have upwards of 400 students in them, and the labs didn't have enough seats for all the students. I was bored stiff during lectures on control flow and when all was said and done I decided not to take up CSCI as a second major. I stuck with language and literary theory, and I'm still doing it (working with semantic modules in Drools right now). And when I had to choose a major I decided to go with learning how to write the perfect words in the perfect order, which is something that programming and poetry have in common. "Poet" just doesn't look as good on the resume as "M.S. CSCI", though. So for a while, Open Source has been my only shot at actually writing good software or working with smart developers. I kept at it, hoping it'd pay off in the long run, and decided that if I couldn't get a job as a developer that I'd start my own company and go after small clients. I don't need to tell you, bootstrapping a company on zero budget is no walk in the park. Very recently, I worried that I'd have to take a "bench" position at one of the giant, soul-crushing consulting firms here in Minneapolis, or give up the ghost (to borrow an expression from Hunter Thompson). And then, one day, while I was coding out loud on Drools at the Dunn Bros coffee shop on University Avenue, I met a guy who, by chance, knew some guys starting an Open Source company. . . He asked "are you a techie?" I nodded. He asked "do you do Open Source?" I nearly choked, and gave him an affirmative nod. He didn't waste any time. He asked me for my resume right there, and since I'd just applied for a job at the University I had a copy with me. He referred me to a company called Open Technology Systems (try googling that ; ) and made me promise I'd send an email to the company's VP. A week later I met with the company's President, Gregg Kloke and the VP, Randy Olson. Gregg's background was with a company called Simon Delivers, an online grocery deliver service here in Minneapolis. Randy had done consulting with Onyx (a bit before my time, I'm afraid) and they are both really into Open Source technology. Their business is based around providing Open Source solutions to small and medium sized businesses. After an hour with these guys, I knew I wanted to join their company. Last week they invited me to their office to sit in on a meeting with a local retailer and talk about Open Source in the context of their business. I thoroughly enjoyed myself and got along really well with the others I met there. It's been a sleepless weekend, but I got the offer letter last night, and I started this afternoon. The reasons I'm blogging about this is are pretty straightforward. First of all, I'd like to share the news of my good fortune with some of my friends out there, many of whom have been trying to help me land a regular gig for a while. Second, I'd like to thank Joe, Randy and Gregg (in order of introduction) for giving me a real chance to do what I love. Finally, it's to remind all the local guys I've met, who've studied computers because they thought there was a future in it, that there is a future in it, and that it's as bright as it ever was. And Open Source is going to play a huge role in it, perhaps bigger than anyone really knows. If you're a young developer (or language geek) and the times have got you down, stick with it anyway. Things will pan out. Now, lest I jinx my good fortune, I'm going to get some work done. Unit Testing EJBsPosted by n_alex on June 11, 2004 at 03:29 PM | Permalink | Comments (0)TechEd 2004, Day 04Posted by n_alex on May 27, 2004 at 10:33 PM | Permalink | Comments (1)One of the major themes at TechEd this year was how to increase productivity. The marketing slogan was "Do More With Less". Early on, I mentioned how Microsoft's Visual Studio tools give them an edge on the Java community. This isn't because Java can't have tools that are just as good as Visual Studio, but it's because the collected principles that lead to the development of those tools aren't a conscious and explicit focus of our community (at least not from what I have seen). The principles aren't rocket science either, and once you see them you'll know that most if not all of us are aware of them all at some level, but this is not the same as the explicit, direct focus I see coming from the Microsoft development community. I liken it to our focus on eXtreme Programming or Agile Development principles, of which the Microsoft development community is just becoming aware. These principles, perhaps better thought of as best practices, revolve around constantly and intentionally raising the level of abstraction in building software solutions, using more patterns and more frameworks for increasingly specific problem domains, grouping software into product lines and using component assemblies and code generation. It isn't any one of these principles that we need to pay more attention towe must practice them all at once, the way we practice agile development or extreme programming. The singular end goal of these principles is to identify and develop Domain Specific Languages, high level abstract languages that help us illustrate and discover patterns in our software, in our business processes and in our development practices. Domain Specific Languages can help us write frameworks for dramatically improving our productivity when developing solutions for specific, narrowly scoped aspects of software development. Domain Specific Languages contrast with UML in that they are highly tuned to a specific aspect of business or development, and they can more easily be used to configure underlying frameworks or generate code for specific families of software components. What I'm talking about here are tools and frameworks for writing software solutionsnot just for writing software code. They needn't necessarily be graphic-based languages. For instance, Groovlets are a perfect example of a domain-specific language for abstracting and speeding up the development of Java Servlets. But Domain Specific Languages should help reveal patterns in the creation of software components, and those patterns should be able to be summed up into even higher level Domain Specific Languagesperhaps a graphic or symbol based language, or perhaps not. The important part is that we continue to explicitly push for more abstraction in our tools, in how we represent the code, business concepts and development processes. In the session I attended on Domain Specific Languages, quite a bit of time was spent contrasting them with the UML. DSLs can be customized for any problem domain, they can be developed by cooperative organizations or built by single companies and made popular through use before becoming officially standardized. DSLs, because they are more finely tuned to specific problem domains can more easily be used to generate software code, whereas trying to accomplish MDA with raw UML repeats the mistakes of CASE tools. This is not to say that the UML is worthless, though. It is great for quickly expressing basic development concepts and for documenting different areas of development. No tools are perfect for everything, and DSLs not only acknowledge but actually embrace that fact. DSLs provide ways to express, model and develop very specific problem domains, because at the end of the day, improving business productivity is what computers are for. Can you imagine if a company tried to build a single tool that could be used for working on every aspect of an automobile engine? Or for building a house? There are millions of highly specialized tools for performing every type of job which can be done, and they are all very carefully tuned for their own specific problem domain. Software development tools are no different. I thought the presentation on this topic was great, and I'll hopefully be able to more explicitly apply these principles as I work on development tools in the future. TechEd 2004, Day 03Posted by n_alex on May 27, 2004 at 09:15 PM | Permalink | Comments (1)Open standards allow multiple vendors to offer their own implementation of valuable technologies. The Sun and JCP open standards are particularly good at helping small vendors participate in the technology market. Competition makes software cheaper, forcing the vendors to improve the quality of their products and services. Open standards also lower the risk for the end users by at least providing for some common ground between technological platforms. Microsoft and Sun seem to have much different overall attitudes about the role that Open Standards have to play in the technology industry. Like any tool, Open Standards are good for certain jobs and not so good for other jobs. At first blush, Sun is a stronger advocate of open, community driven standards. They sponsor the Java Community Process, which allows major and minor players in the software industry to determine the future of the Java language and platform. Microsoft, on the other hand, seems at first blush to be more monopolistic in their intentions. I've written this myself about them several times in the past. They envision themselves as the ground upon which all of us should build our software. They also see themselves as the thought-leaders of the industry. In many ways, both of the last two paragraphs are uninformed. From my perspective here this week, both Microsoft and Sun have more in common than might be evident at first glance. For instance, Sun created its own standards body that allows it to excercise veto power over JSRs in the Java Community Process. This is intelligent, because while the community should be able to (and encouraged to!) inform and influence the future of the Java platform, it should not be able to force that future if Sun thinks it is bad for the technology, the industry or both. This strategy lets the community push for new technologies and come to compromises and agreements with each other, but also lets Sun cast the deciding vote and do what it can to protect the community from itself (let's face itsometimes we need it). We benefit from community participation and leadership as well as from Sun's unifying vision. On the other hand, Microsoft has turned their C# and Common Language Runtime specification over to the ECMA and ISO standards organizations in order to show the world that it didn't need to excercise absolute control over the technology. Of course, they hold on tight to their implementations. I was surprised at first that Microsoft would relinquish their specs to a third party standards organization, but I think they knew what would happen if they didn't. They've come under too much fire in the past decade, and I think they've realized the benefit of sharing. Now they can commit themselves to shipping the absolute best implementation of these specifications. But what is the process for moving the technology forward? How do future versions of the spec get ratified and become standards themselves? How can companies and individuals participate in future of the technology? I can't answer these questions tonight. By working through ISO, can Microsoft provide the same unified vision that Sun can with the JCP? Or do we need to worry about dozens of *mostly compatible* CLRs popping up in the next 20 years? Open standards can serve customers and vendors, but they require compromise from both ends. The alternative, proprietary and closed albeit ubiquitous technology, might lead to a rapid evolution of features, but it also comes with the risks associated with vendor lock-in and a significant limitation on the number of vendors who can participate in the market. Macromedia's Shockwave is a perfect example of this stagnation. Everyone has seen what it can do, but not many seriously consider developing smart UIs on it. I can't say for certain why that is, but my guess is that it's because there are so few tools available for working with it, and not many developers can afford them. In this case, Macromedia might have become too successful for its own (and our own) good. I was speaking with an IBM rep yesterday afternoon, and I mentioned the tradeoff between open standards and vendor lock-in. He pointed out that in the end, everyone customizes and tweaks out their implementations of a standard technology, and that customers always get locked in to some degree or another. But he insisted it's a moot point, because all the major vendors offer migration tools to overcome the differences, and that lock-in override is just another feature they can sell. The best of these custom extensions can end up driving the future of the spec. I'd have to say (and I think that the .NET and Java communities would agree with me on this one) that the best model for driving technology forward requires a degree of open standardization and community participation coupled with an executive force at the top to provide vision and leadership. Fortunately, both the Java and the .NET communities seem to be on this track. Hopefully this trend will help developers from each side play better together in the coming years, and crank out some fine software while we're at it Now, if only more of the Microsoft leadership could take the two hours to read the Open Source Definition, the Free Software Definition, grok the difference, and start acting like it. Microsoft spent a decade educating news reporters about technologydid they think they were done? They need to realize the role that real Open Source organizations have to play in uniting small vendor communities, driving innovation and enabling small businesses and vendors to get a foothold in our industry. Sun definitely gets the picture, but there are still too many in the Microsoft camp who mistakenly equate Open Source with rabid, viral anti-capitalism, and they're missing out on a very important community resource in the process. Communities of every size are improved when their members work together and form businesses. Likewise, businesses are strengthened when they form communities and voluntarily share knowledge. Open Standards and Open Source licenses contribute to this. I don't fault Microsoft's leadership for not taking more time to explore and communicate the distinction between Open Source and Free Software. And I'm not just talking BSD versus GPL hereit goes much deeper than that. Most mainstream Journalists certainly don't get it, yet they're the ones writing all the sensational articles about Open Source (who would ever trust a journalist about technology or law anyway?) Most Open Source developers don't even understand the difference. But that's alrightthere are many people who do get it, there are books and literature coming out on the topic, and those who have figured it out will be happy to explain the difference to anyone who asks. Those of us committed to real Open Source development know that we're doing so in order to open up more technological markets to more people, that innovation and hard work in software development should be rewarded, but also that there's much more to business than the bottom line. Not to imply that Microsoft is completely oblivious to these thingsthere are some in Microsoft's ranks who know exactly what I'm talking about. Hats off to them, and may they all rise quickly through the ranks. TechEd 2004, Day 02Posted by n_alex on May 24, 2004 at 09:24 PM | Permalink | Comments (9)I don't know exactly what I was expecting from Steve Ballmer's keynote address this morning. I've never seen the man speak before, or heard his voice. In fact, I haven't even seen a photograph of him that wasn't a decade old. What I did not expect was for Mr. Ballmer to have somehow transformed into a spitting image of my former Governor, Jesse Ventura. They look alike. They speak alike. It threw me for a loop. Mr. Ballmer has a very strong presence on stage, but it wasn't his presence that really drew my attention during his keynote. It was the contents of his message and, more importantly, the way in which he delivered it that most impressed me. What I'm about to do might be a bit unfair, and I apologize in advance if I upset anyone, but the only other major keynote speaker from the IT industry that I've ever seen was Scott McNealy, who gave the final address at JavaOne last summer. The more time I spend here and the more I explore the differences between the Java and .NET communities, the more I wish I were going to San Francisco in June, so that I could make back-to-back comparisons while it's all still fresh in my mind. Last year Sun and Microsoft were still embroiled in a major lawsuit, and so of course Mr. Ballmer's speech this morning was more positive and constructive than Mr. McNealy's was last June. But even so, Ballmer did not lash out against other technologies, or against Sun. He certainly didn't make the mocking of his company rival a central part of his keynote, as McNealy did last June. He kept an extremely positive focus, and stuck to community and technology-based topics throughout the entirety of his address. It was very relieving. I'll get into the technical and business related contents of his speech in a moment, but first I want to make some important cultural and rhetorical critiques. Mr. Ballmer is a visionary, and he probably doesn't walk in the quite the same world as you or I do. This became more obvious to me throughout the day. After spending some time in the trenches discussing ideas and technological considerations with different developers and vendors, I've come to the conclusion that there is still a great deal of bitterness toward Java developers among the .NET rank and file. What surprised me most was how the topic of Java, even among and between perfect strangers, always returned not to the technological flaws of our platform, but to the "jerk" attitudes of our developers. I'll be the first to admit, my flaws are boundless. I've written and said some things in the past, particularly about Marc Fleury and about the Redmond giant, that were deliberately inflammatory and sensational to no constructive end. I know it's a bad habit to get into as a writer, and especially as a critic whose job is to interpret and not to cast judgement. This editorial style certainly doesn't make me a better person, so I've been trying to grow out of that practice. It certainly helps to have people I admire, like Richard Monson-Haefel, acting in an extremely courteous manner toward someone he's slighted. For that, Richard, I'm very grateful. It's easy to demonize your opponent when they only exist on your computer screen, but it's another matter altogether when they're standing right in front of you. And the whole "tribe mentality" plays into it as well, as it does in software projects, as it did last June when Scott McNealy made his keynote and burned Microsoft. It isn't difficult to see how the rank and file Java developers might amplify this half-playful distain into raw contempt for the .NET crowd. But the "US versus THEM" Napoleon-complex mentality is a luxury we can no longer afford as a developer community. As an American citizen, I can definitely say that political events of the last year have given me pause to reconsider how I conduct myself in public, and especially how I regard and treat my competitors in the public arena. I don't hate these peopleI have a tremendous amount of respect for them, even if I disagree with them on technical details. Which brings me to the next part of my blog for the day. For the last year I've been flirting with the dream of bringing affordable J2EE technology to small and medium sized businesses, and of someday making it possible for small companies to buy affordable, enterprise quality software. That, more than anything, is the reason that I use, study and develop Open Source software. Sometimes I get frustrated by the high cost of deploying enterprise-strength web applications. I'm probably just trying to crack an egg with an axe, but it's the principle of the damn thing that I just can't shake. I'm a small player but I like to think big, and I admire other people with the same penchant. I'd like to be able to deliver big, even to small clients who share my unfortunate addiction to thinking big. What really bugs me is when people I know make tongue-in-cheek comments about how companies who can't afford to pay hundreds of thousands of dollars for J2EE's stability and features don't deserve it. I refuse to accept that only Fortune 500 companies deserve rock-solid code. This totally ignores the market potential and the importance of small and medium sized businesses, and doesn't do much for the reputation of the Java guy. Today, I saw more evidence of that truth than I was prepared for. Microsoft's development tools are easy to use, easy to learn, and affordable. That is why .NET is so appealing to small and medium sized companies. According to Ballmer, over 50% of IT developers in the country use .NET. These people don't write code--they have forms and wizards for developing just about anything you can think of. When they do write code, they have development tools that actually force them to write unit and performance tests. And from what I can tell, they have tools for writing those as well. The tools they've got coming out this year will probe their software for security vulnerabilities, and color highlight the areas of their code which they have not adequately tested, forcing them to correct the error before they check the code into the repository. Tools, to amplify their productivity. Tools, to tell you while you're developing if you'll have fatal errors at runtime, thereby easing the testing and QA process. Tools for performance testing components in ASP.NET web applications, to push multiple simultaneous threads through your software, to bootstrap an ASP runtime environment and use it behind the scenes to simulate a live runtime environment. JUnit won't even add a Multithreaded Test Runner to their core API. Tools to design web UIs, built directly into their ASP.NET IDE. More tools than you can shake a stick at. In the United States, only the pharmaceutical company Pfizer spends more money on R&D than Microsoft does. They've embraced Agile development techniques in Redmond and before long the rank and file will catch on as welthey will have no other choice. The tools are there to make Test Driven Development ubiquitous throughout the .NET industry. In the realm of tools and ease of use, Microsoft and the ecosystem of small vendors surrounding them have got us outgunned and outclassed. All of this was running through my mind before Mr. Ballmer even finished his keynote. BUTwe in the Java community don't claim to be the most approachable or user-friendly development platform in the world. Usability has never been the greatest strength of the Java platform, and I know we're making strides to overcome our deficiency in that area. As I attended various sessions on .NET technologies, especially one about developing web applications with ASP.NET, it became fairly clear to me that we still have a tremendous and important role to play in the future of enterprise computing, of persistent transactional object frameworks, of distributed component frameworks, of ultra robust application servers. We've got a good handful of J2EE app servers on the market already, and more are one the way from JBoss, Jonas and Geronimo. The licensing costs will fall by necessity, freeing up more spending for support and better feature offerings. Microsoft does not seem to have an answer to EJB, or at least the developers I've spoken with don't spend much time considering distributed component architectures. They're still coaching developers to hand-write their SQL codethe very thing that drove me from ASP technologies back in 2000. "Sometimes it's better for performance to customize the SQL", a gentleman explained to me this afternoon. Agreed, but where is the option to have a persistence engine do the heavy lifting for me? I can always subclass a BMP object to do custom transaction stuff. When the customer decides to change to a different database on a different operating system (yes, it actually does happen) and they've got to rewire their library of data access objects, it will certainly help that the SQL queries are encapsulated into objects and not scattered throughout the application, but it won't save them if they've got 6,000 unique data objects in their system. I'm not saying this to be cruel, or to spit on ASP.NET technologies. It's just my perception. ASP.NET might not be the best tool for that job. Or maybe it is. If so, is it worth the risk of lock-in? If it's not worth the risk of lock-in, does that mean that Microsoft and its employees are all terrible and evil? Of course not. It probably just means we need a two-tiered market, and that things are the way they are for a very good reason. It always seems to return to two crucial factors: the tradeoff between flexibility and performance, and the tradeoff between vendor lock-in and the inefficiency of committee-governed standards bodies. Is that what this whole long fight has really been about? Enterprise scale technology is not always necessary. But when it is necessary, when a distributed component architecture is necessary, when you need a Component Transaction Monitor and common server-side component model, does .NET measure up? And if so, is it worth the risk of getting locked in? This is what I still don't know. Critics of Microsoft's MTS technology always return to the issue of vendor lock-in, of the open-ness of EJB as a server-side component model, of the ability of different vendors to implement the technology and compete with each other for performance, features, pricing, etc. If the Sun and Java community weren't as dedicated to sharing the wealth of ideas, of supporting non-profit organizations who want to compete in their CTM market, projects like Geronimo couldn't even exist. I think that, out of respect for my boundless ignorance, I'll defer any further exposition on this topic until after I've spoken with some more .NET evangelists, specifically the ones who would know about .NET's distributed component architecture capabilities. Also, out of respect for the customers and managers who ultimately must make this decision, I'll just keep looking for the common ground, the higher patterns and the difficult questions, and leave the decision to the people who ought to be making it. Finally, out of respect to the engineers and developers on both sides of the fence, I'm going to try really hard for the remainder of the week to represent the "Java guy" as a fellow developer and not as an outspoken, embittered ideologue. I will write about this rockin' hotel room, when I get a chance. Hope everyone's having fun out there TechEd 2004, Day 01Posted by n_alex on May 23, 2004 at 11:11 PM | Permalink | Comments (3)I must admit, it was a little odd being a Java guy walking into a room full of .NET User Group Leaders from all around the country. The abundance of caffeine and general rowdiness of the 75 member crowd helped ease tensions somewhat, and while I got my bearings I took careful note of the group, its dynamic and the subject matter they were covering. What I found was equal parts encouraging and intimidating. The TechEd conference doesn't start until tomorrow, but there were several pre-session groups meeting today. I had the good fortune of being invited to the User Group Leaders Summit, where I met my hosts, traded good-natured jabs with .NET devotees and talked shop with a bunch of hardcore development community volunteer leader-types. The User Group Summit was headed up by the International .NET Association (INETA). From what I can tell, INETA User Groups are analogous to the Java User Groups. They're an independent organization, and their founder goes to great lengths to maintain a comfortable operating distance from Microsoft's PR machine, while simultaneously being careful not to alienate them. It strikes me that the INETA groups highly value their independence and don't want to come across as a Microsoft vendorfest to their members. They focus on C# development topics and although they thankfully accept Microsoft's sponsorship, they do maintain a good degree of independence. That's a difficult balance to strike. What really fascinated me about the UG Leaders Summit was that the .NET Group Leaders from around the country knew each other, had their own community structure, and genuinely seemed to enjoy being around each other. These guys were rowdy. They were having a good time. And it wasn't just because we each got a 30 oz bottle of Tequila at the end of the meeting. People were really positive and nice. This was a slight cultural change for me, because all too often I find the Open Source Java community to be extremely high strung and competitive--sometimes to the point of being vicious. I like to think of the dynamic of our community as an extreme form of tough love. I haven't worked a lot with the Java User Group communities from around the country, and I have an inkling that things are a bit different in those circles than they are in the Jakarta / JBoss / TSS / Bile Blog OS Javasphere that used to form my only umbilical link to our community. (For the record, I don't think this "tough love" culture extends into the Java.net community--the folks from Sun's "shining city on the hill" are pretty amiable). It was just a different vibe--not necessarily better, just different. I can see more of that in the future of the Javasphere. We live in a pressure cooker, but as the language and platform mature and we continue to carve out our niche, gain credibility in the industry and grow as developers, I think we'll see less of the infighting and more of the cooperation typified by last year's OpenEJB / Geronimo alliance and by the general good will surrounding Java.net. One surprising thing I learned at today's Summit is that in the last 3 years, INETA and Microsoft have built up a 200,000 to 250,000 member developer community, and they're continuing to push forward, doing everything they can to make sure that .NET technologies take off at the local community level. They're hyperactively heading up programs to develop high school and college students, and they recognize the long term importance of bringing fresh blood into the industry. They are investing time, software and significant amounts of money into their evangelism efforts. Essentially, what INETA and Microsoft are trying to do is outgrok the ASF on community building. And from what I just saw, they're way ahead of the curve. In their words, "we're trying to get it. You can help us REALLY get it." And by "get it" I think they mean to figure out how to have a successful user community in every city and on every major college campus in the world. I'm speculating, but it's hard not to smell ambition this raw. The secret to their success as an organization, in their words, is that they focus on "the community and individual developers", something which I think the ASF has been rightly and repeatedly criticised on in recent days. As far as these guys are concerned, "the developers ARE the customers." They put a lot of work into developer-building, mentoring, developer guidance, etc. Are we sunk? Hardly. We've still got a LOT to contribute to the enterprise cookpot. As far as build environments, unit testing tools and the wide spectrum of ASF licensed Open Source enterprise products go, we're still in the game. We've got tools like AOP, Groovy and Maven--industry altering software products that have thus far escaped the .NET community's attention. I see Open Source enterprise projects like the ones sponsored by the ASF and the Codehaus as the most crucial strategic assets we have if we ever want to bring the Java enterprise to the masses. But it's an uphill battle. Java suffers from a reputation of being too complicated and too expensive, but that reputation is in my opinion exaggerated. For instance, it's possible that the EJB 3.0 spec committees are spending unnecessary time refactoring the EJB APIs. They're doing this in order to make EJBs easier to develop using agile and test-driven techniques. But the root of the problem might actually lie in the architecture of the major EJB containers. Maybe the "heaviness" of EJB containers prevents efficient container-driven testing. I know there are products available right now that address the need for dirt-simple in-container EJB unit testing, and it strikes me that the EJB spec committee could leverage this technology and devote more effort to things like security and authentication. Microsoft's not going to wait around while we get our act together. In the end, the aggressive competition between different Open Source Java project teams might turn out to be one of our greatest strengths, if we can manage to keep the competition good-natured, and not forget who it is we're really working for. I pity the .NET outsider who tries to break in and compete head-on with the Groovy team, or the AspectJ folks. We'll see what happens. Tomorrow I'll write more about my UNBELIEVABLE hotel room, and see if I can get any pictures up. What about a Shockwave Community Process?Posted by n_alex on May 21, 2004 at 12:31 PM | Permalink | Comments (0)This is pure speculation on my part, but what if Macromedia were to assemble a community-driven process based on the JCP that they could use to extend the Shockwave platform and give companies and individuals around the world a chance to have a voice in the matter? It strikes me that Macromedia could do the same thing with Shockwave that Sun has done with Java. If they did, I have a feeling that Shockwave would achieve the true universal ubiquity they've been pursuing for so many years. I'm not certain, but it seems that the only thing preventing companies around the world from wholeheartedly embracing the SWF platform as the standard platform, and not just the de facto platform, for developing Rich UIs is a perception about Macromedia holding monopoly control over the platform, a shortage of vendors offering competitively priced tools for working with Flash technologies and the attending lock-in fears and paranoia that naturally follow from that train of thought. So I'm floating this idea out, just to see what people have to say about it. Suppose the Shockwave platform had more vendors developing tools for it, and suppose tool vendors could be involved in steering the future of the platform (of course Macromedia would still have veto rights for any specification requests, as Sun does with Java), do you think the community wants and could support this sort of arrangement? When it comes to Rich UIs, nothing even comes close to having the market penetration and feature capabilities of Shockwave media. Building an equivalent open platform from scratch would require a massive movement, and probably a decade to achieve the momentum, mindshare and market penetration that Shockwave currently has--it strikes me as a tremendous waste of time to pursue this goal, when the answer lies right in front of us. The largest challenge would be to bring the major players to the table and get them talking. Is it possible? It's been done before. And I think it could be done again. Conference SeasonPosted by n_alex on May 21, 2004 at 12:02 PM | Permalink | Comments (4)Why on earth would I choose TechEd over JavaOne? Well, I didn't exactly choose TechEd. It chose me. Or, rather, Microsoft did. They've invited me to come to the TechEd conference as their guest and as a community-minded Java evangelist sort of guy. Who could resist generosity like that? I think the Microsoft folks are hoping I'll find something on their side of the fence worth writing home about. And to be honest, I'm sort of hoping the same. I'm not signing any NDAs while I'm there, and still refuse to install MS Office on my computer. But I am going to hang up my blinders for a week, and devote some serious attention to .NET technologies. If Scott McNealy can extend the olive branch, then I can too. So, in short, expect some coverage from San Diego. Probably nothing earth-shaking, but you never know. I'll try to keep the topics pertinent to Java vs .NET, architectural styles, interesting patterns, Open Source potenials, integration points, common ground and the like. A few Java.NET fusion topics might give those of you who are going to JavaOne some helpful context. Open Source Flex alternatives require broad industry supportPosted by n_alex on May 18, 2004 at 12:36 PM | Permalink | Comments (9)"When a scientist says something is possible, they're probably underestimating how long it will take. But if they say it's impossible, they're probably wrong" --Nobel Prize Winner Richard Smalley. In this case they're definitely wrong. Four years ago, while working for marchFIRST, I helped build a Flash-XML-Java driven site for building and configuring skinnable rich media blog sites. We built this for Proctor & Gamble's Tremor.com project. I've not used Flex, specifically because I would like to bring similar products to the Open Source market. The licensing restrictions for the beta versions were a bit draconian, and I'm careful to avoid potential future legal enganglements when intellectual property law and Open Source software is concerned. At this time, there is no alternative product to Flex or Lazlo that offers a competitive feature set. Such a configurable suite could be assembled with Flash MX and the library of Open Source J2EE and XML technologies available from the Apache Software Foundation & The Codehaus. The problem with running an Open Source project to build a Flash-XML-based UI framework is that very few Open Source developers can afford the Flash MX development suite, and at the moment, I count myself among them. If a framework of this kind is ever to make it to the Open Source marketplace, broad industry support will be required. However much I'd like to personally fund a project to develop this technology, I cannot at this time, and have no desire to go it alone. Tomcat, Geronimo, Apache, none of these Open Source technologies would exist for us to use if companies like Sun, IBM, HP, Apple, BEA and the ASF weren't willing to cooperatively drive the standards, share ideas and contribute time and energy to providing the necessary development infrastructure. This strategy has proven to be extremely successful and practical. The reason we don't have Open Source products for developing Shockwave media is not because the shockwave format is top secret. It's not. OpenSWF.org is a good place to start if you're looking for Open Source SWF editors. But in terms of features, Macromedia has outperformed the competition and achieved a virtual monopoly status in the marketplace with their tool sets. To their credit they did this by delivering better products to the market before their competitors could. But the perception is that now they dictate the standards, can bring their reference implementations to market long before anyone else and in recent years, as one of my readers recently put it, "they've grown haughty". The world has been content to rest on their laurels while this happened. Now it seems that Macromedia can charge any sum they want for their products, because they're the only game in town. The prices of the MX 2004 product line illustrate this. Back in 1998, a small business could easily afford a handful of licenses for Flash 3. With Macromedia chasing the high end of the market, what are the little guys going to do? Communities are improved by the presence of strong business, and businesses are improved when they join together into communities. That's what Open Source is all about--it's what separates us from the Free Software crowd. Unfortunately, the talking heads in the technical press usually don't recognize the distinction, and Open Source gets all the bad press that Free Software rightly deserves. If you check out Gluecode's website, you'll see their motto is "Open for business." I've never seen a better phrase to sum up the relationship between Open Source and the marketplace. (Gluecode, by the way, is my pick for "Company most likely to destroy the JBoss Group") Macromedia's shown us what's possible with the technology, and they've done a fine job addressing the desires of the market. But there's also a gigantic and growing market for affordable alternatives. If we want affordable alternatives to Flex, then we need to generate them. Any successful effort to bring shockwave products to the Open Source market would greatly benefit from Macromedia's leadership and support. Macromedia is no bogeyman. They've recently broken their MX 2004 suite into two editions, but they still each cost over a thousand dollars. Their older products aren't getting much cheaper, either. I am going to be at the Microsoft TechEd conference next week in San Diego. Anyone who wants to meet with me there and discuss the possibility of developing Java and XML driven Shockwave technologies for the Open Source market should send me an email. Any help Macromedia can offer will be welcomed with open arms. Dear Alex, tell me the futurePosted by n_alex on January 31, 2004 at 02:07 PM | Permalink | Comments (5)
Friends of mine have said they won't stop writing code until they've re-implemented all of the core unix services in Java. Others have said that until there is an Open Source (non-GPL) alternative to linux that there will continue to be work for us to do, and that once the nature of the GPL license gets tested in court and the public understands more about what it does, they will want to replace Linux with something they actually own. Or maybe not. I don't know the future. I do believe the research however,
If Open Source helps people channel their desire to feel useful and to do challenging and beautiful work until either the economy picks up or they pick up their lives, then I'll do everything I can to help them learn about it and to encourage them to participate in it. The American programmer is my fellow "Forgotten Man". And by Man I also mean Woman. I know too many nice and talented ladies in the field who deserve better just as much as the men. So, you want to know what "exactly" I see in the future. Sorry. I don't see the future--but I do have a poolside view of the present. I see books on Geronimo, Drools, Maven and Groovy coming down the pipe. I see people pushing the bounds of the J2EE platform. I see discussions about replacing servlet technologies. I see Tool designers having their day in the sun. I see a flurry of spontaneous activity. Like insects moving around to warm their hives in the winter, Open Source--as science for its own sake, for the fun of it--has the potential to keep the American programmers warm enough to survive the winter we're entering. I certainly see no reason for intelligent men and women to be contemplating suicide over the loss of a cube. There's just plain more to life than bits and chips. What I don't see is a US bull market in technology in the near future. For all I know we could be looking at Dow 4700 by June and the Nasdaq trading at 18 times earnings. I see that happening. I just don't *know*. I'm not in this field for the job security. I'm in it because I believe there is something big at stake in it. If I wanted job security I would have studied mortuary science. I try not to get too hung up on implementation details (.NET, J2EE, EJB) because those things come and go. I'm more concerned with the overall principles (making information more accessible and useful) and applications (building a network of like-minded people to do business with). There will be no beamings of Scotties unless someone figures out a way to get around the Heisenberg principle. Heisenberg applies to markets, too. As soon as you think you know how the market works, your new understanding of it alters it until your knowledge no longer applies. But, on the science-driving front, carbon nanotubes can be used to make Casimir plates, and there is a potential source of unbounded energy waiting to be tapped--all around us. Nanotech has incredible potential for medicinal uses as well. So nanotechnology will likely *not* be a fad. It's just something we the "unwashed masses" don't understand very well yet . I think the internet will continue growing. Demand for high-speed fiber optics will replace our copper networks It'll take decades to realize that, but it'll happen. I also think that spontaneously evolving P2P wireless networks will probably grow to address our need for mobility until a less expensive way to make and lay fiber networks becomes available. How far this all applies to you and me here in Minneapolis remains to be seen. We have the University as a gateway into nanotech. Perhaps you could look into a full time job there. For the rest of it, I'm no prophet. Just a cold-eyed optimist. Open Source UI framework comparable to LazloPosted by n_alex on December 10, 2003 at 09:56 AM | Permalink | Comments (6)Now, before I go on, I want to address a very strong prejudice that I've noticed in my dealings with Open Source developers. It's the old familiar sentiment that if it isn't built in Java, it ain't worth using. That might be true for a lot of people, and I have a lot of respect for that sentiment--it's an important one for our community. We're doing more than writing software in a certain language here. What we're doing is contributing to the development of a J2EE development platform. We're building tools for each other to use. If you've got the right tools, all the jobs in the world open up for you. For instance. There are precious minerals deep in the earth waiting to be harvested. These minerals are incredibly valuable and useful in industry. But if you're up on the surface walking around with only a stone axe and a loincloth you'll never be able to do that job. Another irony about tools is that sometimes you have to acquire and master the tools before you can even learn that a job exists. The creative reapplication of tools toward new industrial pursuits is what opens up entire new markets. Another example. When I was seven years old, nobody in the world could make a living as a multimedia internet programmer. There were no Flash designers, because there was no Flash. When I was 21, that had all changed. I knew a lot of people who were making big dollars just to play around with Flash. One of the reasons for this, perhaps the biggest reason, is that by the time I was 21, the tools had improved. That said, let's try to keep our input streams open to the possibility that Flash is still a very useful and cool piece of software (especially for those who know how to use it), and not relegate it to the status of "web designer's toy". I'll be the first to admit that the potentials of Flash have been largely squandered on sick cartoons and the infamous "Flashturbation" sites that every budding C-Corp and their brother launched in 1999 (you know--the ones with the contrived techno scores, who desperately wanted to be 2advanced?) Well, for a while I made a living chasing that ghost, then gave it up for a while, returned to school, read some John Milton, some Thomas Paine and some Robert LeFevre, and now I'm back at it, looking for ways to develop new and better tools. This time, however, to retain my sanity, I'm doing it without a host company (for-profit or otherwise). And this time it has proven to be a lot more fun. So here are some of my ideas. I want to build a manageable, rules-based J2EE development framework that enables the liquid UI capabilities of Flash on the presentation side. I want this thing to stream dyanically generated XML content to the client-side application and to completely automate the persistance layer. On the client side, I want to build an abstract UI engine in which users can plug in Swiff graphics libraries. Ideally, the UI engine would be able to digest swiff files and use them to skin the entire application. If this software is built correctly, it should allow Flash developers to design skins which overlay UI components. They wouldn't have to deal with data maintenence at all--just building innovative graphics libraries. The app should easily plug into J2EE persistence. A lot of the contrived Flash apps of the 90s were IMNSHO a result of the nigh impossibility of reaching the persistence layer without having to fork over 35,000 USD for Generator. The tools were the problem then, and the tools are the problem now. FlashMX costs a pretty nickel, and there seems to be a shortage of Open Source Java middleware developers in the world who know Flash like the back of their hand and have experience developing abstract application frameworks. To prove that point, I'm sounding out. If there are any more of you guys out there, for God's sake, drop me a line. We'll throw a party and write some new Flash tools, or maybe Macromedia will shoot us with the money gun and comp us FlashMX development suites in return for the fruits of our Open Source loins. In the meantime, 'll fork over the 75 bucks to launch a little non-profit company so we can get started right away. Barring that, I'd settle for SVG, but I'm not convinced yet that it's worth its spurs. Why I won't move my projects to ApachePosted by n_alex on November 22, 2003 at 11:05 AM | Permalink | Comments (2)Noel, Thanks for your concern about this. I license software under the AFL so I can avoid legal entanglements relating to collective ownership of my property and conflicts of control over that property which derive from collective ownership, and also to grant greater rewards and incentives to future developers and users. Future versions of the ASL might correct this problem and give me incentive to relicense and get more involved with the ASF. If so, that's great. But it's only one factor. I'm also trying to avoid political entanglements which threaten the development of software and (more importantly) the development of self-motivated, autonomous individual developers. What percentage of people get involved in Open Source because they want to improve their talents, their experience, their knowledge, so they can provide a better life for themselves and maybe for their families? Probably most of them. Possibly all of them. I think the need to develop a strong community can work to the detriment of individual development. There are hundreds of people on this list who are hungry to contribute and develop their skills through the improvement of the community but who simply don't have the experience or opportunity to function as autonomous individuals. The current structure of the ASF simply does not scale to meet the demand generated by this project. So the community has a couple of options, maybe more. They can either add more layers of management and tell people exactly what they should do in order to include more people in development and grow the active community (I wouldn't advise this), or they can develop some sort of mentoring or sponsoring program in which candidates are picked out of the list by one of the committers and sponsored for a period of time in order to train them about the workings of the technology and the community. The apprentices who show the most initiative and mastery over the technology and are socially able to perform as full members of the community could then graduate to committer status and can choose their own apprentice (or even two or three apprentices if they think they can handle it). This master/apprentice system has been used with great success for thousands of years. It contributes to the development of a strong community by creating the social incentives to lift up newcomers and to recognize talent before it gets frustrated and leaves. I don't know, Noel. I have a strong sense that what I'm doing for this project is good for the people around here and good for me. I don't need you guys breathing down my neck all the time with rules and politics. I'm here to write code and have fun, and with comments like those Roy made last night and which Greg has made from time to time, I don't feel I can do much of either unless I'm willing to go it alone. I consider this the failure of the ASF and wish that its members would do something to detoxify the environment. Roys reasons might have been genuine but his conduct was intolerable. I can't speak for anyone else around here, but I want to produce good software more than I need the approval of the ASF, and I'm not afraid to go it alone if it means I can work in peace. --
----- Original Message ----- From: "Noel J. Bergman" Author Praises the Die-Hard Spirit of Silicon Valley Culture in Radio BroadcastPosted by n_alex on October 25, 2003 at 01:49 PM | Permalink | Comments (2)(the following is an excerpt of Greider's radio broadcast) "I was on the west coast. I can't tell you how many good conversations I've had with people, many of them software engineers who were working in Silicon Valley. Two or three years ago they thought they were millionaires, cause they had a lot of stock options and the stock prices of their company was still going through the roof." "And they're not destitute now--they got a buyout or something like that. They're not living in poverty. But they got whacked, big time. And instead of bitterness, they're mostly in a reflective frame of mind. Now maybe that's just the people who come out to talk with me, but I was pretty impressed with how many of them are sort of noodling through what happened, and trying to figure out what's wrong in the system. And then thinking about--at least, in theory--it could be fixed." "And maybe that's just because they're engineers, you know, engineers believe they can solve problems and these people are working on it. Men and women." (emphasis mine) "I would bet on this country as long as that spirit is still there." Listen to the whole interview here: Real Audio / MP3 / more info about broadcast The Death of a TitanPosted by n_alex on October 25, 2003 at 12:17 PM | Permalink | Comments (3)On January 6th, 2001 I woke up and went to work as normal. It was a cold Friday and I was looking forward to working on a streaming MP3 jukebox server I'd been building with Flash and Java. I had no idea what was going to happen that day. I worked for a company called marchFIRST, which had only months before boasted a roster of 10,000 employees around the world. I remember the early days very well. I was hired by an enthusiastic creative director and flown to Chicago for a week-long orientation seminar. When I returned I was brought to the new offices, which crowned the top three floors of a new highrisein a nearby suburb of Minneapolis. The place was magnificent. We had hexagonal "cubes" made from brushed steel with sheer white cloth walls between them to facilitate communication. I was a part of a creative team with 30 employees. 30 brilliant designers, a handful of whom were also skilled Presentation or client-side developers. I was among those rare crossbreeds who could travel between the creative group and the Java developer team downstairs, which also boasted about 30 developer seats. Supporting the creative and development teams were a contingent of information architects, writers, producers, HR personnel, strategy, and marketing specialists. All of the different groups held each other up. The Minneapolis office had about 140 people altogether. I remember the energy of that place. It was immense--impossible to explain if you were not there. We were the absolute cream of the international crop when it came to delivering corporate services. But trouble had set in very early in my tenure. The company had cooked the Q2 books in 2000, relying on "accrual" accounting methods to keep up their price-to-book ratios. A lot of the "profit" they put on the balance sheet was outstanding, and the Dot-commers who made up our client base would never be able to pay their bills. The Minneapolis office was working on Tremor.com for Procter & Gamble, and were raking in money hand-over-fist, so we thought we were fine. But if you chop off enough of the beast's heads, the body is certain to fall with it. In Q3 marchFIRST fell short of analyst's expectations and worse. It came to light that they'd mislead the public in Q2 to the tune of 50 million dollars (or something incredible like that) and dug a deeper hole in Q3. The "C-Level" people in the company had dumped their stock and resigned by the time the news came out, but I'd only been there a few weeks and didn't have any stocks invested in the company (and still didn't know up from down when it came to finance). The stock price plummeted from $30.00 to about $0.10 over the course of a couple of weeks. And everything was quiet in the office for a couple of months. That Friday morning when I went to work, my managers were in a meeting, and when they came back around 11 or so, they looked stricken. There was a group of about 20 people quietly talking over by their desks. I went over and learned that one of my managers (the better of the two, in my mind) had been terminated and was asked to pack up her desk and leave immediately. I was shocked. Then I learned they were going to do the same to about half of us that day. My initial shock turned to silent terror. Nobody said anything. We all returned to our desks and tried to think about anything other than who was next. A little while later, the telephones at our desks began to ring. One at a time people answered their phones in a quiet voice, stood up and marched in silence to a room somewhere on the other side of the office. About ten minutes later they would return, white-faced, and begin to pack their belongings. I can't do justice to the nerve-racking terror of that day. Whenever anyone's phone rang, you thought it was yours, because sound carried so well through the office. Grown men and women were choking down the fear, but everyone was alone that day. We had been profitable, we'd pulled long hours and burned the midnight oil to make this company successful. How could they disassemble a team of this caliber? I couldn't believe it. Eventually my phone rang. I took my licks, gratiously accepted two months of severence pay and got ready for the Freefall. I've been consulting for many years, and returning between gigs to the Freefall is the nature of the business. I could go back to being a Merc, I told myself. I turned in my equipment and left marchFIRST. But what happened to me? I didn't return to the IT business that spring. I didn't go back to the freelance life or become an IT mercenary the way I'd once been. I had eaten the team rhetoric and swallowed the hook. And when they yanked the hook out and tossed me back into the pond, I took it much harder than I thought I would. I stopped looking for jobs and decided to go back to the University in the summer. I became a hardcore introvert and stayed up for days reading Nietzsche, teaching myself J2EE, listening to international politics on the BBC. Needless to say, it was a long, dark spring. And it didn't get better in the summer, when I moved in with some friends. Or in the autumn, when I couldn't afford books for my classes, or anything but the most absolute meager diet. I didn't accept another job until December of that year, by which time I'd burned off most of the anger, frustration and bitterness I felt for the entire IT industry and all of the destructive greed that had nearly eaten me alive. I started working at an IT helpline for the U of MN at a very meager hourly rate, and came home from work each day feeling that I'd genuinely helped the community, given something substantial back. All day long, all I did was help people fix their computers, or get their email or some other trivial thing. But it seemed like magic to them. It's strange, but I learned that giving something simple to real people, where I could clearly see the results each day gave me more of a sense of accomplishment than I'd ever felt bringing home the $4,500.00 paychecks. That's about the time I quit my studies of computer science and begun studying literature and literary theory in school. You think Josh Bloch knows about languages? Try reading Jacques Derrida sometime. You want to learn about architecting or codifying a concept in an information system? Deconstructive analysis can teach you more about systems architecture than the Java Language Specification, or any book on java certification can. Ever seen that "code poet" shirt? There's more truth in that phrase than in most books on programming. All the technical training in the world hadn't prepared me for the day my company and my ideals about the industry came crashing down around me. I had to realize there's more at stake than what first appears. Our industry and culture is one of engineers, we are those who build. But we don't just build software systems, because you can't live in your software. My friend Dain Sundstrom told me earlier this year while I was helping him move out of his house that in his heart, he's "really just a carpenter." My good friend Russel Colliton takes that a step further--he actually has a woodshop in his basement. And the time is fast approaching when a new wave is going to hit our US economy and take our livelihoods with it out to sea. Now, as carpenters, we either have to build an ark, or we'll have to rebuild our lives when the storm breaks. And that day is coming. It's going to make that January seem like this June. Sound fatalistic? It is, but I'm optimistic because it can be fixed. Like any complex system, our economy has bugs. Huge bugs. Critical, terminal bugs. Our monetary policy is trending toward a Weimar Republic-style infinite loop. You could call it a "Cash Overflow Error". There are also bugs in our heads, particularly about our notion of the "good life". But the general character of our community is strong and smart enough to hack this system, figure out its flaws and work to refactor it. There's more to life than bits and chips, and coming to terms with that helped me flesh out my understanding of my place in this society. Being in the belly of that titan when it fell back to the earth seemed like the end of the world, but there is more meaning waiting out there if the same should ever happen to you. A final quick note--I don't recommend Nietzsche as a post-collapse starting point in the search for meaning, but Walter Koffman's preface in the Viking portable edition is a priceless introduction to western philosophy. On Branding and Copyright--Open Source For EntrepreneursPosted by n_alex on October 21, 2003 at 06:46 PM | Permalink | Comments (2)There are two subtle but unique resources in open source which, if acquired and carefully leveraged, can give your business a leg up over some of the big players in the market. One of these resources is control over the copyright of the software. The other is control over the brand. Both of these resources are incredibly important over the lifetime of a successful software project but are often overlooked in the rush to set up a CVS tree and start committing. But later on, major problems can spring up when you find yourself locked in to somebody else's license scheme or (potentially worse), somebody else's brand. The Licensing question eventually always boils down to Copyright authority. If you've a warchest of developers from around the world who've committed software to your project over the course of a couple of years, and you want to make a change in the licensing, you're stuck. In order to change the license you need to get the signature of every developer who has ever worked on the software. Take JBoss for an example. Earlier this year when Core Developers Network forked the JBoss project, they knew full and well they could not change the license of the software from LGPL to Apache. They would have needed to get permission from every person who ever worked on JBoss if they wanted to do that. So they were bound to the LGPL, which is why the Apache Geronimo Project must completely rewrite the JBoss deployment system. Ironically, this has turned out to be a great excuse to overhaul and modernize a much-needed piece of technology. We're adding full JSR-77 and JSR-88 support, among other things. But what few people know is that the licensing matter was the smallest obstacle in forking the JBoss project. The biggest problem was the brand. The trademark to the word "JBoss" is owned by Dr. Fleury. Now before you gnash your teeth and curse the man, think about the benefit for him as an Entrepeneur. He is the sole owner of his trademark, which means he owns the brand. Nobody can use the JBoss trademark in their product without his approval--including in package declarations and imports in their software. Now that's an advantage that could also be yours, if you ever built a successful product. That degree of control over the brand gave Dr. Fleury an edge. Core Developers Network hacked the logic of the law and renamed every instance of the word JBoss to Elba, but go take a look at the Elba downloads from the last month and compare it with JBoss 3.2. The fact remains that Dr. Fleury controls the brand. He's invested a lot of time in that brand, and he'll no doubt reap the benefit of that investment someday. And more power to him for thinking ahead. It's really too bad that he didn't think ahead about the copyright issue. He admitted earlier this year in an interview that one of his largest regrets was not licensing the product under the full GPL. Why? Because then he could follow the MySQL business model and sell non-GPL licensing at a premium, without losing the good graces of academia and the free software community. Now consider the Apache Software Foundation. Here's an organization that really thought matters out. Not only does the Foundation have control over the brands of their respective projects, but they also require that all committers sign a contract assigning the ASF copyright authority over everything you commit to their projects. Now at first, this seems really bad, but once you realize you *always* have original copyright over your own creations and that you cannot just give it away, that the ASF really just has a copy of your copyright, you generally sign the form and bask in the glory of having committed code to the ASF. So where does this bring us? To you, dear reader. Your projects and the potential companies you might someday form in order to help you promote and reap the benefits of your open source endeavors. We've seen how a strong brand can drown out an anemic one how control over that brand can be a tremendous advantage in business. Strong brands are assets which cannot easily be measured, but whose effects are nevertheless extremely important. We've also seen how obtaining control over the copyright assignments for your software project can help that project leverage its license down the road, and how failure to do so can lead to license lock-in. Licensing is without a doubt a major concern of any software business. If you can't change your license over time to adapt to the changing needs of the market, you could find your company dead in the water. Plus, open source developers will respect you for bringing up the license issue before they start contributing their spare time to furthering your commercial success. People like to know what they're getting into, or at least they like to have some idea about it. So next time you come up with a fantastic idea with obvious benefits to the business community and you get serious about implementing it in Open Source, think for a while whether or not you'd like to stake a claim in the marketplace as a professional. Do some serious research on licensing and copyright law and if you decide to take the Entrepeneurial challenge give some serious thought to your branding strategy. If you don't, someone else might just come along, scoop up your good ideas and do it for you. Who wants to be a starving artist, anyway? | ||
|
|