Forum OpenACS Q&A: Questions on AD's restructuring.

Collapse
Posted by carl garland on
Given the recent activities it is my feeling that AD has been slowing
repositioning itself to be a complete toolkit that is 100% Java and
will run inside Oracle itself.  I do not think this is a bad move
for them but I think it does have some implications for OpenACS.
Considering the performance penalities incurred in such an 
architectural design I believe they will start to add more and more 
Oracle-isms. I see it very likely that if they complete this task they 
would be an attractive takeover target for Oracle. 

 If this does occur what implications does it have for the GPL part of 
the codebase? What is to stop another firm from taking GPLed code and 
creating separate package?  

Actually my real concern is that OpenACS becomes overextended
trying to remain ACSish. I think there may come a time where OpenACS
would be best served to just evaluate the new aspects of ACS take the
best and ditch the rest and not be too concerned about remaining
*compatible*.  AD has given OpenACS alot but I think the paths may
indeed be diverging. I wish success for both but plan on helping out
OpenACS in the not too distant future. Just some thoughts ... 
Comments?
Collapse
Posted by Uday Mathur on
it seems like rumors are running wild on the bboard. I think acs 4.0 was full of oraclisms. I know, from personal coding, ACS5 will not have these. Take a look at Object Store classes in the CVS repository for corroborating evidence
Collapse
Posted by Don Baccus on
As far as ACS 4.x goes, since aD is ditching it (over time, but in terms of new development ASAP), OpenACS has already in essence forked the code base.  OpenACS 4.x will support both Oracle and PG, in fact getting the infrastructure in place to do so is what's been taking up Ben and my time the past two weeks.

We're almost there though it's been frustrating - I spent most of today rebuilding Oracle after it corrupted itself on my laptop, grrr...

As far as ACS 5 goes, aD has backed off the approach of putting much of the API in PL/SQL, specifically in order to make it possible to support multiple dbs.  In other words, Uday's right.  At least, that was the plan as communicated to Ben and I in January and AFAIK nothing  has changed.

Ironically, we can deal with the API-in-PL/SQL approach fairly easily in PG, since it has a nice little PL/pgSQL that has much of the same functionality as PL/SQL (no packages, no default params and only positional params but we can handle most PL/SQL semantics no sweat).

This isn't true in certain other RDBMS engines, though, so you can presume that the goal is to make it easier to support any SQL92-ish RDBMS that has decent market share.

Collapse
Posted by Don Baccus on
Please be careful when you use the "pre" flag, folks...
Collapse
Posted by carl garland on
Sorry for not closing my initial PRE tag
Collapse
Posted by Eric Lorenzo on

Given the recent activities it is my feeling that AD has been slowing repositioning itself to be a complete toolkit that is 100% Java and will run inside Oracle itself. I do not think this is a bad move for them but I think it does have some implications for OpenACS. Considering the performance penalities incurred in such an architectural design I believe they will start to add more and more Oracle-isms. I see it very likely that if they complete this task they would be an attractive takeover target for Oracle.

ACS 5 will be 100% Java, but it will not be running inside of Oracle. ACS 5 will be, if anything, less dependent on Oracle than any previous version of ACS was. Adding more Oracle-isms is not an effective way to improve performance. Yes, it can make things faster for single-user cases, but doing more work inside of Oracle makes it harder to scale to handle large numbers of simultaneous users, because it increases contention for the shared resources (CPU, memory, disk) on the Oracle machine. The less work you do inside Oracle, the greater the benefit you can get by adding more front-end servers.

Speaking as an engineer who works at AD: I have seen no internal evidence that our move to Java is designed to make us an "attractive takeover target for Oracle". It was not strictly a business or marketing decision. Management and marketing did not hand this decision down to engineering with no input from us. In reality, much of the initiative for the move away from TCL came from within engineering, and many of the engineers here (including myself) are happy to see it happening - TCL gets pretty painful pretty quickly when you start trying to use it for something that requires more complex processing than bboard. I won't try to pretend that Java's marketability is just a happy coincidence and played no role in the decision, but it played a much smaller role than many people on the bboards here and at AD.com seem to think.

Collapse
Posted by Stan Kaufman on
I first learned about ACS during one of Philip's seminars at Stanford in Jan 2000. As a then Java bigot, I was really surprised to hear about Tcl. But eventually I became convinced by Philip's discussion of how much more appropriate a scripted language is for web applications than is a compiled language like Java. Philip was particularly derisive about Java "junkware/bloatware" like BEA/WebLogic.

So what happened to this basic architectural belief at aD in the meantime? How is aD's new direction different from what Philip was once criticizing? What about the Tcl argument is no longer compelling?

Collapse
Posted by Todd Gillespie on
But eventually I became convinced by Philip's discussion of how much more appropriate a scripted language is for web applications than is a compiled language like Java. Philip was particularly derisive about Java "junkware/bloatware" like BEA/WebLogic.
Your derision will only increase if you get to know some WebLogic engineers. They're like cute little bundles of misinformation.
So what happened to this basic architectural belief at aD in the meantime? How is aD's new direction different from what Philip was once criticizing? What about the Tcl argument is no longer compelling?
What's the key word in your question? "architectural". Ignore the languages, just look at the architecture. Where's the basic belief change? There's no sea of middleware APIs to wade through, no extra servers to support, no n-tiers of applications introducing subtle errors into my data stream. The major difference (after the increase in orthoganality that is ACS4) is language - which is just a tool. We could write ACS in Unlambda if we so chose.

Why not Tcl? I think someone here said "At first you hate it, then you get used to it." It's only natural to look for a more expressive language, and of the industry 'accepted' languages, Java sucks least - less than Tcl, C++, Perl (for large teams), and C (if you're not bashing bits). Plus there's the toolset - both Aolserver & Oracle run Java already.

I think the Tcl argument is still compelling, but the devil is the details (and in C programs, from what I hear). And in these details, Java trumps Tcl. Personally, I'd like everyone here to learn to love Ruby, but we rarely get what we want. Also, I worry about *any* community acceptance of ACSJava - Java hasn't been shown a very warm welcome by OSS programmers (in my experience - someone please prove me wrong). Probably this is largely the result of oversold hype: every statement about Java is usually followed by a caveat; Java sits midway between Smalltalk & C, excelling in the features of neither; trying to fulfill the hype, tens of thousands of programmer-years have been spent to reduce Java's suck factor - a full-on intellectual battle to drag Java above the waterline of mediocrity.

Obviously I don't have any numbers, but I thought that community support has been building up through now. I wonder what kind of change will happen when ACS becomes solely the domain of a language many have shown an aversion to accepting.

Collapse
Posted by Bryan Quinn on
I programmed in Java for several years and built two systems with it (both still in use today) before starting to use the ACS and Tcl. I was one of the people pushing internally at aD for ACS Java, and it was exciting to work on the project. ACS Java came about for a number of reasons, but I think the two strongest were customer demand and developer support.

In my experience, Java is a match for both business and engineering interests. There are some good APIs defined by Sun in the J2SE and J2EE specifications that have done much to consolidate enterprise development knowledge. The J2EE standards provide a solid means of education and adoption by developers and companies. The standards process is open and there are open-source reference implementations.

Java is not a perfect programming language, becuase no programming language is perfect. I could list some things that I like better about LISP, ML, and Ruby. I program in these languages for fun. Maybe some day they'll become more commerically viable. Part of what makes Java useful is its relatively simple (compared to C++) OOP framework. Java's real value is in building reusable software. When combined with regression testing frameworks like JUnit and a modeling language like UML, one can design, implement, and maintain enterprise class software in an cost-effective manner. Its also fun.

It did take some time for Java to be adopted by the OSS world. However, its adoption is now wide. The Apache group, Enhydra, numerous SourceForge projects, IBM's alphaworks, CoolServlets.com. There is so much open-source Java code out there its almost overwhelming.

A couple of technical advantages that I find personally compelling:

  1. People often complain about the annoying "compile step," of Java because it is slow or interrupts the write/run/debug cycle. Scripting langauges, such as Perl, Tcl, and Ruby don't require this. However, Java compilers are fast and produce code that runs faster than any of these languages. If you prototype code in a JSP, you don't even need to invoke the compiler manually.
  2. Maybe people can write neater code than me, but I'm a sloppy coder. When writing Tcl, I can't believe how many times I had to re-evaluate a page or a library file because of yet another syntax error or misspelling. The compiler has saved me lots of time as it can usually tell me what my problem is. Java compilers tend to be much smarter than C/C++ compilers.
  3. Java gives you the ability to use rich datastructures and object oriented programming. This allows you to write code that is more modular, functional, and maintainable.
  4. Between J2SE and J2EE, the platform has a lot of usable APIs. This increases the speed of development.

Java isn't perfect, but I do find it a better match for building enterprise software than Tcl. I hope that we'll do a good enough job on ACS 5 to convince people to make the upgrade. In any case, language choice doesn't really matter. Enterprise software must solve an enterprise's business problems. In many cases, Java is a great tool to use, but its not a perfect fit for everyone. However, Java is a workable tool, and its more workable than the alternatives for what we're trying to accomplish with the ACS: provide a flexible, enterprise-class, and open-source e-business platform.

Collapse
Posted by Talli Somekh on
I am personally worried about another fork in the OpenACS community between those that are for Tcl and those for Java. Right now, the community is small and programmer resources are scarce.

That being said, screw it. Here is an opportunity to have a system, whose real strength is the data model available, in two formats, a scripting language and a compiled language. If people perfer a nice little language that integrates beautifully with AOLserver, great! If people want to take advantage of large numbers of programmers, sysadmins familiar with Apache and buzzword compliancy (as a marketroid, this is big for me) then that's great too!

I don't want to be a curmudgeon, but c'mon guys, I don't see the problem. The OpenACS community has picked up the Tcl codebase and is running with it beautifully. aD dropped the ball by not finishing ACS4 Tcl and being kinda wishy washy about what they were doing, but they have made their current intentions very clear. They are going to be Open Source and implement some kind of DB abstraction. That's good.

So as far as the language wars are concerned, can we please start posting to these bboards in Spanish? I've had it with English. I want to spell things like I say them. No more "silent h's" and ph = f and "i before e except after c." I want to dance salsa and make guacamole. Dammit.

Collapse
Posted by Todd Gillespie on
Bryan: on the whole, you are correct. Java has major advantages for building enterprise software, primarily because of the strong frameworks & libraries surrounding it. APIs added in response to marketing hype about Java being 'the language of the internet' -an ad circa '97. I am not decrying this approach; I am not a techie with my head in the sand - in the end we benefit from all these groups consolidating interfaces. I am trying to continue the point I was making in my previous post: that the political differences between the open source community and the way that Java has been pushed may impede Java's acceptability in this market. And by market I don't just mean the several hundred respectable software engineers you'd like implementing highly visible ACS's, but also the thousands of kids unversed in UML and ACID tests. For ACS to be the first response to an earnest question of community systems, we want a base of the size and composition of, say, slashcode.

And that's really something I should say before I slide into rant mode (and then sleep) - this group is becoming steadily focused on "design, implement, and maintain enterprise class software in an cost-effective manner" and downplaying quick hacks; which is sad, b/c over the lifespan of the Web, that's where innovative services have sprouted like weeds (b/c when you're developing something totally new, UML patterns don't leap to hand). Language zealotry I'm indifferent to, but I don't want to be part of a group where process has killed creativity.

<RANT>
Your panel of suspects, "Apache group, Enhydra, IBM's alphaworks, .." only reaffirms my suspicions. I scan freshmeat.net daily, and I don't see many apps being writting in Java - I see supporting architectures&servers, eg, Enhydra. Nor are we seeing it used much outside the servlet space.(which is a fine place to be, if you happen to be a servlet.) I think the most popular OSS web app that leaps to mind would be half-empty.org's engine.

Java is not a perfect programming language, becuase no programming language is perfect. -- B. Quinn
While you have the truth of it in that no language is perfect, (I also never used the term 'perfect' in my post....), I feel you missed my point. Java sucks. Okay, a visit to alt.sysadmin.recovery will inform you that all languages suck, so I should elaborate: in terms of language design, Java was a step backwards for almost everyone who switched to it, with the major exception of the poor bastards grinding MFC over VisualC++. Maybe I'm just too young; maybe this happened with C++ & PL/1 & everything else; but Java was the first time I've seen a product so evidently unready for the light of day being rabidly supported by three quarters of an industry.
</RANT>

Talli: If you make the guacamole, they will come.