Hello. I am not Ruby Dave Thomas. I am very fortunate he does brandmaintenance for me about writing all those great books. I am the old country programmer, or I guess Smalltalk Dave, so my most widely known scene is being involved with the Eclipse IDE and all the IBM virtual machine and Smalktalk tooling and today I work in advanced research and also I am managing director for Object Mentor doing large scale Lean and agile transitions.
2. You also had a hand in IBM's adoption of Java?
IBM adopted Java and we did the building of their virtual machines and the Visual Age for Java, which I had actually written in SmallTalk and of course with the Eclipse IDE which is the Websphere tooling, so I would say Java happened and we did the engineering.
3. How would you explain Java's rise and why was Java adopted so well in the industry?
The major reason that was adopted is that there was a hope that Java OS would be the competitive client platform to compete with Windows and so it wasn't really a decision about application development, so it wasn't Java versus something else for application development so much, it was that Java OS would provide a competitive platform network operating system that would allow those vendors who were in Microsoft to offer a competitive client platform. That never happened of course because Java didn't deliver on that goal, but that was really the major reason. So really was first and foremost and OS platform decision and not a language sort of decision it happened to be when you get the Java platform, since Java is just a syntax for an underline machine that you also get the Java language.
In terms of Java OS. I think one of the things large companies are very good is in general when there is really something that doesn't exist you just don't talk about it anymore and people won't be talking about OS 2 anymore either, right and Sun doesn't talk. The best way to do it is just no to talk about it and the industry focused on other things. The good news is in the technology business usually something else comes along every year, every two or three years to distract people, so the fact Java OS never really shipped or the Java didn't even make it on the client is sort of not really something that most people talk about because the enterprise market created enough opportunity and in some sense the embedded ... so people were using Java. I think the other thing is that people were really max with C++, so it was very easy to get people who were kind of exhausted with C++ to move to a language like Java because it basically has improved significantly on some of the development time issues of using C++.
5. What's really driving Web 2.0? What is Web 2.0 in your opinion?
The big thing about Web 2.0 is that many people knew about the frame hack and the fact that you could actually build really decent UIs and build client side applications that were really compelling, but it wasn't sanctioned and the browsers were really problematic and I think the fact that there were some early leaders out there and then when Google blessed it with Google Mail and things like that and people started to just go: "Oau, you can actually make a UI that looks decent and responsive" and you haven't to wait for the page, people jumped at it and of course someone like Google enabling sort of applications that can be running the browser just created the chance to do it, plus the whole experience of using browsers is pretty painful. Most people knew that the browser could be a platform. I think it just ... to admit that Javascript is going to be the world's most popular dynamic programming language.
I think it's very serious. The good news is if you look at ... you just look at the SOA pile and crap and the complexity of the platform that you get form the vendor by the time anybody figures it had any use I believe that people are going to assemble the complete workflow in a mash-up and with restful interfaces.
7. What's really behind this SOA thing?
What we have to understand about the computer industry is that whenever anyone starts making money away from the mainstream vendors. For instance there used to be all these things called "4 Generation Languages" and they were really doing well and making a lot of money, but that doesn't really make money for the IBMs of the world or the Microsoft or the Oracles. Oracle actually created the opportunity so what they did is they standardized a relational technology. What that does is turn the game back into a platform game, so if you look at all the ... IVendors the commerce ones all these people were connecting people together with their data and so on. There was a lot of money going into those players.
So what a major vendor wants to do is turn that back into a platform play because otherwise that money isn't coming to them, so what you need in is something that allows people to integrate and put all these things together ideally with some standards and industry cooperation so that will create and opportunity for IBM and Microsoft and then Sun to conspire and create this notion of web services and service oriented architecture because what that does is it moves the game from buyingproducts, from other people that actually provide solutions into: "You need my platform." There is also the fact that the platform is being eroded in value from below, like Open Source, JBoss, Spring and so on; I mean why you are going to buy a BEA server or Websphere server, if you don't need all the load balancing and all the extra stuff for a huge data center, but a medium size or a mid tear why you are going to pay that so that's sort being eaten out from the bottom so that causes the vendors to want to move up the food chain.
So what you need is something plus; if Java dominates the agenda or C# then what you want to do is change the agenda, so if you move that and use XML and web services then you get new play and you go out and you have something new to sell to people plus SOA is a wonderful thing where you can start having these great business arguments about establishing a business. The other thing is if you ever move to SOA it probably is an opportunity for outsourcing because what SOA will do with businesses implemented is identify the business processes and how to connect them and that will allow other vendors to take those and outsource them.
So in the end you could say it's a great business strategy, but it's much more of a marketecture then it is an architectureor a technology and it's put together at some very incomplete and fairly bogus standards, some very terrible languages like BPEL for WS which is like bad flow charting and no one knows when should I use a process, but it also means you now need a process server and so am Idoing workflowor am I doing application programming, nobody knows, so it's a sea of complexity with a lot of marketing around it, the whole SOAP thing versus REST and the good news is which SOAP should I use because they're all different, so no interoperability testing, so it's the usual: "Here's the promise" and you hope that by the time main adopters get there, the stuff will actually be working.
But it's very complicated and doesn't really involve anything new except good interface design, but it's a new silver bullet for the large platform vendor to sell you, saying: "If you just do this then your life is going to be better and fewer services" and so on. From my point of view at this point it's really a pretty fragile and?pitch. It's a nice idea but most businesses don't have their processes all that well defined. You can start with the McKinsey'show to reorganize your business, PowerPoint and somehow you just turn that into a BPMN diagram and somebody will just click ... and that turns into BPEL and it has all the same old promises of "ICase" and the magic that you won't have to really program and things like that. It's a nice idea but like ICase in this intelligent case ,MDA. In the general case it just can't work.
8. Speaking of MDA what's your take on MDA, Model driven architecture?
By MDA I assume most people mean the OMG variation of that and I have some very public rents. Similar is model driven, so object orientation comes the notion of modeling things with objects, but that is a very different kind of approach is really programming, it's a simulation which is certainly what does Smalltalk and I think the Ruby community and many python people do what their inner flexible technology. That is very different than drying UML diagrams and trying to do that. I think UML we just don't talk about it. Who knows what UML 2 is and who cares? It's OK for showing the pictures, but people that are UML all away down to execution, they're clearly smoking something and don't understand this semantics or programming languages.
I think there is a model but if you have something you can define and it generates all the code for you then you probably have a new programming language because that is what compilers do. So my argument is I think it's always good to define your architecture and your models in code, but I think that is why we had languages like Simula or Smalltalk or Ruby is that you could express your concepts, you could prototype, the architecture was concrete and visible, a set of classes and interfaces and that evolved as you filled it out so it became the application. So the whole notion of object orientation from Simula is that the software system is an executing model.
But the difference is that you don't go through this proof and all this stuff gets generate. The problem with the MDA subject, you have to understand what the generated code is and that is always bad because we have lots of clever tricks and you can need lots of tools, but the reason you need all this fancy tools is because the language is so bad. If the language was simple and you didn't have to have all this talk, you didn't have to worry about generation just execution which is going to show you the Rails program. Rails programs are pretty small, so for that kind Rails is a specific model for a kind of application, it works great for that application. So I think the answer is I am doing Model drive development: here is my model, here is the data, I model it this way, here is the things I have, here is my site, done.
I think every vendor is going to be pushed to actually support the languages. I think Sun's already done a lot and getting their JRuby guys and they just presented it and did a great job and I think they are doing some pretty good work to actually having a credible execution engine on top of JVM. IBM has some work in their project "Zero"; I think this is far along. Microsoft has done a lot with the "dynamic runtime" and the Volta project and recently Sun with Dan Ingalls and the Lively project. I think we're seeing all of them looking at using the different dynamic languages because people can think faster in those languages and there is typically less code, so I think they are all going to have to play there because programming Java and C# are kind of system level programming languages.
I mean smart people can write applications, but there is a lot of stuff you have to worry about which is you're just trying to figure out what you are doing, just trying to describe your problem. I mean that's why people use Python and things like that. If I am a biologist or a botanist I want to call those C libraries, those Java libraries, but I don't really want to write all that. So I think you are going to see people again in better more reasonable choice. We need core pieces built made out of this really fast rebust stuff, whatever that is in principle, but a lot of the other stuff is going to be more flexible and scriptable.
I think we'll have a better match. It just turned out that unfortunately the JVM and the CLR when they first came out really made it very hard to build dynamic languages and unfortunately the expertise for building dynamic languages, high performance ones was really either locked up inside of some vendors or it was in people who could just afford to go out there and do open source. I mean if you're in your 30s and you have childrenwhich is where probably most of the VM people were built dynamic languages, maybe older, they couldn't participate in building the Ruby's because they have to do a real job.
It's great what people have, the Ruby, VM and all the work on, I think it's very exciting and great stuff and I think the vendors are seeing that now. I think initially they're really looking at PHP because the vendors always look to where the volume market is, but I think most people now realize that if it's going to be scripting on the server side, Ruby looks very attractive and I think it's going to be scripting in general Javascript looks very attractive. So "how do I get from where I am to be over there"; that is going to be a real challenge for people who bet everything on Java.
I certainly see that having the infrastructure that Amazon has and making that available, it means that you don't have to worry. You can be a nobody and be slashed at it and still have all your servers up if you got a pool from Amazon. You get instant scalability that wasn't there. Definitely I think it's the model because just installing software on the client is such a pain. The other thing is that you can do these mash-ups, if there are services there and script them together, that you create new business opportunities very quickly by combining a travel service and naps and various things together and offering that.
So I definitely see it; I think the biggest obstacle there is that browsers are so bad in terms of technology and so on, they're big legacy apps in C and C++ and they are really hard. I'd be happy to pay someone who could figure out how to make Mozilla store back its LDAP entries back into LDAP files so I don't have to find some other tool to do it. It's real hard to get simple modifications made to that stuff, so I think you easily see the case where ... Lively shows that you can just deploy applications on a Javascript VM with SVG and you don't need a browser, so I think you could see it leading to the fact the browser is today the kind of delivery technology, but in principle, you might want the browser to be something that's actually written, part of something else; I think it's the step, but I think the next step will be just to have small applications that can be downloaded directly.
If you could write something in HTML, in Java script that basically takes your contact information, why can't I just put that on my blackburry or my phone? That's the way I should develop the app. Why should I have to go on write Java from my Blackburry or some nonsense like that; I should just take the HTML as you already got it working and put it on my phone. All I'm doing is entering some numbers, putting them in some collections and saving them back.
I think objects let us build a lot more complicated things and so. Certainly object technology was very influential in terms of doing that. I think the relational database people got us a lot further than I thought they ever would, they really did improve the performance, they really did improve, so I think there is still an engineering success, they got them to go a lot faster than they should. I think they're at the wall now. I think things like Agile is really a kind of breakthrough the fact that developers want a test.
That gets people's attention. Test first programming, I think that's the real unique thing that comes out of the XP approach and I think the web and WIKIs and collaboration there, the fact that now people freely share their artifacts, you can go into a project, you can find out what's going on, you can really do this collaborative developpement which is very hard; those are the things that I've seen make the most impact. I think design patterns is really very important over I see so many people who kind of miss the big picture by making sure that this is a visitor and this is a strategy and so on. I am not sure whether sometimes their vocabulary gets in the way and everything is named by the pattern and said what it should be. They allowed us to talk about things that we didn't have a language for, so Designe Patterns is certainly a big contribution.
I would want to program in a language that basically had the properties of Smalltalk, Scheme and SQL in a single unified model where the operations were so well defined that I didn't need a clumsy set of class libraries, so that I could do operations over those because I think I could write most interesting application programs that way. I am not claiming I can put that one for system code and I would be able to get the appropriate speed and things like that. So I think I'd like to see that the operating system sort of go away.
I think that the middleware has actually produced more problems. It's actually made the operating system thicker instead of thinner great quote fron Dan Ingalls is that operating system is what was left out of the programming language. So in that regard you can say: "Gee, we left a lot out, because we had to build a list off and between. I think people should have the source ...not to get miss quoted saying I'm against open source, but I think it's important class libraries should be viewed like caves. So in second life I am going to go in this Swing cave and when I am going in there I need to know that because that means I am going to have to find out how to speak to people in this world and learn the vocabulary and so on and people accidentally in languages where there's lots of browsers and click and use classes and frameworks and plug-ins and just sort of mix this stuff together and it sort of works. Bu they often don't understand and often they end up modifying things in the wrong place and so on. So I'd love to see a kind of cave model, world model where I am just writing an app.
Why am I over here modifying Hibernate or whatever as I really shouldn't be doing that, I should be using Hibernate, but not modify that. So I think because of all this openness and free access I think we kind of get overwhelmed by the complexity and we get away from focusing on the things that are really important and relevant to us. It makes it much harder for people to keep up and so on, because they have to keep this surface area of APIs keeps growing and growing and I think that is a real problem.