[HN Gopher] Meme (Multitasking Extensible Messaging Environment)...
       ___________________________________________________________________
        
       Meme (Multitasking Extensible Messaging Environment): Multiuser
       Forth VR (1994)
        
       Author : DonHopkins
       Score  : 39 points
       Date   : 2020-02-16 17:58 UTC (5 hours ago)
        
 (HTM) web link (web.archive.org)
 (TXT) w3m dump (web.archive.org)
        
       | DonHopkins wrote:
       | Immersive Systems Inc:
       | 
       | https://web.archive.org/web/19990125100147/http://www.immers...
       | 
       | [I'll quote some of the page here for people with sensitive eyes]
       | 
       | >Meme tm: Real VR for the Net!
       | 
       | >"A brilliant idea..." -Andries van Dam
       | 
       | >Meme tm was designed from the ground up for multi-user networked
       | virtual worlds.
       | 
       | >Meme tm is a platform-independent standard for networked virtual
       | reality.
       | 
       | >High performance. Self-contained. FAST real-time 3D. Easily
       | customized for use with head-mounted displays, data gloves, and
       | other VR peripherals.
       | 
       | >Meme tm is designed so it can run on memory-limited machines
       | such as settop boxes and game consoles. Meme tm can also take
       | full advantage of the most advanced graphics hardware.
       | 
       | >"This is what VRML 3.0 hopes to be." -Tony Parisi, VRML co-
       | inventor
       | 
       | >Meme tm enables the construction of virtual worlds on the
       | Internet.
       | 
       | >Fully interactive. Inhabitable by many users. Quickly
       | constructed. Complex lifelike behavior. Easy to deploy.
       | 
       | >"Marc de Groot is a brilliant programmer." -Mark Pesce, VRML co-
       | inventor
       | 
       | >Highly efficient virtual machine used by NASA and the aerospace
       | industry. Will run on any system that has a 3D rendering engine.
       | Portable to platforms with primitive or non-existent operating
       | systems. Really works identically on all platforms. Runs in less
       | than 500 kilobytes of memory. Upwards of a million context
       | switches per second on current-generation processors.
       | 
       | >"How the hell did you do that?" -unknown attendee, Web
       | Interactive '96
       | 
       | [Click through for more praise for Meme, colorful images, and
       | awesome 1994 web site design!]
       | 
       | An Overview of Meme:
       | 
       | https://web.archive.org/web/19990504200616/http://www.immers...
       | 
       | >Meme TM--The Multitasking Extensible Messaging Environment Meme
       | TM is a software package for the development of virtual world
       | applications.
       | 
       | >Worlds built with Meme TM can be inhabited by multiple users who
       | are connected to a computer network. Meme TM virtual worlds
       | distinguish themselves by providing rich object behavior, unlike
       | menu-driven systems that offer a fixed set of choices.
       | 
       | >Meme TM is designed to be interoperable, that is, Meme TM worlds
       | and objects will behave identically on any computer running Meme
       | TM, irrespective of differences in the underlying hardware.
       | 
       | >Meme TM was conceived to enable the construction of a shared
       | virtual universe for everyone on the Internet.
       | 
       | >what kind of software package is Meme TM?
       | 
       | >Meme TM does not easily fit into a well-known category. It
       | incorporates elements of an operating system, an interactive
       | development environment, and a programming language.
       | 
       | >Meme TM is an operating system [...]
       | 
       | >Meme TM is an interactive development environment [...]
       | 
       | >Meme TM is a programming language [...]
       | 
       | Meme Development System for Windows Product Specification:
       | 
       | https://web.archive.org/web/19990422114909/http://www.immers...
       | 
       | >Required hardware: PC, 80386 or better with math coprocessor, 8
       | MB RAM, VGA, mouse, Ethernet or 10BaseT card or modem (for
       | network connection.)
       | 
       | Meme Demos:
       | 
       | https://web.archive.org/web/19990504193428/http://www.immers...
       | 
       | Meme Programming Guide:
       | 
       | https://web.archive.org/web/19980110220614/http://www.immers...
       | 
       | [It's totally programmable in FORTH! What more is there to say?
       | ;) So here's some code! ]
       | 
       | >Writing Meme TM code
       | 
       | >Writing code for use in a multi-user universe is an undertaking
       | that requires some sophistication. Often, the programmer wants to
       | try out an idea quickly, without concern for the demands of
       | multi-user distributed programming.
       | 
       | >For instance, let's assume the programmer would like to spin a
       | ball, all alone, in the virtual world. Meme TM makes it easy to
       | animate such a scene. The following text is the actual code that
       | implements a spinning ball, and is very similar to the spinning
       | ball demonstration on the demo page. The backslash character (\\)
       | is used to delimit a comment to end-of-line.
       | 
       | >The comments assume that each line is being typed by hand at
       | Meme TM's command prompt, with pauses between the lines to
       | observe the effect on the displayed scene.                   \
       | First we create an eyepoint with which we view the scene.
       | \ The eyepoint is initially positioned at the origin, looking
       | down the         \ negative Z axis (away from the user).
       | Eye: eyepoint              \ Let's put the eyepoint at +20 on the
       | Z axis.  This moves the camera         \ away from the origin,
       | towards the user.         10e0 eyepoint z!              \ We put
       | a ball in the scene.  It is created at the origin.         "
       | sphere.rwx" Shape: ball              \ Up until now, the display
       | has remained blank.  To draw a single frame         \ on the
       | display, we execute the meme "render".         render
       | \ There is now a ball on the display.  Rather than type "render"
       | each time         \ we want to draw a frame, let's start a
       | background task that redisplays the         \ scene continuously.
       | background r                    \ Define a new task called "r".
       | begin                   \ Start of a looping structure
       | render          \ Draw one frame                         pause
       | \ Switch to the next task                 again
       | \ Loop forever         ;                               \ End
       | definition              r wake                          \ Start
       | execution of the rendering task.              \ Let's define
       | another background task to make the ball spin.
       | background spin                 \ Define a new task called
       | "spin".                 begin                   \ Start of a
       | looping structure                         1e0 ball yaw+!  \
       | Increment the yaw angle by one degree
       | pause           \ Switch to the next task                 again
       | \ Loop forever         ;                               \ End
       | definition              spin wake                       \ Start
       | execution of the spinning task
        
       | DonHopkins wrote:
       | Interesting criticism from David Cake and Gavin Bell. Fortunately
       | now we benefit from nice IDEs and other tools for editing popular
       | programming languages (but none I know of for FORTH or
       | PostScript, but there are lots of applications that edit or write
       | out JavaScript and JSON and WebAssembly, even built into every
       | browser ;).
       | 
       | Before JavaScript was released on December 4, 1995, there
       | actually was some disagreement about not just about which
       | language to use, but whether a browser should include a Turing-
       | complete programming language at all. Sun was pushing TCL as a
       | contender, then RMS issued his fatwa against it, and Sun switched
       | over to pushing Java (not because of RMS though ;).
       | 
       | http://1997.webhistory.org/www.lists/www-vrml.1994/0268.html
       | From: "Gavin Bell" <%20(fwd)"gavin@krypton.engr.sgi.com>
       | Date: Fri, 24 Jun 1994 09:41:24 -0700         To: %20(fwd)"www-
       | vrml@wired.com         Subject: Re: Meme              >Marc de
       | Groot wrote:         >>Meme has certain features that I would
       | want to see in any specification for         >>VRML. In
       | particular, Meme allows the world designer to specify platform-
       | >>independent executable code for the object's behavior. Without
       | this         >>ability, objects have relatively rigid,
       | uninteresting behavior.              David Cake replied:
       | > Basically VRML browsers need to be basically include much of
       | the function         > of a simple interpretive language, and
       | hopefully both a basically object         > oriented one
       | (personal preference, I guess), and one that is not too         >
       | verbose (for efficient use of low bandwidth). In this it would
       | function         > like most existing cross platform packages of
       | various kinds (many database         > packages, for example).
       | [Gavin Bell replied:]              One of the things I really
       | like about HTML is that it is reasonably         easy to write an
       | editor that allows you to read in and then modify any
       | HTML file.              One of the things I really hate about
       | PostScript is that is is really         hard to write an editor
       | that can edit an arbitrary PostScript file.         Meme strikes
       | me as more PostScript-like than HTML-like; it looks like
       | it would be easy to write applications that wrote out Meme files,
       | but         it looks very difficult to write applications that
       | provide a         user-friendly interface for editing Meme files.
        
         | DonHopkins wrote:
         | "Why you should not use Tcl": Richard Stallman kicks off The
         | Great TCL War.
         | 
         | https://vanderburg.org/old_pages/Tcl/war/
         | 
         | https://vanderburg.org/old_pages/Tcl/war/0000.html
         | 
         | Richard Stallman (rms@gnu.ai.mit.edu)
         | 
         | Fri, 23 Sep 94 19:14:52 -0400
         | 
         | Why you should not use Tcl. Richard Stallman, GNU Project.
         | 
         | As interest builds in extensible application programs and
         | tools, and some programmers are tempted to use Tcl, we should
         | not forget the lessons learned from the first widely used
         | extensible text editor--Emacs.
         | 
         | The principal lesson of Emacs is that a language for extensions
         | should not be a mere "extension language". It should be a real
         | programming language, designed for writing and maintaining
         | substantial programs. Because people will want to do that!
         | 
         | Extensions are often large, complex programs in their own
         | right, and the people who write them deserve the same
         | facilities that other programmers rely on.
         | 
         | The first Emacs used a string-processing language, TECO, which
         | was inadequate. We made it serve, but it kept getting in our
         | way. It made maintenance harder, and it made extensions harder
         | to write. Later Emacs implementations have used more powerful
         | languages because implementors learned from the problems of the
         | first one.
         | 
         | Another lesson from Emacs is that the way to make sure an
         | extension facility is really flexible is to use it to write a
         | large portion of the ordinary released system. If you try to do
         | that with Tcl, you will encounter its limitations.
         | 
         | Tcl was not designed to be a serious programming language. It
         | was designed to be a "scripting language", on the assumption
         | that a "scripting language" need not try to be a real
         | programming language. So Tcl doesn't have the capabilities of
         | one. It lacks arrays; it lacks structures from which you can
         | make linked lists. It fakes having numbers, which works, but
         | has to be slow. Tcl is ok for writing small programs, but when
         | you push it beyond that, it becomes insufficient.
         | 
         | Tcl has a peculiar syntax that appeals to hackers because of
         | its simplicity. But Tcl syntax seems strange to most users. If
         | Tcl does become the "standard scripting language", users will
         | curse it for years--the way people curse Fortran, MSDOS, Unix
         | shell syntax, and other de facto standards they feel stuck
         | with.
         | 
         | For these reasons, the GNU project is not going to use Tcl in
         | GNU software. Instead we want to provide two languages, similar
         | in semantics but with different syntaxes. One will be Lisp-
         | like, and one will have a more traditional algebraic syntax.
         | Both will provide useful data types such as structures and
         | arrays. The former will provide a simple syntax that hackers
         | like; the latter will offer non-hackers a syntax that they are
         | more comfortable with.
         | 
         | Some people plan to use Tcl because they want to use Tk.
         | Thankfully, it is possible to use Tk without Tcl. A Scheme
         | interpreter called STk is already available. Please, if you
         | want to use Tk, use it with STk, not with Tcl. One place to get
         | STk is from ftp.cs.indiana.edu:pub/scheme-
         | repository/imp/STk-2.1.tar.Z
        
           | kick wrote:
           | Stallman was really seeing with clarity back then. It's kind
           | of crazy that he doesn't get credit for the things he _did_
           | unambiguously get right.
        
             | nothrabannosir wrote:
             | He got immortalised as a Cassandra in XKCD, that's not
             | nothing :)
             | 
             | https://www.xkcd.com/743/
             | 
             | (at least I assume that's RMS?)
        
             | hjek wrote:
             | When considering how much of the web currently depends on
             | non-free JavaScript, perhaps in hindsight it would have
             | been better in terms of freedom to have gone with a less
             | capable language?
        
             | DonHopkins wrote:
             | Here's some (but not all) of the back-story behind the
             | infamous TCL religious war waged in RMS's name.
             | 
             | TIL Guile was named after "Guy L." (Steele)!
             | 
             | https://web.archive.org/web/20110102015130/http://basiscraf
             | t...
             | 
             | >My Scheme library was initially called "Gel" until we
             | discovered trademark issues. Then we renamed the project
             | Guile at the suggestion of one of my co-workers because
             | "guile" and "scheme" are close concepts and because "guile"
             | sounds a bit like "Guy L.").
             | 
             | Also it was Sun, not RMS, who actually started the "TCL
             | Wars" -- RMS was just responding to them:
             | 
             | >Mr. Ousterhout was hired by Sun (later he would spin off a
             | Tcl-centric start-up). The R&D; team there developed a
             | vision:
             | 
             | >Java would be the heavy-lifting extension language for
             | browsers. The earliest notions of the "browser as platform"
             | and "browser as Microsoft-killer" date back to this time.
             | Tcl, Sun announced, was to become the "ubiquitous scripting
             | language of the Internet". Yes, they really pimped that
             | vision for a while. And it was "the buzz" in the Valley. It
             | was that pronouncement from the then-intimidating Sun that
             | led to the Tcl wars.
        
           | DonHopkins wrote:
           | https://news.ycombinator.com/item?id=12027092
           | 
           | Around the time leading up to the TCL war, Lua was peacefully
           | and quietly born in a manger at the Pontifical Catholic
           | University of Rio de Janeiro, Brazil:
           | 
           | "In 1993, the only real contender was Tcl, which had been
           | explicitly designed to be embedded into applications.
           | However, Tcl had unfamiliar syntax, did not offer good
           | support for data description, and ran only on Unix platforms.
           | We did not consider LISP or Scheme because of their
           | unfriendly syntax. Python was still in its infancy. In the
           | free, do-it-yourself atmosphere that then reigned in Tecgraf,
           | it was quite natural that we should try to develop our own
           | scripting language ... Because many potential users of the
           | language were not professional programmers, the language
           | should avoid cryptic syntax and semantics. The implementation
           | of the new language should be highly portable, because
           | Tecgraf's clients had a very diverse collection of computer
           | platforms. Finally, since we expected that other Tecgraf
           | products would also need to embed a scripting language, the
           | new language should follow the example of SOL and be provided
           | as a library with a C API."
           | 
           | http://www.lua.org/doc/hopl.pdf
        
       | DonHopkins wrote:
       | I forgot to mention: this was from 1994!
       | 
       | And for reference: This was more than a year before JavaScript
       | was released on December 4, 1995. And a few months before RMS
       | started The Great TCL War on September 23, 1994. The title of
       | Official Scripting Language of the Web was still up for grabs.
       | 
       | https://news.ycombinator.com/item?id=12025218
       | 
       | https://vanderburg.org/old_pages/Tcl/war/
       | 
       | I dug up this treasure from last century by looking up urls from
       | old saved favorite emails with the Internet Archive:
       | 
       | Marc de Groot made a brilliant multi-user networked VR system
       | programmed in multitasking FORTH, called "MEME"!
       | 
       | Here's his announcement that Brian Behlendorf forwarded to the
       | www-vrml mailing list:
       | 
       | http://1997.webhistory.org/www.lists/www-vrml.1994/0255.html
       | From: marc@kg6kf.ampr.org (Marc de Groot - KG6KF)
       | Subject: Meme         To: www-vrml@wired.com         Date: Wed,
       | 22 Jun 94 11:26:25 PDT              Hello. It's about time I
       | introduced myself. I'm Marc de Groot, the founder         of
       | Immersive Systems, Inc. in San Francisco.              I started
       | ISI to sell Meme, which is a virtual world development
       | system. Meme is intended to create a single shared virtual
       | universe on         the net.              ISI released the alpha
       | version of Meme last month.              Meme stands for
       | Multitasking Extensible Messaging Environment. Meme started
       | life as a programming language. Some "OS-level services" were
       | added to the         system, and finally the messaging mechanism
       | was added to allow virtual objects         to communicate. At
       | this point, Meme is evolving into a communications
       | protocol.              I heartily agree with the statements that
       | have been made on this mailing         list about net software:
       | make something proprietary, and the net hackers will
       | write a free replacement which everyone will use.              I
       | intended to make the protocol public later this year, after ISI
       | had fulfilled         higher priority obligations, however the
       | establishment of this list has         prompted me to put some
       | preliminary information on the net at this time.         I have
       | put up a WWW page for Immersive Systems. The URL is
       | http://remarque.berkeley.edu/~marc/home.html              >From
       | the home page, you can read an overview of Meme, look at the
       | programming         manual, and download a demo world to try on
       | your own PC.              Meme has certain features that I would
       | want to see in any specification for         VRML. In particular,
       | Meme allows the world designer to specify platform-
       | independent executable code for the object's behavior. Without
       | this         ability, objects have relatively rigid,
       | uninteresting behavior.              That platform-independent
       | code needs to load over the net with a minimum         of
       | overhead, and needs to execute efficiently. Meme satisfies both
       | of         these requirements.              That completes my
       | thoughts for now. I will post in the future, as time
       | permits.              Marc de Groot         Immersive Systems,
       | Inc.         immersive@kg6kf.ampr.org
        
       ___________________________________________________________________
       (page generated 2020-02-16 23:00 UTC)