[comp.sys.apollo] The White Paper

dls@cci632.UUCP (Darren Swartzendruber) (11/17/89)

I am looking for a copy of the "The White Paper", also know as
Apollo NCA and Sun ONC: A Comparison".  _HP Design & Automation_
(Sept 1989) states that "Apollo had made the paper available to 
the industry-at-large."  Can someone email to me as well as posting
it.

Thanks.

Currently fighting the question:: What shall we buy: Sun or Apollo!?!

--

Darren Swartzendruber       CCCCCCCCCCC CCCCCCCCCCC IIIIIIIIII
                            CC       CC CC       CC II      II  COMPUTER
dls@cci632                  CC  CCC  CC CC  CCC  CC IIII  IIII  CONSOLES,
rochester!rit!cci632!dls    CC  CCCCCCC CC  CCCCCCC IIII  IIII  INCORPORATED
uunet!ccicpg!cci632!dls     CC  CCC  CC CC  CCC  CC IIII  IIII
uunet!rlgvax!cci632!dls     CC       CC CC       CC II      II  An STC Company
rayssd!cci632!dls           CCCCCCCCCCC CCCCCCCCCCC IIIIIIIIII

mishkin@apollo.HP.COM (Nathaniel Mishkin) (11/21/89)

In article <31904@cci632.UUCP>, dls@cci632.UUCP (Darren Swartzendruber) writes:
> I am looking for a copy of the "The White Paper", also know as
> Apollo NCA and Sun ONC: A Comparison".  _HP Design & Automation_
> (Sept 1989) states that "Apollo had made the paper available to 
> the industry-at-large."  Can someone email to me as well as posting
> it.

The paper is (for better or worse) in Interleaf format and is moderately
long, which are a couple of the reasons I've not distributed it
electronically.  (I'm also not sure I wanted to be pummeled for distributing
it -- but you asked...)  So what I've done is to make Interleaf generate
a Postscript file and then compress'd, uuencode'd, split, and shar'd
it.  (I'd be glad to hear from anyone who knows a better way to do this.
Maybe having a man page for shar handy would have helped :-) The result
is 3 pieces I will post following this message.  If you get the 3 shar
files and run them and then run "make", you should end up with a file
called "comparison.ps", which should be plain old Postscript which you
can print.

Let me make a few things clear:  First, it is based on my knowledge about
current product offerings.  Second, I take personal responsibility for
the content.  This is NOT some official pronouncement of HP.  The
documented started off its life as a writing down of my repeated verbal
responses to the question "So what makes NCS different from Sun RPC?".
If anyone has any complaints, comments, or corrections, please let me
know and I will address them as soon as I possibly can.

joshua@athertn.Atherton.COM (Flame Bait) (11/26/89)

We are talking about Apollo/HP's white paper comparing Apollo's Networking
system and Sun's Networking system.  The version of the paper which I have
is dated Jan. 1988.  If a new version has come out since then, my comments
would be out of date.

mishkin@apollo.HP.COM (Nathaniel Mishkin) writes:

>Let me make a few things clear:  First, it is based on my knowledge about
>current product offerings.  

Had you actually written any Sun RPC programs at the time you wrote the paper?
I got the impression that the author of the White Paper had not actually used
Sun RPCs. 

>Second, I take personal responsibility for
>the content.  This is NOT some official pronouncement of HP.  

Too late for that.  The copy I got about 10 months ago from Apollo has 
Apollo's name all over it, and does not have your name on it at all.
It was an "official pronouncement" of Apollo then :-).

>If anyone has any complaints, comments, or corrections, please let me
>know and I will address them as soon as I possibly can.

0. The paper is out of date by two years at least.  Many things have chagned
   since it was written.

1. The paper is marketing propaganda with a thin veneer of technical knowledge.

2. Never use the paper's arguments in a debate with someone who understands
   Sun's RPC: you'll be cut to shreads.  The facts about Sun's RPC are often
   out of date or inaccurate, the facts about Apollo's RPC are often 
   technically acurate, but totally misleading.

There are two ways to compare Sun's and Apollo's networking systems, 
technically and intuitively.  Technically would take many pages to handle in
detail, but here is a quick inituitive comparison:

Apollo's networking system is like VMS's file system; Sun's networking system 
is like UNIX's file system.

    VMS is a file system of features.  It directly supports all kinds of 
    special purpose files, it has record based files and stream based files,
    all kinds of files.  UNIX only has one kind of file, but it is flexible
    and easy to use. VMS has features; UNIX has simplicity.  

    If you make a feature by feature comparison, Apollo's networking system
    has more features than Sun's.  But, if you want simplicity and ease of
    use, then Sun's is the winner.

Apollo's RPC is like PASCAL; Sun's RPC is like C.

    Since it was designed as a teaching language, PASCAL forces you to write
    programs the way the designer wanted programs written.  C is a language 
    designed to to what the programmer wants, right or wrong.  PASCAL says 
    "this is the best way to do things", C says "here is a flexible language, 
    do what you want".
    
    For example, Apollo's RPC forces you to use their beefed up UDP transport
    protocol.  Sun's RPC allows you to use UDP or TCP as a transport protocols,
    your choise.  Apollo makes it very difficult to use any interface
    language except NIDL.  Sun provides RPCGEN, but also makes it easy to
    roll your own interface language, if you want to.  Apollo makes it very 
    difficult to use any data representation except their's (NDR).  Sun makes
    it easy to replace their representation (XDR), if you want to.

Finally,  Sun's RPC system has always been an open system; Apollo's is just 
now opening up (and even now, is opening in a marketing/buzzword sense of
the word).

    The know this is an emotional issue, but lets face it.  Sun's RPC source
    code has been freely distributable for three or four years.  Apollo's
    source is still not freely distributable.  Apollo uses a proprietary,
    private communications protocol.  Sun uses public protocols when possible,
    and publishes their protocols, when they are forced to create their own.

disclaimer: I do not work for Sun or Apollo.  I have never worked for Sun or
Apollo.  I have used both Sun's and Apollo's RPC systems, but not their 
complete networking sytems.  I speak for me: no one else.

Joshua Levy                          joshua@atherton.com  home:(415)968-3718
                        {decwrl|sun|hpda}!athertn!joshua  work:(408)734-9822 

achille@cernvax.UUCP (achille petrilli) (11/26/89)

In article <14983@joshua.athertn.Atherton.COM> joshua@Atherton.COM (Flame Bait) writes:
>We are talking about Apollo/HP's white paper comparing Apollo's Networking
>system and Sun's Networking system.  The version of the paper which I have
>is dated Jan. 1988.  If a new version has come out since then, my comments
>would be out of date.
> .......
>0. The paper is out of date by two years at least.  Many things have chagned
>   since it was written.
>
>1. The paper is marketing propaganda with a thin veneer of technical knowledge.
>
>2. Never use the paper's arguments in a debate with someone who understands
>   Sun's RPC: you'll be cut to shreads.  The facts about Sun's RPC are often
>   out of date or inaccurate, the facts about Apollo's RPC are often 
>   technically acurate, but totally misleading.
>
>Joshua Levy                          joshua@atherton.com  home:(415)968-3718
>                        {decwrl|sun|hpda}!athertn!joshua  work:(408)734-9822 

Hi,
I'm in no way an RPC expert, I just tried to use both Apollo's NCS and Sun's
RPC just for a couple of examples and just to find out their applicability to
our environment.

I found NCS a much more finished product (but I'm no expert :-).
May be is just matter of doc style or whatever else, I don't know.

What strikes me, is that there is NO justified technical argument in Joshua's
posting. Point 0) refers to a paper dated Jan. 1988, almost 2 years old, point
1) is irrelevant (Sun RPC doc could be taken exactly like this, as marketing
propaganda, just like any vendor's doc and report), point 2) is just subjective.

I would like to see technical comments, even if they are long, I'm interested
and would really love to see them. Please post, I believe there is interest in
these sort of things.

I'm not working for Sun or Apollo nor I have any interest in them.

Thank you,
	Achille Petrilli
	Cray & PWS operations

mishkin@apollo.HP.COM (Nathaniel Mishkin) (11/28/89)

In article <14983@joshua.athertn.Atherton.COM>,
joshua@athertn.Atherton.COM (Flame Bait) writes:
> Had you actually written any Sun RPC programs at the time you wrote
the paper?
> I got the impression that the author of the White Paper had not actually used
> Sun RPCs. 

I've (a) read all the available documentation, (b) looked closely at
several programs (including Sun's samples), (c) tried to write some simple
programs, and (d) read the Sun RPC source code.  Based on all of that,
plus my native intelligence, I think I'm competent to comment.

> >Second, I take personal responsibility for
> >the content.  This is NOT some official pronouncement of HP.  
> 
> Too late for that.  The copy I got about 10 months ago from Apollo has 
> Apollo's name all over it, and does not have your name on it at all.
> It was an "official pronouncement" of Apollo then :-).

I'm afraid I don't have 100% control over what the marketing folks do.
I accept your criticism though.

> 0. The paper is out of date by two years at least.  Many things have chagned
>    since it was written.

Well, first of all, as you've said, *you're* comments might be out of date.
In fact they are, since the paper I just distributed is different from the 1/88
version.  Given the way the world works, it's just not possible to (a) always
update these things as frequently as everyone would like, and (b) purge all
existing old copies of documents to make sure no one gets the wrong impression.
This is why I put dates on the paper (at least I started doing that some time
ago).  Give me a break.

> 1. The paper is marketing propaganda with a thin veneer of technical
knowledge.

Remarkable.  I wrote the paper.  I consider myself to be solely technically
oriented.  I believe I have a pretty good understanding of all the technical
issues.

> 2. Never use the paper's arguments in a debate with someone who understands
>    Sun's RPC: you'll be cut to shreads.  The facts about Sun's RPC are often
>    out of date or inaccurate, the facts about Apollo's RPC are often 
>    technically acurate, but totally misleading.

Let's have a list of the parts that are out of date or inaccurate.  

Based on my best recollections of the various versions of the paper and
of Sun RPC, the areas of old versions of the paper that might be out
of date relate to RPCGEN.  I think at the time of the first version of
the paper, there wasn't an RPCGEN at all.  Later there was an RPCGEN,
but it generated only server stubs, not client stubs.  Last I looked,
RPCGEN did both stubs, but still allowed only for procedures that take
one input parameter and return outputs as function values.  Recently,
Sun/Novell/Netwise made an announcement that said that the Netwise RPC
TOOL stub generator would generate stubs that talk to the Sun RPC runtime.
As far as I know, this is not available to the general public, if it's
even available at all.  (Note that the Netwise interface language is
significantly different from Sun's [RPCL].  So much for compatibility.)

>     If you make a feature by feature comparison, Apollo's networking system
>     has more features than Sun's.  

Glad to hear we agree on at least one thing :-)

>     But, if you want simplicity and ease of
>     use, then Sun's is the winner.

Of course I disagree.  I'll happily let the world decide whether in fact
for a broad class of applications Sun RPC is either simpler or easier
to use.  I don't think it's simpler to have to understand when to use
UDP and when to use TCP.  I don't think it's simpler to have to know
whether my input or output parameters are larger than 8K.  I don't think
it's easier to use when I can only pass one parameter as input thereby
requiring me to manually write code to assign my "logical" input parameters
into fields of a struct before making a remote call.  I don't think it's
easier to use when I have to remember when I do and when I don't have
to explicitly free storage that the stubs have malloc'd for me under
the covers.

>     For example, Apollo's RPC forces you to use their beefed up UDP transport
>     protocol.  Sun's RPC allows you to use UDP or TCP as a transport
protocols,
>     your choise.  

See above.

>     Apollo makes it very difficult to use any interface
>     language except NIDL.  Sun provides RPCGEN, but also makes it easy to
>     roll your own interface language, if you want to.  Apollo makes it very 
>     difficult to use any data representation except their's (NDR).  Sun makes
>     it easy to replace their representation (XDR), if you want to.

Sure.  And I don't like C, but since the 68000 instruction set is public,
I can write a compiler for my own language.  What's the point?  Most
people don't want to write compilers; they want to get their jobs done.
They want to be supplied with a competent set of tools; they don't want
to reinvent the world.

In any case, both Sun RPC and NCS have runtime libraries that export
routines used by the stubs.  I don't see that either system has any
particular advantage in making any happier the small percentage of people
who want to design their own interface definition language and implement
a compiler for it.

>     The know this is an emotional issue, but lets face it.  Sun's RPC source
>     code has been freely distributable for three or four years.  Apollo's
>     source is still not freely distributable.  Apollo uses a proprietary,
>     private communications protocol.  Sun uses public protocols when
possible,
>     and publishes their protocols, when they are forced to create their own.

Both Sun RPC and NCS run (can run) on top of UDP/IP.  However, they're
both "private communication protocols".  The Sun RPC spec doesn't just
say "use UDP/IP".  It says "use UDP/IP in the following way".  That's
a protocol.  NCS does the same thing.  Admittedly, the NCS protocol is
more complicated, but that's because it does more things.  In any case,
the specification for both protocols are public and published.  (The
book "Network Computing Architecture" just published by Prentice-Hall
contains the complete specifications of the NCS RPC protocols.)

As far as availability of source code, sure, Sun gives theirs away and
we charge for ours.  I'll let the market decide whether what we have to
offer is worth the price.  (Also, I'll be interested to see whether Sun
gives away the source the the Netwise RPC TOOL compiler, which they claim
is the future of Sun RPC.)

                    -- Nat Mishkin
                       Hewlett Packard Company / Apollo Systems Division
                       mishkin@apollo.com

news@calgary.UUCP (Network News Manager) (12/05/89)

From: sharp@cpsc.ucalgary.ca (Maurice Sharp)
Path: cpsc!sharp

     I have also used both systems (NCS and Suns RPC), and thus have
my own comments on the following ...

In article <14983@joshua.athertn.Atherton.COM> joshua@Atherton.COM (Flame Bait) writes:

>Too late for that.  The copy I got about 10 months ago from Apollo has 
>Apollo's name all over it, and does not have your name on it at all.
>It was an "official pronouncement" of Apollo then :-).

     Not surprising.  They have to do something about Suns blatant
rumour spreading techniques (Mr. Sun says Sure WE are UNIX now..., NFS
for file sharing, much better than Apollos)

>0. The paper is out of date by two years at least.  Many things have chagned
>   since it was written.

     On both sides.  Apollo for the better as well.

>1. The paper is marketing propaganda with a thin veneer of technical knowledge

     Actually, Apollo NCS IS faster than the Suns.  I have the source,
compiled NCS and NIDL on the Suns, and it WORKED first time.  NO bugs
(unlike NFS for machine X).  Not only that, it took 3 Sun 4 file
servers to equal the speed of 6 DN3000's for the Mandel demo.

>2. Never use the paper's arguments in a debate with someone who understands
>   Sun's RPC: you'll be cut to shreads.  The facts about Sun's RPC are often
>   out of date or inaccurate, the facts about Apollo's RPC are often 
>   technically acurate, but totally misleading.

     Totally agree with you there.

>There are two ways to compare Sun's and Apollo's networking systems, 
>technically and intuitively.  Technically would take many pages to handle in
>detail, but here is a quick inituitive comparison:
>
>Apollo's networking system is like VMS's file system; Sun's networking system 
>is like UNIX's file system.

     More accurate to say Apollo is like Multics.

>    VMS is a file system of features.  It directly supports all kinds of 
>    special purpose files, it has record based files and stream based files,
>    all kinds of files.  UNIX only has one kind of file, but it is flexible
>    and easy to use. VMS has features; UNIX has simplicity.  

     Nonsense.  The Apollo system is Object Oriented.  I would agree
with a higher learning curve to master it.  However, it is MUCH more
flexible and MUCH easier to use.  (A file type to mount Vaxes at the
root level in abouth 2 weeks, including learning time)

>    If you make a feature by feature comparison, Apollo's networking system
>    has more features than Sun's.  But, if you want simplicity and ease of
>    use, then Sun's is the winner.

     I disagree, see above...

>Apollo's RPC is like PASCAL; Sun's RPC is like C.

     NIDL lets you do Pascal OR C.  You are confusing the interface
with the implementation.  Yes, the Apollo NCS is written in Pascal,
but then so is the OS.  And not standard Pascal, but one with many C
like extensions.  The Sun version is C to the core.

>    Since it was designed as a teaching language, PASCAL forces you to write
>    programs the way the designer wanted programs written.  C is a language 
>    designed to to what the programmer wants, right or wrong.  PASCAL says 
>    "this is the best way to do things", C says "here is a flexible language, 
>    do what you want".

     NCS is a can be used with C including a C interface definition.
Are you sure you used it ?

>    For example, Apollo's RPC forces you to use their beefed up UDP transport
>    protocol.  Sun's RPC allows you to use UDP or TCP as a transport protocols,
>    your choise.  Apollo makes it very difficult to use any interface
>    language except NIDL.  Sun provides RPCGEN, but also makes it easy to
>    roll your own interface language, if you want to.  Apollo makes it very 
>    difficult to use any data representation except their's (NDR).  Sun makes
>    it easy to replace their representation (XDR), if you want to.

     NCS does that because the machines are TRANSPARENT.  Try
interfacing with an IBM using Sun.  Yech, write your own.  For NCS, if
it exists on the machine, use NIDL and all is OK :-)

>Finally,  Sun's RPC system has always been an open system; Apollo's is just 
>now opening up (and even now, is opening in a marketing/buzzword sense of
>the word).
>
>    The know this is an emotional issue, but lets face it.  Sun's RPC source
>    code has been freely distributable for three or four years.  Apollo's
>    source is still not freely distributable.  Apollo uses a proprietary,
>    private communications protocol.  Sun uses public protocols when possible,
>    and publishes their protocols, when they are forced to create their own.

     Apollo now publishes all their stuff.  And they currently use 2
protocols (TCP, and Domain) with others to follow.  Sun ???

     I do not work for Apollo, nor for Sun.  I have used both.  And
just as a final note, RPC is NOT a good way of distributed processing
anyway.  If they were smart, they would offer Message passing, or even
Linda, or maybee all of them :-)

	maurice
Maurice Sharp MSc. Student
University of Calgary Computer Science Department
2500 University Drive N.W.			      sharp@ksi.cpsc.UCalgary.CA
Calgary, Alberta, T2N 1N4	                   ...!alberta!calgary!sharp

speyer@joy.cad.mcc.com (Bruce Speyer) (12/05/89)

Bruce Speyer / MCC CAD Program                        WORK: [512] 338-3668
3500 W. Balcones Center Dr.,  Austin, TX. 78759       ARPA: speyer@mcc.com 

speyer@joy.cad.mcc.com (Bruce Speyer) (12/05/89)

In article <2197@cs-spool.calgary.UUCP> sharp@ksi.cpsc.ucalgary.ca.UUCP (Maurice Sharp) writes:
	>>Apollo's RPC is like PASCAL; Sun's RPC is like C.
	>
	>     NIDL lets you do Pascal OR C.  You are confusing the interface
	>with the implementation.  Yes, the Apollo NCS is written in Pascal,
	>but then so is the OS.  And not standard Pascal, but one with many C
	>like extensions.  The Sun version is C to the core.
	>
	>     NCS is a can be used with C including a C interface definition.
	>Are you sure you used it ?
	>
	>Maurice Sharp MSc. Student

NCS and the suite of associated tools that are produced by Apollo are totally
implemented in C code.  (How else would it be portable?)

All coding at Apollo has been in C or C++ for the last three years except that
which is tied to Pascal for historical reasons.
Bruce Speyer / MCC CAD Program                        WORK: [512] 338-3668
3500 W. Balcones Center Dr.,  Austin, TX. 78759       ARPA: speyer@mcc.com 

joshua@athertn.Atherton.COM (Flame Bait) (12/06/89)

% = Achille Petrilli
# = Nat Mishkin
> = Joshua Levy (me)

% I would like to see technical comments, even if they are long, I'm 
% interested and would really love to see them. Please post, I believe there 
% is interest in these sort of things.

The quickest summary is: there isn't that big a difference.  Apollo, Netwise,
and Sun all make good RPC systems which will solve almost all of the 
problems you need solved.  This discussion is about which is "better", 
a hard to define idea when it comes to RPCs.  The RPC systems are different, 
however, which provides lots of stuff to talk about.

Unfortunately, I do not have the time to write a good technical comparison 
of RPC protocols (except speed and reliablity, which I already have written).
I'm sorry.  I know how valuable one would be.

Instead, I'll reply to the technical parts of Nat's posting.

% I found NCS a much more finished product (but I'm no expert :-).
% May be is just matter of doc style or whatever else, I don't know.

I can see how you felt that way, and I do not disagree.  In a sense I 
see Apollo's RPC as one tool, while I see Sun's RPC as several cooperating 
tools.  This gives Apollo the finish you talk about;  Sun's architecture
gives it greater flexiblity.

> If you make a feature by feature comparison, Apollo's networking system
> has more features than Sun's.  

Some of these features include: quit propagation, where if the server
routine fails this is echoed back to the client; no time out operation,
where you do not need to specifiy a maximum server time out; and a
better name service.

# I don't think it's simpler to have to understand when to use
# UDP and when to use TCP.  I don't think it's simpler to have to know
# whether my input or output parameters are larger than 8K.  

In a sense, you're correct; whenever you force someone to do things one
way, you save them the hassle of making a choice.   I'd rather have
choices and easy to use defaults, if I do not really care.

# I don't think
# it's easier to use when I can only pass one parameter as input thereby
# requiring me to manually write code to assign my "logical" input parameters
# into fields of a struct before making a remote call.  

This is a non-issue, at least in my mind.  Both Sun and Apollo allow you to 
pass as many arguments as you want, they use slightly different syntax, but 
it is no big deal.  We can argue about syntax forever, but why bother.

# I don't think it's easier to use when I have to remember when I do and when 
# I don't have to explicitly free storage that the stubs have malloc'd for 
# me under the covers.

Then you'll be happy to know that both Sun and Apollo will free storage
automatically for you.  (Look at the dealloc action for XDR.  I must admit
that I've never used this feature myself, but it looks like it does 
exactly what you want.

> Apollo makes it very difficult to use any interface
> language except NIDL.  Sun provides RPCGEN, but also makes it easy to
> roll your own interface language, if you want to.  Apollo makes it very 
> difficult to use any data representation except their's (NDR).  Sun makes
> it easy to replace their representation (XDR), if you want to.

# Sure.  And I don't like C, but since the 68000 instruction set is public,
# I can write a compiler for my own language.  What's the point?  Most
# people don't want to write compilers; they want to get their jobs done.

Using your compiler analogy: C is simple.  I understand how to write
a compiler for it.  Even though I never will, the fact that I could is 
very important.  It shows that the language is understandable.  The fact
that I could write an XDR compiler shows how easy and straight forward
the language is.  The fact that I can not for NDR shows the problem; that
NDR is compilcated.

# They [RPC users] want to be supplied with a competent set of tools; they 
# don't want to reinvent the world.

This is very true, and why I like Sun RPC.  It is a collection of useful
tools which you can combine to solve many problems.  Apollo's RPC is more
like a single tool, which also solves many problems.  But you can not tailor 
it to your particular problem (by choosing a transport layer, or a data 
encoding, or ...) like you can with Sun.

# As far as availability of source code, sure, Sun gives theirs away and
# we charge for ours.  I'll let the market decide whether what we have to
# offer is worth the price.  

# I'll happily let the world decide whether in fact
# for a broad class of applications Sun RPC is either simpler or easier
# to use.  

Besides source code availability, there is also "plain old" availablity.
Take a company which makes a product for IBM RT, DEC ULTIRX, Suns, Apollos,
and HPs, and wants to expand to VMS and IBM PCs.  Sun RPC is available on
all these platforms; Apollo's RPC is not.  (The ringer is the IBM RT, which
does not yet have Apollo RPC, as far as I can tell.)  The bottom line is
that every new UNIX machine coming out now has Sun RPC as part of its 
standard software bundle.  Most of them have Apollo RPC also, but the 
difference between all and most is important.  

Since everyone must use NFS (like it or not) everyone has Sun's RPC.
If you want to pay $25,000 you can get Apollo's RPC also.

Joshua Levy                          joshua@atherton.com  home:(415)968-3718
                        {decwrl|sun|hpda}!athertn!joshua  work:(408)734-9822 

joshua@athertn.Atherton.COM (Flame Bait) (12/06/89)

> = Maurice Sharp from sharp@ksi.cpsc.ucalgary.ca
>> = my eariler posting

Maurice ended with this note, which I think is imporant and often overlooked,
so I'm putting it in front:

> And just as a final note, RPC is NOT a good way of distributed processing
> anyway.  If they were smart, they would offer Message passing, or even
> Linda, or maybee all of them :-)

I look at RPC as a sort of temporary kludge, which should go away in three 
to ten years.  Right now programmers, compilers, designers, and everything
else is set up for sequential execution on one machine.  RPC alows us to 
have sequential execution on several machine, one at a time.  Current 
programmers, designers, testers, compilers, etc. are all very comfortable
with that, but it is a waste of hardware.  As people and programs become
more comfortable with distributed systems, things like Messages and Linda
should replace RPC.

>     Actually, Apollo NCS IS faster than the Suns.  I have the source,
>compiled NCS and NIDL on the Suns, and it WORKED first time.  NO bugs
>(unlike NFS for machine X).  Not only that, it took 3 Sun 4 file
>servers to equal the speed of 6 DN3000's for the Mandel demo.

I'm not comparing hardware or distributed file systems, just RPC protocols.
I didn't now anyone used the file system part of NCS.  I thought even
Apollo used Sun's NFS.  Your last sentence seems to say that Sun's are
twice as fast as Apollos, so I'm sure you did not mean it :-)

I assume that "faster" refers to installation time, not run time speed.
The current Apollo RPC system is 4 TIMES slower than Sun RPC system
for 8K packets, which happens to be the size my application uses.
That is using Sun/TCP (for reliablity as good or better than Apollo).
If I use Sun/UDP, it is 8 times faster than Apollo, but not as
reliable.

Note to Nat: I know that Apollo is coming out with version 1.5 "Real
Soon Now", but it is still in beta test and you can not buy it, so 
I'm still giving out speeds for version 1.1.  

> Nonsense.  The Apollo system is Object Oriented.  I would agree
> with a higher learning curve to master it.  However, it is MUCH more
> flexible and MUCH easier to use.  

I assume you are refering to Apollos distributed file system, not their
RPC system.  If you are refering to their RPC system you are wrong.
Object Oriented means three things: data encapsulation, inheritence,
and polymorphism.  Many OO people seem to think you need all three, but
I think that inheritence and one other qualifies a system as OO.

Apollo RPC has only data encapsulation, not inheritence or polymorphism.
By that definition Sun RPC is "Object Oriented" also.

I refer to this as "buzzword object oriented", you give your routines
object oriented names like (object$_method for example) and a consistent 
naming scheme, (UUIDs for example), and claim your system is "object
oriented".  I like Apollo's routine naming system.  UUIDs (with their
location broker) is one of Apollo's best features, much better
Sun's counter part, but they do make make the system object oriented.

>>Apollo's RPC is like PASCAL; Sun's RPC is like C.
>
>     NIDL lets you do Pascal OR C.  You are confusing the interface
>with the implementation.  

I'm sorry; I must not have been clear. I meant that PASCAL and Apollo's 
RPC were paternalistic ("father knows best"), while C and Sun's RPC were
not ("I'll do what I'm told, even if I do not like it").

I do not want to talk about interface langauge syntax (everyone has their 
own favorite), but I will say one sentence:  I thought that both NIDL's 
PASCAL syntax and its C syntax looked like PASCAL, and were almost identical.
This is personal taste, however, just look at example code from all three
to see which one you like better, RPCGEN, NIDL(C), or NIDL(PASCAL).

>> For example, Apollo's RPC forces you to use their beefed up UDP transport
>> protocol.  Sun's RPC allows you to use UDP or TCP as a transport protocols,
>> your choise.  

>     NCS does that because the machines are TRANSPARENT.  Try
>interfacing with an IBM using Sun.  Yech, write your own.  For NCS, if
>it exists on the machine, use NIDL and all is OK :-)

Which IBMs are you talking about?  I use NFS on an IBM RT everyday, and I'm
sure it is available for IBM PCs and mainframes as well.  I think your facts
are wrong or out of date, or maybe you are refering to on specific IBM
machine which is not supported (AS/400?).

Transparency is nice, but look at the price:  It forces Apollo RPC to use
the same transport protocol, even when the machine supports several.  So
on a UNIX machine I must use their protocol, even though my application 
could never run on an IBM mainframe, for example.  But Apollo RPC will not
support more protocols because the IBM mainframe can not.  

(By the way, I'm not convinced that Apollo forces one transport protocol
 for transparency.  I think you could have several transport protocols,
 and still have transparency.  The RPC system would use a default protocol
 if your requested protocol was not available to a given machine. Nat, 
 what's the word on this?)

Joshua Levy                          joshua@atherton.com  home:(415)968-3718
                        {decwrl|sun|hpda}!athertn!joshua  work:(408)734-9822 

mishkin@apollo.HP.COM (Nathaniel Mishkin) (12/06/89)

In article <2197@cs-spool.calgary.UUCP>, news@calgary.UUCP (Network News
Manager) writes:
> From: sharp@cpsc.ucalgary.ca (Maurice Sharp)
> >Apollo's networking system is like VMS's file system; Sun's
networking system 
> >is like UNIX's file system.
> 
>      More accurate to say Apollo is like Multics.

Ah, the truth will out!

>      NIDL lets you do Pascal OR C.  You are confusing the interface
> with the implementation.  Yes, the Apollo NCS is written in Pascal,
> but then so is the OS.  And not standard Pascal, but one with many C
> like extensions.  The Sun version is C to the core.

THE NCS IMPLEMENTATION IS WRITTEN IN PORTABLE C AND HAS BEEN MADE TO
RUN ON MACHINE FROM CRAYS TO PC'S.  I put that in all caps because I
just couldn't bear to have straightjacketed myself to the requirement
of maximum portability and then have people think otherwise.  Just 
want to make it clear.

NIDL supports two input languages:  one that looks like (ANSI) C and
one that looks like Pascal.

The non-Unix parts of DOMAIN/OS are written largely in Pascal.

>      Apollo now publishes all their stuff.  And they currently use 2
> protocols (TCP, and Domain) with others to follow.  Sun ???

Small correction:  NCS runs on top of UDP, not TCP.

derstad@CIM-VAX.HONEYWELL.COM ("DAVE ERSTAD") (12/07/89)

>  >     Actually, Apollo NCS IS faster than the Suns.  I have the source,
>  >compiled NCS and NIDL on the Suns, and it WORKED first time.  NO bugs
>  >(unlike NFS for machine X).  Not only that, it took 3 Sun 4 file
>  >servers to equal the speed of 6 DN3000's for the Mandel demo.
>  
>  I'm not comparing hardware or distributed file systems, just RPC protocols.
>  I didn't now anyone used the file system part of NCS.  I thought even
>  Apollo used Sun's NFS.  Your last sentence seems to say that Sun's are
>  twice as fast as Apollos, so I'm sure you did not mean it :-)

I'm sure Joshua meant exactly what he said.  The DN3000 is (was) an
entry level machine.  The equivalent can be purchased today for 
under $5000.  The Sun 4 is a much bigger, more expensive machine.

Dave Erstad
Honeywell SSEC
DERSTAD@cim-vax.honeywell.com

mishkin@apollo.HP.COM (Nathaniel Mishkin) (12/08/89)

In article <15101@joshua.athertn.Atherton.COM>,
joshua@athertn.Atherton.COM (Flame Bait) writes:
> % = Achille Petrilli
> # = Nat Mishkin
> > = Joshua Levy (me)
> 
> # I don't think
> # it's easier to use when I can only pass one parameter as input thereby
> # requiring me to manually write code to assign my "logical" input parameters
> # into fields of a struct before making a remote call.  
> 
> This is a non-issue, at least in my mind.  Both Sun and Apollo allow you to 
> pass as many arguments as you want, they use slightly different syntax, but 
> it is no big deal.  We can argue about syntax forever, but why bother.

OK, I'll grant you the right to like what you like, but I just want to
make it clear to all our readers what we're talking about.  Suppose I
want to define and call some procedure (say "proc1") that takes 3 input
params and returns 2 output params.  With Sun RPC you have to do (something
like):

    struct proc1s_ins {
        int in1;
        char in2;
        float in3;
    };         

    struct proc1s_outs {
        short out1;
        double out2;
    }

    proc1s_outs proc1(proc1s_ins);

You have to make up a struct for each unique combination of input and output
parameters used in your interface.

In NCS you just do:

    void proc1(
        int [in] in1,
        char [in] in2,
        float [in] in3,
        short [out] *out1,
        double [out] *out2
    );

Sure it's "just syntax", but I think it matters.

> Using your compiler analogy: C is simple.  I understand how to write
> a compiler for it.  Even though I never will, the fact that I could is 
> very important.  It shows that the language is understandable.  The fact
> that I could write an XDR compiler shows how easy and straight forward
> the language is.  The fact that I can not for NDR shows the problem; that
> NDR is compilcated.

First, you write a compiler for NIDL, not NDR.  Second, I guess I don't
understand what you're trying to say.  Simplicity is not the only metric
of the utility of a language.  The "language" (instruction set) of most
RISC systems is simple, that doesn't mean I want to program in it.

> Besides source code availability, there is also "plain old" availablity.
> Take a company which makes a product for IBM RT, DEC ULTIRX, Suns, Apollos,
> and HPs, and wants to expand to VMS and IBM PCs.  Sun RPC is available on
> all these platforms; Apollo's RPC is not.  (The ringer is the IBM RT, which
> does not yet have Apollo RPC, as far as I can tell.)  The bottom line is
> that every new UNIX machine coming out now has Sun RPC as part of its 
> standard software bundle.  Most of them have Apollo RPC also, but the 
> difference between all and most is important.  

You can get NCS in binary form from Apollo for Ultrix, Sun, Apollos,
VMS, and MS/DOS.  IBM has licensed NCS from Apollo.  We'll have to see
what they ship.  DEC and Apollo (HP) have announced that the two companies
are doing joint work on NCS.  I won't argue that Sun RPC is probably
being shipped in binary form by more vendors today than NCS.  But let's
recall that this discussion started as one of technical merits.  I can
only hope that the technical merits will eventually change the availability
situation.

> Since everyone must use NFS (like it or not) everyone has Sun's RPC.
> If you want to pay $25,000 you can get Apollo's RPC also.

The $25K number is completely out of context.  That's the price of the
NIDL compiler source.  The NCS runtime library source sells for something
like $1000.  (The source to both is available for essentially nothing
to universities.) I think the binary forms of both the compiler and the
runtime are around $500-1000 each.

                    -- Nat Mishkin
                       Hewlett Packard Company / Apollo Systems Division
                       mishkin@apollo.com

cricket@hp-ses.SDE.HP.COM (Jiminy Cricket) (12/08/89)

    % = Achille Petrilli
    # = Nat Mishkin
    > = Joshua Levy
    
    > Apollo makes it very difficult to use any data representation except 
    > their's (NDR).  Sun makes it easy to replace their representation (XDR), 
    > if you want to.
    
    # Sure.  And I don't like C, but since the 68000 instruction set is public,
    # I can write a compiler for my own language.  What's the point?  Most
    # people don't want to write compilers; they want to get their jobs done.
    
    Using your compiler analogy:  C is simple.  I understand how to write
    a compiler for it.  Even though I never will, the fact that I could is 
    very important.  It shows that the language is understandable.  The fact
    that I could write an XDR compiler shows how easy and straight forward
    the language is.  The fact that I can not for NDR shows the problem; that
    NDR is compilcated.
   
Whoa.  What?  I think you'd better take some time to qualify your terms.  To
say that because it's easy to write a compiler for a language makes it "easy
and straightforward" (for a programmer, anyway) is ludicrous.  To my mind, 
more abstraction brings with it both an "easier and [more] straighforward" 
programming paradigm, but often at the cost of greater compiler or interpreter 
complexity - just the reverse of your claim.  C is "simple"?  I beg to differ.  C, to many folks, is a nasty, grubby language.  Smalltalk, on the other hand, 
is based on a clear, consistent paradigm.  But try writing a Smalltalk 
compiler.

cricket

Hewlett-Packard Corporate			cricket@winnie.corp.hp.com
Palo Alto, California

cricket

joshua@athertn.Atherton.COM (Flame Bait) (12/09/89)

I said:    
| C is simple.  I understand how to write a compiler for it.  Even though I 
| never will, the fact that I could is very important.  It shows that the 
| language is understandable.

cricket@hp-ses.SDE.HP.COM (Jiminy Cricket) replies:
> Whoa.  What?  I think you'd better take some time to qualify your terms.  To
> say that because it's easy to write a compiler for a language makes it "easy
> and straightforward" (for a programmer, anyway) is ludicrous.  

I was describing a rule of thumb, not causality.  I'm sorry if it sounded 
that way.  I was thinking of ALGOL type languages.  Take these as examples:
C, PASCAL, ADA, ALGOL-68, PL/I.  Those languages that are easy to write
a compiler for are easy to understand, and the reverse is also true.

This rule tends to break down for non ALGOL type languages like LISP, PROLOG,
SMALLTALK, and database languages.  

> To my mind, more abstraction brings with it both an "easier and [more] 
> straighforward" programming paradigm, but often at the cost of greater 
> compiler or interpreter complexity 

This is a good rule of thumb also, but it is not perfect either. 

> C, to many folks, is a nasty, grubby language.  

Surely we can find something more interesting to talk about then "my
language is better than your language". 

Joshua Levy                          joshua@atherton.com  home:(415)968-3718
                        {decwrl|sun|hpda}!athertn!joshua  work:(408)734-9822 

cricket@hp-ses.SDE.HP.COM (Jiminy Cricket) (12/09/89)

    > To my mind, more abstraction brings with it both an "easier and [more] 
    > straighforward" programming paradigm, but often at the cost of greater 
    > compiler or interpreter complexity 
    
    This is a good rule of thumb also, but it is not perfect either. 
   
Granted.  You could always write a Byzantine compiler for a simple programming
language, or (better) find a powerful, straightforward paradigm which happened
to map directly to your CPU's instruction set.
 
    > C, to many folks, is a nasty, grubby language.  
    
    Surely we can find something more interesting to talk about then "my
    language is better than your language". 

Just meant to underscore the idea the C is not, by many standards, an "easy
and straightforward" language.  Besides, I'm not the right person to talk 
about "my language is better than your language" here (unless you wanna defend 
something else).  I program mostly in C.

cricket

perry@apollo.HP.COM (Jim Perry) (12/12/89)

>> C, to many folks, is a nasty, grubby language.  
>
>Surely we can find something more interesting to talk about then "my
>language is better than your language". 

This is the perfect capper for a nasty, grubby debate about "my RPC
system is better than your RPC system" :-)
-
Jim Perry   perry@apollo.hp.com    HP/Apollo, Chelmsford MA
This particularly rapid unintelligible patter 
isn't generally heard and if it is it doesn't matter.