[self-interest] Lessons learnt from the Self archive

David Ungar ungar at me.com
Thu Jun 16 04:38:17 UTC 2016

Wow. I am amazing, impressed, and touched by your interest and time spent looking at the history of Self.

You may enjoy this story:

A few years back (or maybe a bit further back), we were giving a talk about Self—I think it was Randy and I—and someone asked us a question about how hard it was to find out about Self because a Google search would return so many irrelevant hits. Why didn’t we pick a better name? we were asked. The answer was that when we named Self, Google didn’t exist. HTML didn’t exist. (According to the internet, Berners-Lee spec’ed HTML in 1990 & we invented the language in ’86.)

(Randy, if you’re out there reading this, do you recall this event (the question, I mean, not the invention of the language)?

Thank you, everyone, for your interest and affection for Self.

- David

> On Jun 14, 2016, at 11:51 PM, Bystroushaak bystrousak at kitakitsune.org [self-interest] <self-interest at yahoogroups.com> wrote:
> [Repost of the https://blog.selflanguage.org/2016/06/15/lessons-learnt-from-the-self-archive/ <https://blog.selflanguage.org/2016/06/15/lessons-learnt-from-the-self-archive/>]
> I’ve spent 26 days reading 26 years of messages from the Self mail conference archive <x-msg://68/2016/06/09/self-mail-conference-in-mbox/>. Here is what I’ve learned. Please note, that everything is highly subjective and may be even wrong.
> Interesting messages
> If you don’t want to go through all 4334 messages of whole archive, you may read just this dataset, which contains only 295 messages I’ve found interesting enough to save into separate directory. I’ve saved each message because it answered some of the questions I had, or because it was marking important milestone in Self development.
> https://github.com/Bystroushaak/self_mbox/raw/master/datasets/self-interesting.mbox.lzma <https://github.com/Bystroushaak/self_mbox/raw/master/datasets/self-interesting.mbox.lzma>
> List of alternative languages / interpreters
> When I’ve got to year 2004, I’ve realized it may be valuable also to store list of alternative interpreters and languages, which were sent to the conference, so I’ve began to collect them too. When I finished the reading, I’ve spent an hour by scanning the 1990-2004 timeframe, but I’ve maybe skipped something.
> https://github.com/Bystroushaak/self_mbox/raw/master/datasets/self-alts.mbox.lzma <https://github.com/Bystroushaak/self_mbox/raw/master/datasets/self-alts.mbox.lzma>
> Just to give you the idea, here is the reduced list of topics (there is more in the archive):
> tinySelf progress report
> JSelf Home Page
> Announcing OpenSelf
> A Self _ BETA Language Hybrid Project
> premature announcement: SELFISH
> Brain language
> SELF for VisualWorks 5i
> dSelf
> New release of Cel
> Self_R not started yet
> Io
> Zero, a programming system
> [ANN] Slate 0.3 Released!
> Re: Self for Squeak
> Klein open-source release
> Self-style outliners for Javascript
> Phos
> Anyone have a copy of Kevo?
> Re: Distributed Objects
> Re: UnitTests
> AmbientTalk
> Self in Javascript progress
> Re: Self in Javascript progress
> Re: goals (was: dynamic deoptimization)
> Pooi: A prototypical object-oriented interpreter
> Avacado: JavaScript trying to be more like Self
> BOS1.2 release — play it again, sam
> Smalltalk interpreter of Self
> Everything is dead, or dying
> Self is small project maintained, discussed and used by only handful of people over two and half decades (one generation). It is slow game, and changes may take years (new releases), or decades (porting to new systems). This leads to massive link rot <https://en.wikipedia.org/wiki/Link_rot>.
> It may not be evident if you are just participating from time to time, but when you look into archive, it is a clear trend. Only a few people were able to keep attention and interest over the decades and maintain resources they created. There were a lot of those who lost interest or just didn’t have the time and their resources are dead.
> Beginning of the Self conference archive is in 1990, which was a few years before the HTML and HTTP was invented.
> I have no idea, how people organized work and thoughts in groups at that time (text files via FTP maybe? telephone and paper notepads?), but it is either converted to a few existing HTML resources, or (most likely) dead. You won’t see the design decisions, discussions or thoughts from that time.
> Then HTML and HTTP came. People were excited about this new protocol:
> From urs at cs.stanford.edu <mailto:urs at cs.stanford.edu> Sat, 19 Mar 1994 11:53:23 PST:
> Thanks mostly to Bay-Wie Chang, Self now has a Mosaic home page,
>     http://self.stanford.edu <http://self.stanford.edu/>
> All of our material continues to be available via ftp, but the Mosaic
> interface is definitively friendlier (e.g., it has an online
> bibliography and paper abstracts).
> Enjoy!
> -Urs
> It was definitely an improvement. But idea to create articles and webpages about Self and put them on your web lead to massive resource fragmentation. I am not criticizing, merely pointing to a fact, that almost every link from that time is dead, because it was not maintained in long-term and that whole situation is actually unmaintainable by one person, even if that person really wanted to maintain it. That url in the email is by the way – dead <https://web.archive.org/web/*/http://self.stanford.edu>.
> When you think about it, almost every time anyone counted on third-party service, it didn’t pay off. From that point of view, everything is dying, we just don’t see it, because it still exists. But for the future newcomer to Self, it is already dead.
> If you think in the time-frame of decades, all providers of services will end, often without replacement. Look at geocities for example. Once it was hosting for hundreds of thousands of webs. Now it is dead. Sourceforge killed itself by adding adware to user’s packages, and Yahoo is slowly dying and it is only matter of time until someone will buy it and shut down most of its services for good, because it is not profitable. University pages are chapter for itself, because almost all of them are dead soon after the person who created them leaves the university.
> Even if the webarchive or other web cache archives the original, this is not the long time solution. There are various copyright attack in place right now, which may cause such services to close.
> This may not look like a big issue, but for newcomers, this means that half of the valuable resources is not available.
> If you look at what survives, it is almost always only files which were downloadable and thus shared by large number of people. In this sense, git is the best solution, because it allows everyone to clone the repository and synchronize it with others, even if the original resource is gone.
> There is two possible options on how to overcome this problem:
> distributed standalone information resources shared by everyone
> maintained centralized group resources
> If you create your own webpages, make them easily downloadable and sharable. Otherwise, they will be dead soon (5-20 years from now). Other option is to write articles in postscript / PDF and generally standalone files, which will be distributed to large number of people.
> Second option is to make central repository of knowledge consciously maintained and hosted over the years by Self community at one place. Preferably in the form of Wiki. I will get back to this later.
> Honorable mentions
> FTP that refused to die
> Date: Fri, 25 Aug 1995 12:45:08 +0200
> From: rainer at physik3.gwdg.de <mailto:rainer at physik3.gwdg.de> (Rainer Blome)
> To: self-interest at self.sunlabs.com <mailto:self-interest at self.sunlabs.com>
> Subject: non-official ftp site in germany (solaris only)
> The link speed to Sun was really not acceptable when I tried it, so I was
> glad to be able to get Self from Manchester.  Seems that I have been lucky
> now that the site is down.  The FTP admin of our local computing centre was
> so kind as to put Self 4.0 on his server.  It is not official and may
> vanish any time, but they have lots of disk space and I suppose it won't.
> Still, please don't use this site unless it is a lot faster than your link
> to the USA.
> Since the stuff is the one that I used to install Self here,
> it doesn't look exactly like the original (all files have the Self-4.0
> prefix) and it is not complete (I only installed the solaris version).
> /ftp.gwdg.de <http://ftp.gwdg.de/>:/pub/languages/self:
>   total 12110
>   -rw-rw-r--   1 emoenke         1475 Jul 26 17:05 Self-4.0.Install
>   -rw-rw-r--   1 emoenke         1933 Jul 26 17:04 Self-4.0.LICENSE
>   -rw-rw-r--   1 emoenke         1087 Jul 26 17:05 Self-4.0.README
>   -rw-rw-r--   1 emoenke        71809 Jul 26 17:05 Self-4.0.readThisFirst.ps
>   -rw-rw-r--   1 emoenke     12320062 Jul 26 14:16 Self-4.0.solaris.tar.gz
> Also, the tar file is gzipped instead of compressed.  Not having patched
> the install script, it won't work anymore (unless you linked zcat to
> gzcat), but what Install actually did was just a single line anyway:
> gzip -cd Self-4.0.solaris.tar.gz | tar -xfpB -
> Greetings, Rainer
> The FTP is still there, but sadly the Self directory isn’t.
> merlintec
> Jecel Mattos de Assumpcao Jr <http://www.merlintec.com/lsi/jecel.html> is my new personal hero.
> Not only that http://www.merlintec.com/ <http://www.merlintec.com/> still works and didn’t lose any of its contents, also his messages on various topics in the conference were really great and it was pleasure to read it.
> Self is really complex
> There is 114 821 cloc <https://github.com/AlDanial/cloc> lines of C++ code (counted without comments, blank lines and so on). There is two kind of compilers (NIC, SIC), assembler and other platform-dependent stuff. Almost none of it is documented outside the code itself.
> This is bad. Really bad. I did a little bit of C++ back in high school, but I can’t really imagine going through all this code and trying to make sense of it.
> It is extremely hard to get an idea what Self really is, what parts is it made from. Best thing documenting how Self works is this schema from the handbook:
> <Mail Attachment.txt>
> We need pictures like this that will document components of the VM. Schematic blueprints for what Self is and how it approximately works. Sometimes, pictures says more than a thousand words.
> If you don’t think that this is serious, here is a list of reasons:
> It is hard for beginners to even get the idea what Self is. We know, that it is a language, but it is also virtual machine, bunch of compilers, memory managers and what not. It is almost like small operating system.
> It is hard for anyone who wants to contribute to get an idea where to do the change.
> It is hard for anyone who wants to port the Self to another architecture / OS.
> It leads to fragmentation. People rather create own forks, or whole new languages rather than to try to make sense in so much C++ code.
> Linux
> An example of the complexity of Self was its porting to Linux. First message about porting to Linux was probably this:
> From dirkst at POOL.informatik.rwth-aachen.de <mailto:dirkst at POOL.informatik.rwth-aachen.de> Tue, 18 Aug 92 11:04:58 PDT
> From: dirkst at POOL.informatik.rwth-aachen.de <mailto:dirkst at POOL.informatik.rwth-aachen.de> (Dirk Steinberg)
> Date: Tue, 18 Aug 92 11:04:58 PDT
> Subject: 
> Message-ID: <9208181757.AA24531 at messua.informatik.rwth-aachen.de> <mailto:9208181757.AA24531 at messua.informatik.rwth-aachen.de>
> MIME-Version: 1.0
> Content-Type: text/plain
> Hi,
> I have recently read about Self and ftp'd some papers from self.stanford.edu <http://self.stanford.edu/>,
> I even got the sun4 version of Self 2.0 and played around with it for a few
> minutes. Otherwise, I have no experience with Self whatsoever, but from what
> I read I am kand of enthusiastic.
> My question: Is anyone porting Self to some other platform, maybe even to the
> 386? I have Linux running on a 486/33 w/ 16 Meg RAM and 500 Meg HD, which should
> be a workable system for Self; I have gcc-2.2.2 and libg++-2.2, so it should be 
> possible to compile the virtual machine (judging from the README's).
> BUT: I have the feeling that the compiler really generates native SPARC code and
> so one would have to write a completely new backend and assembler for the 386.
> I guess that would be a *major* project!?? Is the compiler/assembler written in Self
> or C++? If Self is tied to the SPARC achitecure and inherently non=portable, then
> that would nagatively influence the impact that this exciting software could have.
> How about using the gcc backend?
> Thanks for any info,
> Dirk
> Dirk Steinberg
> dirkst at pool.informatik.rwth-aachen.de <mailto:dirkst at pool.informatik.rwth-aachen.de>
> This is from 1992. First (not fully ported) Self for Linux came in 1999, by Gordon Cichon, but that wasn’t really much usable, from what I’ve read. Proper support with GUI and everything working nicely took several more years.
> The bus factor is low
> As the wikipedia <https://en.wikipedia.org/wiki/Bus_factor> says:
> .. the bus factor is a measurement of the concentration of information in individual team members. It .. connotes the number of team members that can be unexpectedly lost from a project (“hit by a bus”, as it were) before the project collapses due to lack of knowledgeable or competent personnel.
> The bus factor of Self is incredibly low. From my own estimate based on reading the archive, I would say it is 5, maybe 7 if you want to be optimistic, probably 3 if you want to be pessimistic.
> This is not just bad, because it threatens existence of Self alone, but mostly because it also means that there is extremely low number of people, who reallyunderstand Self, and almost no documentation, which can train new experts.
> Wikipedia offers following solution to increase the bus factor:
> Several ways to increase the bus factor (thus making the project more resilient) have been proposed:
> Reduce complexity
> Document all processes and keep that documentation up-to-date
> Encourage cross-training.
> I don’t think, that there is much space for reducing the complexity, but second and third point may be solvable by community Wiki.
> YWAM KnowledgeBase <http://www.ywamkb.net/kb/Bus-Factor_-_Avoid_to_depend_on_a_single_person> also mentions two more interesting points:
> maintaining documentation about how the corresponding website is working
> forum for learning from each other
> Again, both points may be solved by community Wiki. Especially the second point is really important.
> Collected resources
> I’ve collected following links, which are not yet dead, or were archived by webarchive. I didn’t yet have time to go over them, so I am sharing them as I added them to my todolist:
> http://kleinvm.sourceforge.net/ <http://kleinvm.sourceforge.net/>
> https://github.com/aausch/klein <https://github.com/aausch/klein>
> http://adamspitz.github.io/Avocado/ <http://adamspitz.github.io/Avocado/>
> https://github.com/jmoenig/morphic.js <https://github.com/jmoenig/morphic.js>
> http://lively-kernel.org/ <http://lively-kernel.org/>
> http://web.media.mit.edu/~lieber/Lieberary/Softviz/CACM-Debugging/Kansas/Kansas.html <http://web.media.mit.edu/%7Elieber/Lieberary/Softviz/CACM-Debugging/Kansas/Kansas.html>
> http://www.self-support.com/ <http://www.self-support.com/>
> http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Self_(programming_language).html <http://www.princeton.edu/%7Eachaney/tmve/wiki100k/docs/Self_%28programming_language%29.html>
> https://web.archive.org/web/20010813120828/http://www.mri.mq.edu.au/~kjx/tgim.html <https://web.archive.org/web/20010813120828/http://www.mri.mq.edu.au/%7Ekjx/tgim.html>
> http://merlintec.com/swiki/Self/2.html <http://merlintec.com/swiki/Self/2.html>
> http://merlintec.com/old-self-interest/threads.html <http://merlintec.com/old-self-interest/threads.html>
> https://web.archive.org/web/20050121084338/http://www.lsi.usp.br/~jecel/merlin.html <https://web.archive.org/web/20050121084338/http://www.lsi.usp.br/%7Ejecel/merlin.html>
> http://www.merlintec.com/lsi/merlin.html <http://www.merlintec.com/lsi/merlin.html>
> https://web.archive.org/web/19980123025609/http://www.cs.unm.edu/pad++/begin.html <https://web.archive.org/web/19980123025609/http://www.cs.unm.edu/pad++/begin.html>
> https://web.archive.org/web/20040607063757/http://linus.socs.uts.edu.au/~cotar/proto/programme.html <https://web.archive.org/web/20040607063757/http://linus.socs.uts.edu.au/%7Ecotar/proto/programme.html>
> https://web.archive.org/web/20080307022735/http://www.consultar.com/JSelf/ <https://web.archive.org/web/20080307022735/http://www.consultar.com/JSelf/>
> This file, when read into the initial Self system (empty world) creates just the objects needed to run a simple program that prints a table of factorials up to 49! and then stops.  <https://web.archive.org/web/20040312232625/http://www.lsi.usp.br/%7Ejecel/release/fac.self>https://web.archive.org/web/20040312232625/http://www.lsi.usp.br/~jecel/release/fac.self <https://web.archive.org/web/20040312232625/http://www.lsi.usp.br/~jecel/release/fac.self>
> https://web.archive.org/web/19991006225113/http://www.consultar.com/JSelf/Links.htm <https://web.archive.org/web/19991006225113/http://www.consultar.com/JSelf/Links.htm>
> https://web.archive.org/web/20001109105100/http://www.consultar.com/JSelf/ <https://web.archive.org/web/20001109105100/http://www.consultar.com/JSelf/>
> http://www.linuxsupportline.com/~openself/ <http://www.linuxsupportline.com/%7Eopenself/>
> https://web.archive.org/web/20010405022406/http://openself.seul.org/ <https://web.archive.org/web/20010405022406/http://openself.seul.org/>
> https://web.archive.org/web/20070221212847/http://www.lsi.usp.br/~jecel/tut1.html <https://web.archive.org/web/20070221212847/http://www.lsi.usp.br/%7Ejecel/tut1.html>
> https://web.archive.org/web/20000815211509/http://www.research.microsoft.com/ip/ <https://web.archive.org/web/20000815211509/http://www.research.microsoft.com/ip/>
> https://web.archive.org/web/20080225110457/http://www.lsi.usp.br/~jecel/persist.html <https://web.archive.org/web/20080225110457/http://www.lsi.usp.br/%7Ejecel/persist.html>
> https://web.archive.org/web/20000615190052/http://www.squeak.org/oopsla99_vmworkshop/jecel.txt <https://web.archive.org/web/20000615190052/http://www.squeak.org/oopsla99_vmworkshop/jecel.txt>
> https://web.archive.org/web/20000817004328/http://www.squeak.org/oopsla99_vmworkshop/ <https://web.archive.org/web/20000817004328/http://www.squeak.org/oopsla99_vmworkshop/>
> http://www.merlintec.com/selfvmdoc/ <http://www.merlintec.com/selfvmdoc/>
> https://sourceforge.net/projects/selfish/ <https://sourceforge.net/projects/selfish/>
> http://www.3plus4.de/self/ <http://www.3plus4.de/self/>
> https://web.archive.org/web/20000504145352/http://www.sun.com/research/self/papers/craig-thesis.html <https://web.archive.org/web/20000504145352/http://www.sun.com/research/self/papers/craig-thesis.html>
> https://web.archive.org/web/20010605131725/http://www.sun.com/research/self/papers/urs-thesis.html <https://web.archive.org/web/20010605131725/http://www.sun.com/research/self/papers/urs-thesis.html>
> http://www.ag-nbi.de/research/dself/ <http://www.ag-nbi.de/research/dself/>
> http://selfguru.sourceforge.net/ <http://selfguru.sourceforge.net/>
> http://ftp.squeak.org/docs/OOPSLA.Squeak.html <http://ftp.squeak.org/docs/OOPSLA.Squeak.html>
> https://web.archive.org/web/20150220064600/http://www.comtalk.net/Squeak/95 <https://web.archive.org/web/20150220064600/http://www.comtalk.net/Squeak/95>
> http://merlintec.com/swiki/Self/1.html <http://merlintec.com/swiki/Self/1.html>
> http://stefan-marr.de/tag/roarvm/ <http://stefan-marr.de/tag/roarvm/>
> http://merlintec.com/lsi/tiny.html <http://merlintec.com/lsi/tiny.html>
> https://dl.dropboxusercontent.com/u/1803213/CS294/8%20Self%20VM%20internals.pdf <https://dl.dropboxusercontent.com/u/1803213/CS294/8%20Self%20VM%20internals.pdf>
> https://www.cs.ucsb.edu/~urs/oocsb/self/index.html <https://www.cs.ucsb.edu/%7Eurs/oocsb/self/index.html>
> https://liveprogramming.github.io/2013/papers/avocado.pdf <https://liveprogramming.github.io/2013/papers/avocado.pdf>
> http://c2.com/cgi/wiki?SelfLanguage <http://c2.com/cgi/wiki?SelfLanguage>
> https://news.ycombinator.com/item?id=7047953 <https://news.ycombinator.com/item?id=7047953>
> http://stackoverflow.com/questions/tagged/selflanguage <http://stackoverflow.com/questions/tagged/selflanguage>
> https://www.infoq.com/presentations/oop-language-context <https://www.infoq.com/presentations/oop-language-context>
> http://xanadu.com/zigzag/ <http://xanadu.com/zigzag/>
> http://www.nongnu.org/gzz/gi/gi.html <http://www.nongnu.org/gzz/gi/gi.html>
> http://www.merlintec.com/download/ <http://www.merlintec.com/download/>
> https://learnxinyminutes.com/docs/self/ <https://learnxinyminutes.com/docs/self/>
> http://rosettacode.org/wiki/Category:Self <http://rosettacode.org/wiki/Category:Self>
> https://vimeo.com/118826521 <https://vimeo.com/118826521>
> http://homepages.ecs.vuw.ac.nz/~servetto/Fool2014/FundationForObjectAspectAndContextOrientedProgramming <http://homepages.ecs.vuw.ac.nz/%7Eservetto/Fool2014/FundationForObjectAspectAndContextOrientedProgramming>
> https://www.researchgate.net/publication/285512303_Persistence_schema_evolution_and_performance_in_the_container-based_model <https://www.researchgate.net/publication/285512303_Persistence_schema_evolution_and_performance_in_the_container-based_model>
> http://rosettacode.org/wiki/Category:Self <http://rosettacode.org/wiki/Category:Self>
> http://www.gliebe.de/self/ <http://www.gliebe.de/self/>
> https://web.archive.org/web/20070205114801/http://www.lsi.usp.br/~jecel/tiny.html <https://web.archive.org/web/20070205114801/http://www.lsi.usp.br/%7Ejecel/tiny.html> tinyRick tinySelf
> http://www.wolczko.com/CS294/ <http://www.wolczko.com/CS294/>
> Next blog will contain some improvement proposals.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.selflanguage.org/pipermail/self-interest/attachments/20160615/6f1d18a1/attachment.html>

More information about the Self-interest mailing list