Ask Jazz Technical Lead Dr. Erich Gamma
As IBM continues to build out Jazz, their community-oriented development site, technical lead Dr. Erich Gamma has offered to answer questions about Jazz or anything else in his realm of expertise. Among his many accomplishments, Erich worked with Kent Beck on the Java unit testing framework, JUnit, and was actively involved until JUnit 4. Dr. Gamma was also one of the fathers of Eclipse and the original lead on the Eclipse Java development tools. Feel free to fire away on Eclipse, Java, JUnit, the Rational suite, the Jazz site, or anything else you think Erich might be able to answer. Usual Slashdot interview rules apply. Update 19:05 GMT by SM: As pointed out by user Hop-Frog, Dr. Gamma is also co-author of the influential computer science textbook Design Patterns: Elements of Reusable Object-Oriented Software.
Dr Gamma was also one of the fathers of Eclipse and the original lead on the Eclipse Java development tools.
Eclipse has been going on since the early 2000s and six days ago enjoyed the release of Galileo (v3.5). If you've had time to look at recent release, what are your opinions on what Eclipse has become? Has it made any wrong turns? How do you respond to criticisms of "bloat" or "too resource intensive"? Do you see it becoming more than what it is or transforming?
My work here is dung.
Reading the About page is useless. The impression I get is that this is a fancy marketing scheme for Rational products. Which, is business as usual for Rational...they market well to managers and are more trouble than they're worth to the people that have to actually use them.
The Jazz portfolio consists of a common platform and a set of tools that enable all of the members of the extended development team to collaborate more easily.
The biggest problem I have with collaboration tools is the metadata. No one does it right. Someone writes a blog or uploads a document but doesn't tag it. Enterprise search is broken. Management hands us wikis yet no one has the time or patience to maintain them. The protective blanket of "it's agile, baby" shields us from any beat downs. And with every new tool I realize that it's not the tool that improves collaboration, it's the team. Look at Slashdot's tagging system. Does it help me that one hundred stories are tagged with "no"? Collaboration seems to spontaneously work but is often out of your control when it does and doesn't. How does Jazz fix these problems? How does Jazz improve collaboration when it seems to me that tools are such a small part of collaboration? Will a small development team be able to use such a large set of tools?
My work here is dung.
His patterns work doesn't rate a mention?
Hi, I work in the storage management world, and noted the unlamented passing of Aperi, which had been put into Eclipse.
My company looked at Aperi, and would have liked to do something with it, but the first line of every file seemed to read
#install <universe.h>
This doesn't work for us. Like most companies, we've already invested in one or more frameworks and don't want to change just to get the three or four interesting capabilities that we see in some large piece of open-source software. Are there any projects underway to furnish discrete management functionality in bite sized chunks?
Thanks
Anyone else remember Lotus Jazz for the 512KB "Fat Macintosh" back in 1985 or so?
Now IBM owns Lotus.
I guess there won't be any trademark suits over this one.
I'm a big fan of jazz, but I've never heard of this JUnit character, nor the Rationale Suite. Anyone have some links to some mp3s?
On your influential book regarding design patterns, you listed 23 design patterns that would become the foundation for the concept of design patterns in computer science. Since then, many more types and subtypes have arisen but a lot of them seem to be derivatives or a combination of others. What new design patterns if any do you wish you had included in your book or that you feel are necessary for competent developers to learn?
My work here is dung.
So by using the name Jazz for this, I guess we're not going to see v. 3 of Jazz for the Mac? Dang.
Gang off our what?
What is your comment regarding http://perl.plover.com/yak/design/ and the implication that you have misunderstood design patterns? Shouldn't you instead advocate for folks to use languages that are more productive than C++ and Java that do not have these problems?
According to the NRC's Singer, the chief constraint that Jazz faces is that it works only on the Eclipse platform. Says Singer, "The only people who can adopt it are those who are using Eclipse."
Singer also feels that some processes might not accommodate Jazz's idea of collaboration. "People use all sorts of tools and ways of communication to coordinate their work, to be able to collaborate, to be able to put together big pieces of software," she says. "Some of this has to do with following a particular process. Where Jazz might be constraining is when the model behind it does not jive with these preexisting processes."
Meanwhile, Mike Milinkovich, the Eclipse Foundation's executive director, told eweek.com last March that IBM developers account for as much as 80 percent of Eclipse's development team. He questioned whether that kind of environment is good for Eclipse or Jazz. He also noted that some have charged IBM with killing off the Jazz developer tool competition with Eclipse. Finally, he wondered whether having two open source communities--one for Jazz and one for Eclipse--will ultimately weaken Eclipse.
I'm not sure but I would wager that's as true today as it was in 2007. How do you address those concerns?
... or if I want to use Composer I have to use Concert and Manager. But it would then seem that collaboration is only being aimed at a very certain type of developer. This may be a "loaded question" but is IBM hoping Eclipse will become the be-all-end-all integrated development environment? I know Flex Builder and Workshop are already built on top of it, is world domination in sight?
I've also noticed--through use of the Rational Suite--that you can't just use one tool in the suite. You need them all. And, you know I understand it's IBM's business model, but it kind of rubs me the wrong way that I was using all these great Maven2 tools to do releases and automagically test and build inside subversion. But when we went to ClearCase, we had to do releases through ClearCase and our test and builds through CruiseControl and I never found any plugins for Maven2 to ClearCase. ClearCase was really too much for such a small team. We had to bring in an administrator part time who had 20 years of ClearCase experience and the team just complained non-stop about moving off subversion. Why is everyone trying to "own" the whole stack? Why can't I recognize one Rational product is great and just use that and integrate it in with the rest of my tools? It seems like if you buy one you soon find yourself buying them all. Great for IBM but not always what we need. Is Jazz the same way?
I mean, it's fine if the answer is that if I want to use Jazz I have to use Eclipse
My work here is dung.
A number of weak typing language zealots like to point out that Design patterns is simply a way to make strongly typed languages "suck less".
This can be a compelling argument in terms of simplicity and syntax in examples when you take a look at books like "Design Patterns in Ruby" compared with "Design Patterns: Elements of Reusable Object-Oriented Software". There's also an argument that strong typing is a form of tight coupling and antithetical to half of the Object Oriented axiom, "loose coupling, strong cohesion". Given the momentum in popularity that unit testing across multiple languages and development methodologies has (rightfully!) enjoyed, is it time to encourage language designers and programmers to move away from strong typing usage and substitute better testing practices?
*** Sigs are a stupid waste of bandwidth.
Can you tell us of your ideas for new robot masters? What is your plan to get rid of Mega Man? Are you really Dr. Wily in disguise?
I know a lot of people that are very vocal about what is right and wrong with education today. Especially college institutions: "No one teaches C, everyone teaches four years of Java, no one understands the theory, a CS grad doesn't even know what a model-view-controller pattern is." The list goes on. Since you have your doctorate and have probably spent a lot of time in research and academia, what's wrong with most computer science or engineering programs in general today? What would you like to see more or less of? Are there any subject directions recently taken (EJB, garbage collectors, interpreted languages) you'd like to comment on?
You seem to be non-opposed to Java which, I'll admit, is rare to me for someone with a doctorate. I would like to hear your views since so often all I hear about Java is that it is slow and only good for people that want cheap software developed quick by beginner developers.
My work here is dung.
I have to build quite complex tools using GEF and GMF, and there are many cases where I'd like to have the power of Java2D, and reuse some of the great frameworks out there built on Swing.
More and more people are using AWT/SWT bridge, since SWT does not provide an underlying drawing framework as rich as Java2D.
Eclipse has great things like EMF, and the platform is number one choice for tooling, but when it comes to things like Bezier curves etc, Swing is much easier to use. So are we going to see more developer friendly versions of Eclipse where Swing is more available to us?
I work in a small shop that makes some use of Websphere Application Server and the Rational development tools. I basically find the entire structure of the IBM software offerings relating to the above technologies incomprehensible. Products are constantly being renamed, discontunued, bundled, unbundled and rebranded. Names are long, generic, and practically interchangeable, and so are the feature lists.
How do you plan to run a community support site based around this hodge-podge? I would assume the volatile nature of IBM's software marketing makes your task something approaching impossible. How do you expect to build a strong developer community based around products that are in a constant flux? I don't see any way around ending up with a large number of granular, isolated communities that spring up around specific products and thrive for a year or two. In short, how do you plan to unify a developer community without IBM first unifying the software development platform that this community is to be built around?
Thank you.
That's a common claim from such people, true, but its not entirely true; descriptions design patterns in terms of substantial code structures that must be implemented for each use of the pattern are ways of working around language limitations, the patterns themselves are not. In languages with better metaprogramming support and/or more permissive typing, many common "design patterns" can be implemented in libraries so that they are reusable. They are still design patterns, but they cease to be what you might call "implementation patterns"; substantial code structures that have to be rebuilt for each new use.
Like movies, it seems like "new" patterns are just rehashes of existing ones with different names or meaningless semantic differences. At some point it seems like it becomes a counterproductive activity that burns energy that could be better applied to other activities. What are your feelings about where the most meaningful contributions to patterns can be achieved?
First of all let me congratulate you on the successful launch of version 2.0 of RTC and 1.0 JF. It is realy great work, thank you and all the Jazz Team. The functionality of Rational Team Concert greatly overlaps with the ClearQuest and ClearCase. Why is it necessary to create a new product? Why not just release it as new versions of old? For customers, it could be easier to adapt. What is the future of CQ|CC, how you see it? Thank you.
It's a nice read on the various things to think about in the design of software. But we still seem huge amounts of production code that is in error or even insecure. These are abstract concepts about design, but the problems in production are real and concrete. There is a failed connection between them. For example, how is it that the computer system for Frontier Airlines has only a place for ONE person to be designated to pick up an unaccompanied minor?
now we need to go OSS in diesel cars
Would you consider naming your son Ray?
On a related topic, if you were to write Design Patterns today, would you omit or significantly modify any of the original 23 patterns?
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
(1) Do you think Jazz could gain from a distributed model, like git does for source control management, where the repositories can be forked and kept synchronized upstream/downstream (a bit like a "progressive fork" where fixes can be shared but the project can be forked for various reasons)? I heard there is a git connector in incubation but it seems to me more than just code artifacts should be distributed. After enjoying the many benefits of distributed SCMs, it's hard to go back, and I think at least issue management could gain from the same model.
...) and the current solution is using Aspects with EquinoxAspects to hack on JDT (my understanding is that there are many problems with this hack). Refactoring JDT is something that would be great for E4 (and truly useful), but JDT seems very much to be IBM's turf and I don't see it coming. Any opinion on this, as the original lead on JDT? :)
(2) Do you think creating your own SCM was the good decision, in opposition with using metadata in combination with SVN or git?
(3) Are there any plans to liberate Jazz under the EPL or another Free license, and do you believe Jazz can really gain enough traction as it is? There are plans to integrate Google Wave in the Eclipse Communications Framework by 2010, EGit is coming fast and has a lot of momentum among Eclipse developers, Mylin is getting better with every release, issue trackers are getting a lot better, continuous integration engines such as Hudson work really well... To me it looks like Free Software alternatives are going to beat Jazz at its game (not as well integrated at first), because this is typically software that companies want for free, and Free Software communities want Free Software (I know Jazz is gratis for Open Source projects).
(4) What's your opinion on the new wave of JVM languages such as Scala or Clojure? Did you try playing with them?
(5) Are you planning on participating in the development of E4? Regarding alternative JVM languages, there is a real need to refactor JDT to extract a "JVM-language" development tooling on which the specific Java - the language - tooling is built. The current architecture has been problematic to the development of good environments for alternative JVM languages (Groovy, Scala, JRuby,
I came into professional software development just as patterns were emerging as the "next big thing".
It seems to me looking back that at best we would have to rate the success of design patterns as mixed. One the one hand they've formed a useful vocabulary for discussing software designs and a useful tool for thinking about software in general. However on the other hand it seems like in a huge number of cases they have inspired large amounts of complexity and over-engineering and get misused more often than not. By and large the software world seems to have moved on.
So, I'm curious what you make of them now, looking back? Do you think design patterns as a concept has been a success or not? Do you yourself still use them in daily work?
I assume you don't mean strong typing versus weak typing but dynamic versus static typing.
Design Patterns have nothing to do with the typing system. Design Patterns are on the level of the software architecture. There is no noticeable difference wether you implement a certain pattern in Java(strong and static typed), Groovy, Ruby or Python (all 3 strong and dynamic typed), only the syntax of the concrete lines of code is different.
Your point about "suck less" makes no sense either, as most design patterns we know today evolved in the SmallTalk world, which is a dynamic typed language just like Python, Ruby etc.
Hint: weak typed languages are languages like C
angel'o'sphere
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
"I work on a technology at IBM called Jazz. Hear that? I.B.M. Big Blue. Old Iron. Yeah, the real deal. What we're trying to do is break outside of the box enabling task-oriented groups to implement product cycle encanchments using synergistic collaborationization. We're building a core technology stack ("Jazz") and we're building a bunch of products on top of it that address different parts of the software lifecycle - e.g. requirements, development, testing, build, move to production. If Jazz is going to succeed as a platform, we have to make it very possible to tie a lot of data together. You see, one of the things that we've learned is that it's not physically possible for human beings to build a single tool that solves every problem - the complexity is too great the interdependencies between components is too brittle. We believe that the only way all of these tools are going to work together is to define simple standard protocols and simple standard formats (open service for lifecycle collaboration - http://open-services.net/ [open-services.net]) built on top of standard Internet and web protocols (like http) and formats like AtomPub. Our Jazz-based products integrate together using this sort of loosely coupled web style and we're starting to integrate with business partners as well. Another thing I like about working on Jazz is the fact that we develop in the open at Jazz.net. Many of the leaders on our project like Erich Gamma, John Wiegand, and Dave Thomson came from Eclipse, and from that experience they came to realize that software turns out better when you open high-bandwidth direct channels with your users and extenders, so we're doing that with Jazz, even though it's commercial software."
Congratulations on using brackets, quotes and urls in a hypothetical conversation. You should teach me that trick sometime.
Could you try answering the question without the sales pitch and namedropping bullshit please? Is it too hard to give a one or two sentence reply along the lines of Jazz is: _____ as you were asked?
From the above I gleaned:
Jazz is a technology stack (???) and a bunch of protocols on top of a sort of loosely coupled web style interface (???).
Awesome. The new 3.5.0 release is excellent. Fast, full featured, excellent. If I had a question, it'd be: What are the most important practices used in the Eclipse project which make it such a success?
You made programming more than typing for the rest of us. That is probably the single most important professional programming contribution there is. Thank you very much for your efforts.
Would you care to share your thoughts on the current developments concerning the structuring of professional programming knowledge?
Uhhh, does this mean the Unified Process is dead?
I haven't worked with Websphere and Rational products since 2005. Back then the Rational Unified Process with use cases, etc. was suppose to be the next big thing. Rational had some tools called the Rational Unified Process which allowed you to create sequence diagrams, etc.
When you click on the Jazz products link\ it takes you to the projects page where all of them start with "Rational" by name. Is IBM going to Open Source ClearCase now? Most attempts at trying to interchange ClearCase with CVS or Subversion have failed. I'm suspicious that since the projects all start with "Rational" by name that there then might be significant "features" unavailable unless one buys ClearCase?
Sounds like IBM is trying to FUD their own open source product, Eclipse, with the focus on uncertainty and doubt.
Could you explain, minus the marketing speak that seems to pervade the IBM site, what is Jazz, what makes it a community-oriented developer's site, why is it different from, say, sourceforge.net, and if Jazz is so community-oriented and yet apparently tied in to Rational, where are the community versions (not trials, not demos, not limited to the point of uselessness functionality) of Rational products?
Towards the Singularity.
Disclaimer: I also work for IBM Rational. I've worked in a lot of other places too and I've been around the block a couple of times.
Maybe it's hard to summarize in a couple of sentences because Jazz really is a number of things. I'll try to describe each of them in one to three sentences. And I'll try not to use marketing buzzwords, although I can't promise not to use URLs.
1. Jazz is the belief that professional software development is a team effort, and the part of that effort that tools in the past have supported least well is communication and collaboration between team members. Tools in the past treated communication more like a ceremony than a conversation. That's just wrong.
The question that Erich and his colleagues set themselves was: what can we do to make it easier to work as a team? So the features that you find across Jazz tools include things like team awareness, status tracking, newsfeeds for things like build completion or test pass/fail, and so on.
2. Jazz is also platform or technology stack that provides common services like storage, query, events, process, collaboration, etc. to tools built on top of it. Middleware for tools, if you like. It relies heavily on Eclipse technologies including OSGi. Rational Team Concert is one example of a tool built on the Jazz platform, there are many more.
3. Jazz also is an integration technical architecture that uses RESTful interfaces between tools, whether those tools are on the Jazz platform or standalone. Links between artifacts are simply URIs. It's designed to be, yes, loosely coupled and web-style. What that means in practice is that you don't have brittle connections where upgrading one tool breaks the integration with another. It also means you don't have to consolidate everything into one repository. The open part of that integration is OSLC, which is where we are developing specs for integration, i.e. metadata definitions in XML and JSON plus service interfaces, in plain sight and publishing them under Creative Commons so that anybody can consume them to integrate with our tools -- or, heck, without our tools if they want to. Anybody can also participate in the spec process -- there's no membership fees or purity test, and the only requirement is a willingness to disclaim patent enforcement against anybody who implements a spec.
Does that help?
The Visitor pattern isn't OO, and in fact violates OO principles in every way, but I've seen it used for far beyond what I think you guys had in mind when you included it in your book. If you were to write a second version, would you include the Visitor pattern? If so, would you at least consider emphasizing its limited use?
Friends don't let friends use Visitor.
Are agnostics skeptical of unicorns too?