Re: [Fresco-devel] Re: ACE

Nathaniel Smith <[email protected]>
Newsgroups gmane.comp.video.fresco.devel
Message-ID <[email protected]>
Well, you've shown an ability to learn once; I'll try explaining
things one more time before deciding you're a troll.  At least the
information may be useful to someone else.

On Mon, Nov 25, 2002 at 11:30:45AM -0700, M. Evans wrote:
> 
> > You suggest we fork ACE and throw out all the parts we don't need, to
> > make it slim enough to be usable?  That's absurd.
> 
> What I'm suggesting that if IDL had ever lived up to its real promise,
> then it would enable ACE to expose to the external world just
> what the external world needs, and no more.  Internal dependencies would
> be irrelevant.  The fact that IDL cannot do this indicates that all the
> overhead of IDL is not worth much.
> 
> Or, that ACE's CORBA wrappers are incomplete, in which case it's better
> for you to contribute to ACE (factoring, interfacing) than to re-invent
> ACE on a smaller scale.

You clearly have no idea whatsoever of what CORBA, ACE, or both, are.

CORBA is a fairly complicated network protocol (and assorted
paraphernalia) for making distributed, multi-threaded method calls on
objects.  Method calls are fairly expensive, and a full-fledged ORB is
quite a complex thing to write.

ACE is a POSIX wrapper (on steroids); it's all about system level
functionality, providing interfaces to threads, networking,
pseudo-terminals, etc.  It's lower level than CORBA.  You can't use
CORBA to talk to ACE, there'd be no point; you'd need all the
resources ACE provides just to make the request for those resources.

Using ACE via CORBA would be like driving to the bus stop because you
don't have a car.  If you can use CORBA at all, then you already have
all the functionality you might want ACE to provide.

Your comment about ACE's internal dependencies is quite irrelevant to
the other things you mention in this paragraph.  The problem with ACE
is that it's huge, it generates huge libraries, it causes horribly
long compile times, and all that for no benefit (for what we'd be
using it for) compared to something simple like Prague, that doesn't
suffer from those problems.  Eliminating those problems would require
slimming ACE down, and slimming ACE down would be hard, because of the
internal dependencies.  I couldn't care less if an API I use exposes
more functionality than I need; that may be considered "bloat" by some
people, and it may tend to co-occur with other problems (like the ones
I described above), but by itself it's no problem.  You propose that
hiding ACE's interface behind something cleaner would (or should) make
it less bloated, but this is a non-sequitor, because I'm talking about
code size bloat, not interface bloat.

> > and something about IDL that makes no sense.  .NET is a wildly
> > different architecture from CORBA
> 
> Right, but it grew out of frustrations with the COM IDL scheme in
> Windows.

Possibly.

> > It's like comparing TCP/IP and the Pentium.
> 
> Oh bull.  They both try to accomplish language independence.  Though
> granted CORBA is a bigger monster than COM, that was a major goal,
> if not the only one.  Factoring software was another goal.

You make it sound like the quoted comment was comparing CORBA and COM,
not CORBA and .NET, which is quite a distortion of my original words.
I was talking about CORBA and .NET.

.NET is still a wildly different architecture from CORBA.  CORBA is
about letting different languages and runtimes talk to each other;
.NET is about putting everything into one runtime (and arguably[1],
into one language with some mild syntactic differences).  This is an
interesting thing, but it's not our thing; we're not interested quite
yet in throwing away the entire UNIX execution and process model.

[1] "arguably", meaning, I have heard this argument, some people agree
with it, I suspect others don't, and I'm not interested in discussing
the merits of the positions on this list.

> > And then you pull out this wildly irrelevant thing about Microsoft
> 
> I'll spell it out.  The relevance is that Microsoft, after years of work
> on IDL in Windows (COM, COM+, DCOM), decided that it wasn't making
> things happen in the real world -- for the same reasons you have
> discovered it can't make things happen with ACE.  Bloat, bloat, more
> bloat, tons of overhead, extra programming labor.  So it switched
> to .NET.  COM is still supported, but .NET is where Microsoft bet the
> bank.  So here we see a major OS software company essentially giving up
> on IDL approaches.

I really don't see how you're getting this.  I can sort of understand
your confusion about what ACE is as compared to CORBA (especially if
you're coming from a COM background), but I totally fail to see how
ACE's heavy use of templates, etc., could be "the same reasons"
COM/COM+/DCOM failed.  Unless MS's problem was that they were unwisely
using bad supporting software.

And .NET is a much bigger chunk of code than any CORBA implementation;
claiming that it's purpose was to _avoid_ bloat seems odd.

> CORBA is an IDL, and yes it can run across a network; so does DCOM.
> That's irrelevant.  What an IDL is supposed to do is expose
> well-factored interfaces to arbitrary IDL-capable languages.
> 
> The .NET approach scraps the IDL in favor of a common language
> runtime.  So there is no need to write IDL interfaces any more.
> Languages just plug and play because they are compiled to a common
> back-end.  No more IDL libraries!

A nice bit of advertisement for .NET, but I fail to see how it's
relevant, unless you're trying to somehow advocate that we switch to
.NET.  But as I said above, we're not ready to give up on the Unix
process model quite yet, and especially not in favor of an untested
environment designed by a monolithic company with (currently) no free
support.

> > It is, in fact,
> > _not_ easier to do that, than to just write the parts we need.  ACE is
> > huge, complicated, with a _lot_ of internal dependencies.
> 
> Oh, sorry, I thought IDLs were meant to hide internal dependencies.
> Guess not. :-)

As I said above, you can't hide implementation bloat at the API level.
It's still there, and still as much a problem as it ever was.

> So far all I've heard is that it's too hard to build, so you gave up
> and rolled your own code.

It's comments like this that make me think you're a troll.  Nobody
said this; you just made it up.

> Seems to me it would make more sense to
> contribute to the ACE project.  You lecture me about "forking," but
> this Prague thing is a prime example of exactly that -- forking.  Not
> in the strict technical sense, but in the broad sense.  There is
> no more serious fork than starting a whole new project to do the same
> thing.

We don't do "the same thing".  Prague solves some of the same general
problems as ACE, but with very different constraints.  This is like
saying the lynx developers should instead contribute to mozilla,
because both write code to do the same thing.

> This is how open source efforts defeat themselves, constantly reinventing
> wheels.  There are probably two dozen smaller Prague equivalents out
> there if ACE is not to your liking.  Argue all you want about ACE,
> there are many other libraries -- and now heaven help us, another one,
> Prague.

Oddly, it hasn't defeated us.  I'd want more empirical evidence,
preferably backed by some technical understanding.

> > Saying "it's always easier to strip things down" is simply not true in
> > the real world, and makes me wonder how much time you've spent doing
> > actual engineering.
> 
> Oh come on.  I'm a professional making six figures.  I know my code
> and how to manage my time.  I've seen the not-invented-here syndrome
> before.
>
> Besides, my goodness, I can't believe what I'm hearing -- people
> interested in slim libraries who depend upon CORBA, the most notorious
> bloatware in the known universe.

If this responded to the point, it might not be trollbait.

> IDLs are supposed to hide internal dependencies, let you use what
> interfaces you want, etc.  Even if ACE lacks required interfaces, it
> would be more sensible for Fresco to contribute them than re-invent
> pieces of ACE.  Or to find another open-source library more to your
> liking.  The problems solved by Prague have been solved before, many
> many times.
>
> > However, because TAO uses ACE, it generates extremely bloated
> > libraries, so huge that Stefan never even tried using them.  This
> > could be considered a bug in TAO.
> 
> So the obvious solution is to work on TAO not ex nihilo creation of
> ACE-lite.

The way to make TAO lighter is to create ACE-lite.  Of two identical
things, you prefer one over the other?

> > ACE is not a CORBA system.  I don't see how ACE being overkill as a
> > POSIX wrapper makes the "whole CORBA idea" untenable.
> 
> Assuming ACE were completely wrapped with CORBA interfaces,
> I don't see how a system wrapped in CORBA could be considered overkill
> unless CORBA itself is a failure.

> Besides, I think the whole overkill notion belies a failure on your
> part to appreciate the potential for growth in Fresco.  You might find
> ten years from now that Prague has become ACE in all but name.

Possibly.  But that would require some absurd feature creep on the
part of Fresco; ACE is as research system to investigate pretty ways
to make objects solve nasty high performance communications problems.
Fresco doesn't have any nasty high performance communications
problems (well, except for making CORBA fast, but that's not our job,
it's the ORB's).

Unless, of course, you wanted a window server and ATM router (with
realtime guarantees!) all in one :-).

> Actually I'm a very nice person.  Just very opinionated. :-)

Glad to hear it.  I'd just request that in the future, you start with
facts, and _then_ move on to opinions?

-- Nathaniel

-- 
"Of course, the entire effort is to put oneself
 Outside the ordinary range
 Of what are called statistics."
  -- Stephan Spender

This email may be read aloud.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.