Forum OpenACS Q&A: OpenACS vs .NET: How is the pitch made?

Hi everyone,

I will soon be walking into a meeting where the chief technical consultant is leaning heavily towards a .NET front end application stack in front of an Oracle db running on Solaris. They aren't near making the decision yet, but the battle for mind share has begun.

Since the .NET juggernaut has really begun to gather steam (just check the classified ads to see that .NET projects are getting as popular as J2EE ones), I was hoping the community can help me map out some comparisons of the OACS stack vs .NET.

There are of course some obvious ones (BILLIONS OF DOLLARS!!!) but I am more interested in the technical arguments. The issue of monopoly vs OSS is also obvious, and not really applicable here. The client doesn't care much about that one way or the other, at least the tech guy doesn't. They will be running on Solaris and Oracle for sure, so they are quite comfortable with proprietary platforms.

This is a straight technical discussion not a philosophical one (although the *nix vs MS philosophy is a very important discussion, so feel free to pontificate on that one.)

Some of my questions include:

  • What does .net have that OACS doesn't? Will this be *forever* true?
  • What does OACS have that .net doesn't? Will this be *forever* true?
  • How do RAD times differ?
  • How do the developer communities differ?
  • How do learning curves differ?
  • Any other questions or statements?

I know of at least a few people who are intimately familiar with both application environments. We have certainly exhausted the Java vs OACS discussion, which probably should have been framed within J2EE vs OACS.

TIA

talli

Collapse
Posted by Don Baccus on
ISTM the argument has to be at the application level - what do they need to do, and how do existing solutions in both spaces address them?

In the .NET space they're looking most likely at licensing fees, with us they're not.  Both probably involve development fees.

MS is widely known for offering secure and trouble-free infrastructure.  Their ability in this area offers relief to those of us who suffer from e-mail, webserver, and default install viruses and worms that would, of course, be much worse if we used something other than NT/2K/IIS.

After all, when we compare crack-in ratios of aol.com and mapquest.com vs. IIS deployed solutions including MS's own websites, it's obvious that aol.com and mapquest.com are easy to crack.

NOT!

If you can't sell MS's proven horrible track record in regard to security issues as a basis for showing that they just don't get it ... then you're not trying hard enough.

In my mind that's the first step.  Feature-by-feature comparisons must follow, of course, but I feel we're getting to the point where we have a strong statement to make.

And chanting "nimda" should make them wonder about undiscovered holes in MS software ...

This is truth ... not merely an anti-MS rant.

Collapse
Posted by Jun Yamog on
Hi Talli,

Based from low experience with .Net here is my best shot.  This is just some facts I know, not advocacy of OACS or .net

*  What does .net have that OACS doesn't? Will this be forever* true?

Its not going to hold forever true, but it might.  .Net advantage is having an IDE (Visual Studio .Net) that really makes it easy for fist time developers to start working on .net.  Also those who are coming from older Visual Studio will be familiar with things.  Not that its is the same, its different.  But the perception is VS .Net is the upgrade.  OACS have emacs, which may not be acceptable for newbies.  We are unlikely to ride on Eclipse.

* What does OACS have that .net doesn't? Will this be forever* true?

License, we are Open Source.  The ability to run on non MS platform.  Also we are more proven technology.  ACS goes back a few more years in web technology compared to .net.

* How do RAD times differ?

Starting from scratch will have .net faster, care of more tools and VS .net.  Once developers are familiar with the platform OACS should be faster.  As you are free to go deeper into the guts.  Also tcl and sql are very easy and forgiving languages.

* How do the developer communities differ?

We are smaller, .net community is bigger.  OACS has only 1 community, while .net will have different types of community.

* How do learning curves differ?

Depends on where the user is coming from.  SQL junkie will be right at home with OACS.  Non SQL guy will have a harder time with OACS.  Also a VS experienced developer will have lower learning curve to .net.

* Any other questions or statements?

OACS problem space is on web applications, although some have done work beyond this.  But its real niche is web applications.  While .net being a marketing umbrella is more than creating web applications.

Collapse
Posted by Talli Somekh on
Don, the license fees and security are both extremely compelling arguments, for sure, and will be used in liberal amounts during the sales engagement. From the perspective of the nontechnical administratives, I think it will be very easy to point to historical inseecurities and unreliability. This is, of course, also a very important technical argument, as engineering is evolutionary process.

However, I would really like to go in with some more exact technical arguments as to why the architecture is either intrinsically insecure or so immmature/underdeveloped that it would be foolhardy to accept it in its present state.

That is, during the technical sales engagement, it will be very hard to be a broken record saying, "look at the history, look at the history..." especially as MS is putting out new marketing/FUD about "secure and trusted computing."

MS is positioning the .NET architecture as a "revolutionary product" that will change "computing forever." (Ballmer was actually touting XML as "as big as the invention of the PC and of the Internet"). I guess what I am looking for is explanation, evidence or data that:

  • How the .NET architecture fits within the context of MS architecture (which is unreliable and insecure)
  • How this is different from the OACS/Unix philosophy
  • What is good and/or bad about this?

I know these are quite open-ended questions, but I'm hoping the answers can be made vis a vis the OACS toolkit. I have developed good arguments/comparisons of OACS vs J2EE and OACS vs Zope, but don't really have one for .NET other than, "Uh, MS? I hear they are evil, but you'd have to ask George Bush about that..."

Jun, thanks for your points. Those are really helpful. I know the communities of .NET and OACS are very different, of course, but I hadn't thought of the fact that .NET extends beyond the web client/server model.

talli

I'd be happy to write up a OACS vs J2EE/.NET/Zope biznarse argument if this thread gets going.

Collapse
Posted by Alfred Essa on
Talli,

One would have to know a lot about the particulars of their environment to determine which is the better choice.

Technology choices need to be viewed as business decisions and one of the key business questions is sustainability. It's one thing to build an application as a one-off. It's quite another to keep it evolving in response to user needs and new markets.

If I were in their shoes, some of the questions I would ask: How much does this application need to evolve? Do I have .NET expertise in house and the budget to continue to enhance the application?

OpenACS has an inherent advantage over .NET and that's the *community* of very smart people supporting and developing the toolkit. For us SloanSpace/.LRN has been a huge success. Could we have done it in J2EE or .NET? Sure. It would have cost us a hell of a lot more.  More importantly, we would not be in a position to leverage the ongoing work and innovation of the community. That's the beauty of open source.

Collapse
Posted by Talli Somekh on
Al, I think you're right - I think I need to put this question into better context.

What I will do is work up a use case. It might be instructive to use dotLRN as that use case for the community as a whole, but this particular project is relatively different from dotLRN.

In the meantime, I will repost with more specific and well thought-out questions.

talli

Collapse
Posted by Jun Yamog on
Hi Talli,

A good technical argument would be, OACS has lower hardware needs.  That is why OACS appeals to smaller organization that is tight on a budget.  You can say outright there, take this desktop machine of yours.  And lets install OACS.  You can develop, use it for live site.  Take the same machine and it will hardly be usable for .net both in serving for the live site and development.  So in .net you need to buy your live server and development workstations.  But then hardware is cheap this days... so not a real $ saver.  Just a perception.

You can take the argument further.  By saying that lets get all the junk PC in your inventory and make them into a cluster.  To serve that kind of traffic .net will need X amount of hardware.

Another is inverse the argument of .net.  As I have stated above, .net is easier because it has VS.net.  You can say, .net needs a IDE to develop, so its harder.  So additional cost in purchasing the tool.  While in OACS a text editor is all you need.  Then give them a very short demo and get their hands dirty on a template.  Show them how easy to use the template or even ad_page_contract.  Or even a very simple ad_form.  Although such functionality can be done in .net, you will need VS .net to ease the pain.

You can also show them that .net's web form are generated from a DLL that MS ships.  This would mean its not technically possible to alter it.  Unlike in OACS the forms source code are all there.  Its with templating's form builder and given to the developer in easier fashion in ad_form.

Still with all the argument that you can come up, Al is 100%.  It will depend on the business context.  You are unlikely to walk out from a MS shop with a signed contract.  Also it maybe likely possible, that all your arguments will be subconsciously telling them that they are dumb in deciding to invest in MS.  :)

Collapse
Posted by Reuven Lerner on
It's a bit unfair to compare OpenACS with .NET, because they're totally different animals.  In the end, they both allow you to create Web applications, but they do it in very different ways.

.NET is sort of like an operating system, with a huge number of libraries and utilities for developing software.  OpenACS is a toolkit for developing Web applications.  You can probably make a decent comparison between OpenACS and a particular subset of .NET's standard library.  But that doesn't do justice to a large part of .NET can do.  And of course, .NET doesn't do justice to the working applications and sophisticated infrastructure that OpenACS provides.

Let's say you want to create an online community in .NET.  Well, you have to create lots of database tables, create a library that connects to those tables, create applications for administering those tables, and then create user applications that do what you want.  With OpenACS, the odds are good that 2/3 of the work has already been done with you.

But if you're creating something totally new and different that won't rely on existing tables that OpenACS provides, then the difference is one of development speed and system stability.  Overall, I would say that OpenACS is likely to give you an edge in development speed, simply because Tcl is interpreted and thus gives you more flexibility when developing.  But I have heard from numerous people that Microsoft's development tools are amazing, and that they work really fast and really well.

Whenever I pitch OpenACS to a client, I write down a list of their requirements and then show how many of their needs are already built into the working OpenACS system.  You want users?  Done.  You want groups?  Done.  You want permissions?  Done.  You want e-commerce?  Done.  You want messaging?  Done.

The days of building Web applications from scratch are over.  You want a rich infrastructure for creating applications, and the more that comes with the infrastructure for free, the better.  .NET might give you lots of tools to create your own applications, but in that way it's more similar to the Perl and J2EE approach than to the OpenACS or Zope approach.  The latter try to give you oodles of high-level functionality, not just the tools that you need to create your own functions.

Collapse
Posted by Don Baccus on
In some sense if the customer's seriously considering a .NET solution you've already lost the battle, because the customer is not concerned about

1. lock-in
2. ever-increasingly onerous licensing terms including near-mandatory updates, etc
3. reliance on X86 hardware
4. licence audits more akin to a car-jacking than anything previously seen in the software world.
5. Mono?  MS is patenting key components of .NET
6. security.  Pointing out their history isn't FUD.  Yes, they've claimed to be paying more attention but there've been a couple of nasty rounds of exploits since and no sign they're letting up.
7. If you want to live in the X86 space, 2K requires more resources than a headless Linux server box, and Linux wins hands-down in reliability.

There's a *very* good business case for staying as far away from MS as possible.  Hear those footsteps running down the corridor?  Those are IT managers running towards Linux-based solutions offered by real-world companies like IBM.

OpenACS - and some other potential solutions - really allows you to scale your solution to your problem.  Are you large and feel you need the world's most popular enterprise-class RDBMS and want the security of running it on the most popular hardware platform for hosting it in the enterprise?  We support Oracle and Solaris, and use the same webserver as the busiest web site in the world, aol.com.  We also support vanity blog sites running Postgres on cast-off PCs.

I've used Visual Studio professionally back in my compiler-writing days, as recently as four years ago.  It's a decent development environment and we don't offer anything like it.  I'm sure that it's just as great for writing .NET apps in C# or VB as it is for C++.  I'm sure that .NET's wide set of classes help one cobble together apps quickly.

As far as XML being as important as the PC or the spinning electron or whatever, remember that XML - like HTML - is simply a subset of SGML, which has been around for a very long time ... that's hype and nothing but hype and even if it weren't hype, MS isn't alone in using XML.  You could point out that OpenOffice and KDE have used publicly-defined XML formats to store documents for years, now, since before Steve Ballmer learned how to pronounce XML.

I think there are plenty of ways you can attack an MS solution without referring once to OpenACS ... which then becomes a bit like the icing on the cake.

But if they're sold on MS then they're sold on MS and your sales budget is probably better spent on the increasing number of people who are seriously considering non-MS server solutions *without* being prodded by a vendor.

Collapse
Posted by Talli Somekh on
Yeah, Don, you're right. I generally move on whenever coming across a project that defines the architecture a priori. That results is way more work than anything is worth. The interesting thing here is that this group is already a client, albeit for different projects. I've been doing smaller OACS web projects with an eye on bidding when their big ole monster came along.

They have a member of their board who has been building massive databases for decades who has been directing their long term tech direction, which includes a very substantial and massive database. He seems to drank the .NET koolaid recently, though. As a result, I would like to be able to compare and contrast the productivity, stability and reliability of .NET web architecture vs OACS.

Here is a little more background:

For the big project, I haven't been privy to their plans because I would then be disqualified for bidding when the RFP comes out. I have a general sense of what they want to do, though, and it is a *perfect* fit for the OACS. I recently learned what their preliminary architectural plans are, though, and it is heterogenous and, uhm, weird.

Basically, the DB will be Oracle on a big fat Solaris box with a .NET app and web server in front of it. In fact, the web/app server may not be in the same room or even the same subnet as the Solaris box, which is really tripping me out.

Now, having a general idea of their needs and their organization structure, I would have suggested OACS, Linux and Oracle/PG, but they went ahead and bought everything before they made any other decisions.

However, they are not close to making the ultimate decision on the front end app/web issue and I have been entrusted with building a very basic prototype of the system using OACS. So I have an opportunity to make the argument for OACS in place of .NET in a very real way.

But in order to get the board member to stop fixating on .NET, I need to have some arguments that can compare OACS with .NET. He seems to have really strong opinions on technology, which may make this effort worthless to even try. I am meeting with him on Tuesday though, where I will find out about this.

I think that this discussion has been very fruitful, though. Gimme a little time and I will summarize what I have heard so far.

Collapse
Posted by Don Baccus on
Obviously your first task is to get a good prototype in their hands as quickly and painlessly as you can.  This is undoubtably the best thing you can do to build a case for an objective assessment of both your company's abilities and the technology you work with.

But ... the organization seems screwed up anyway.  Board members shouldn't be making operating decisions of this sort unless they happen to be part of the implementation team.  And that would be unusual in most organizations.  And he should be clear about which roles he plays - if he's the project lead then his ass should be on the line for completion.  If he's acting as a board member he should trust his staff and allow them responsibility because it will be their ass on the line.

My guess is that his ass isn't on the line but he's going to do his best to make those whose asses are on the line do things his way regardless.

The other issue is that in essence he's saying he doesn't trust Musea, a potential vendor, to make an intelligent choice.  That also raises red flags IMO.

If it were me, unless I really, really cared about the organization I'd run away and never look back ...

If you win the business and do a good job, your board member will probably continue to say "it would've been better in .NET"

If you win it and screw up, due to faults of your own, the inability of the client to spec a system that meets their needs, or both, you'll here "the project would've been a success in .NET"

What you're *never* going to hear from this board member is that they made the right choice by going with Musea and OpenACS.

You know that campy saying some people use ... "What would Jesus do?"?  Ask yourself what Bill, the antichrist, would do.

When's the next board election?  How much would it cost to oust this guy?  That's what MS would do! :)

Collapse
Posted by Andrew Grumet on
Recalling pieces of what Reuven and Don wrote, I think you will have lost the battle if your discussion is framed as "OpenACS vs .NET". A better comparison would be "IIS plus the .NET class libraries vs. AOLserver" or "OpenACS vs. iBuySpy". The problem with talking about "OpenACS vs. .NET" is that the average tech person has a much better idea of what .NET is than they do what OpenACS is. So your audience is likely to equate "OpenACS" with "the AOLserver Tcl APIs" which does a vast disservice to the gobs of functionality, field testing and peer review that OpenACS has under its belt.
Collapse
Posted by Jun Yamog on
Yes Andrew makes a very good point.  It was Hamilton Chua that gave us a demo about this iBuySpy portal.  Like all MS, its really slick.  Not sure where in the site you can get a demo of the portal admin.  Ham had a local install for us.  But you can look at the screen shots here:

http://www.ibuyspyportal.com/DesktopDefault.aspx?tabindex=4&tabid=5

And this was more than a year ago.

Collapse
Posted by Andrew Piskorski on
Does .NET ship with a well-develped, proven data model for use in integrated, database backed web sites? I honestly don't know, so that's not a rhetorical question. Plus a rich procedure library of designed to work with and take advantage of that data model? If not, then what product using .NET does? Whatever product that is, would probably be closer to an apples to apples comparison with OpenACS.

We all know Philip's favorite old (paraphrased), "It's just the data model plus some Tcl plumbing on top." statement is and was nonsense, not to mention a vast injustice to all the good procedural code in (Open)ACS. But IMO, his main point there, that the data model is really the central and most important part, was right on.

Collapse
Posted by Reuven Lerner on
I would be very surprised if .NET includes any sort of data model.  .NET, like J2EE, provides you with plumbing to create your own applications.  But you have to start from scratch.

Back when Enhydra was a viable contender in the open-source J2EE space, I asked one of the project heads why they don't provide any applications or data model.  He said that this was a conscious decision not to interfere with the vendors of add-on applications.

I suspect that Microsoft has a similar viewpoint.  Namely, if they provide a data model as part of .NET, then (a) it won't be appropriate for everyone, and (b) it'll mean that Microsoft is competing with their own integrators and vendors.

So while .NET has all sorts of fancy database-access methods and marshalling systems, I expect that you're stuck doing all of the database work on your own.  This is where OpenACS has a big win, for sure.

Collapse
16: Crazy Ideas... (response to 1)
Posted by Gabriel Ricard on
Would it be possible, in the future, to provide a .Net-style interface to OpenACS using Mono?

Also, how feasible would it be to produce an IDE for OpenACS?

Collapse
17: Re: Crazy Idea (response to 1)
Posted by David Walker on
If I were doing it I might look into expanding Visual TCL
http://vtcl.sourceforge.net/
into a full featured OpenACS IDE.  I haven't used Visual TCL yet but from the screenshots it looks promising.
Collapse
Posted by Jon Griffin on
I have often thought about an IDE for 2 reasons:
  • 1. RAD
  • 2. Having an app that uses the OACS data model, but using it locally.
Many organiziations still enjoy the MS Acess style desktop application and that doesn't translate well to the web. Things like drop down box population etc that can only be done with browser side programming.

If anyone is interested in extending the Visual TCL app or even starting something from scratch, I would be most interested and I think it would be a huge win for the community.

Collapse
Posted by Talli Somekh on
The idea of an OACS IDE is much closer than one might imagine. Give me a bit of time (again) and I will post some news.

talli

Collapse
Posted by Roberto Mello on
I have thought about an OpenACS IDE as well. The Brazilian "Miolo" project (a PHP implementation of something like acs-kernel) developed one called "mioloide" (which sounds funny in Portuguese): http://mioloide.codigolivre.org.br/

Those guys are so PHP-centric that they go through the pain of developing in PHP-gtk.

An IDE that would hook up to your database to identify tables, help with queries, help create a skeleton of a package, help generated ad_form statements (including validate blocks), would be very helpful.

-Roberto