Re: etoys implementation

2008-06-25 Thread John Gilmore
My only experience with Squeak/eToys up til now was trying it on the
OLPC as a naive user.  Poking at objects on the screen with the
handles, since that was the only tutorial offered.  The way the darn
thing saved its workspace in the friggin Journal whenever you tried
to quit it reminded me of ancient APL interpreters that contained a
jumble of code and data, and Holger's explanation of why it's
non-free reinforced that.  Of course I have no idea how it's
actually implemented inside.  (There's apparently no tarball that I
could unpack and examine to find out, either; I'd have to learn how to
run their GUI just to look at their implementation.)

It took some searching, but I found a paper on the design of the guts
of Squeak:

  ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html

I don't know if it is still good documentation for the current
implementation, but it gives some idea of how Squeak was originally
built.  The interpreter was written and maintained in a subset of
high-level Squeak (smalltalk) but there's also a translator that
translates that interpreter into C, which is then compiled to produce
a binary interpreter.  Whether it does this dynamically or statically
I have no idea.  Then there's a separate Compiler that turns
Squeak/Smalltalk source code into bytecode objects that the
interpreter can run?

There's another page that purports to talk about how a Squeak image is
built, but after explaining how most people never quite feel at home
in a Squeak .changes file, it degenerates into details that make no
sense to an outsider.  Avoid http://wiki.squeak.org/squeak/1053 until
somebody rewrites it in English.  The rest of the internals doc is
sketchy copies of emails, with newer headings that say things like
The last system where this worked is 2.7 (January 2000).

I haven't yet found similar documentation for eToys, which is
apparently something built on squeak rather than built in?
There's also a warning at http://wiki.squeak.org/squeak that if you
want to run eToys, you need to run a different version of Squeak than
everybody else.

Anyway, it looks like there's lots of stuff hiding under the covers in
Squeak and eToys, but it's so undocumented that only a zealot would
ever figure out where or how to start.  Perhaps the team should
someday spend a month or two on documentation -- after all, it's an
education project, and if nobody can even find your source code, how
are they going to read it and educate themselves?  Or some zealot
could do the supposedly trivial implementation exercise of making
source code go into separate files, and being able to actually compile
source from files into binaries in files, rather than compiling only
from running images to running images.  These improvements would make
the freedom or lack thereof of Squeak/eToys more visible to ordinary
programmers -- like me, or the Debian team.

John
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Yoshiki Ohshima
  Hi, John,

 My only experience with Squeak/eToys up til now was trying it on the
 OLPC as a naive user.  Poking at objects on the screen with the
 handles, since that was the only tutorial offered.  The way the darn
 thing saved its workspace in the friggin Journal whenever you tried
 to quit it reminded me of ancient APL interpreters that contained a
 jumble of code and data, and Holger's explanation of why it's
 non-free reinforced that.  Of course I have no idea how it's
 actually implemented inside.  (There's apparently no tarball that I
 could unpack and examine to find out, either; I'd have to learn how to
 run their GUI just to look at their implementation.)

  Is this discussion still on whether Etoys can be in Debian?  Whether
it can or cannot doesn't depend on whether Journal is friggn, the way
it saves the workspace content, or the fact that you have to learn how
to run (?) the GUI to look at its implementation.  The fact that you
better to (strictly speaking, you don't have to) use a particular
editor is a requirement?

  (BTW, http://wiki.laptop.org/go/Smalltalk_Development_on_XO might be
helpful.  Read SqueakV3.sources as EtoysV3.sources in the page,
though.  http://static.squeak.org/tutorials/BankAccount.html is
obsolete, but a classic tutorial.)

  Lack of some documentation is a problem, but once you know where to
click in the GUI, *all* code are nicely hyperlinked together so that
reading code and learning it becomes so easy and encouraging.  That is
why many developers who used to it lose motivation to write getting
started documents^^;

  It is definitely learnable.  There are many new (young and old)
poeple get interested in Smalltalk all the time and poking around.
Papers are published to prestige and not-so-prestige computer science
conferences constantly on making deep changes to Smalltalk or making
applications, etc.  There are companies that are making products.

  By its nature, it is true that it is much, much easier to get
started when you have somebody who already knows it around but it is
sometimes hard to find such a person.

  But let us not derail the discussion.  This discssion is not about
making you like Etoys/Squeak.

-- Yoshiki
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Yoshiki Ohshima
  John,

  I separated the real Etoys implementation part from your email.
Hopefully it helps to focus on different aspects of discussion.

 It took some searching, but I found a paper on the design of the guts
 of Squeak:
 
   ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html
 
 I don't know if it is still good documentation for the current
 implementation, but it gives some idea of how Squeak was originally
 built.

  At the basic part on how it works, the paper is still valid and
good.  The performace increased since then quite a bit, and there are
other semi-major improvements, but that is ok.  Probably you can find
a copy of the proceedings (OOPSLA '97) somewhere if you like the paper
version.

 The interpreter was written and maintained in a subset of high-level
 Squeak (smalltalk) but there's also a translator that translates
 that interpreter into C, which is then compiled to produce a binary
 interpreter.  Whether it does this dynamically or statically I have
 no idea.

  Because it is into C, it is statically done.  In the later versions
and platform that support loading shared libraries (called plugins)
onto the VM, you could write some code for plugin in Squeak, generate
C, compile the C code to make a shared library and load it onto the
running Squeak session.  But that is besides the point.
  
 Then there's a separate Compiler that turns
 Squeak/Smalltalk source code into bytecode objects that the
 interpreter can run?

  Yes.  The Compiler is written in Squeak and the compiled result of
the Compiler itself is in the image.

 There's another page that purports to talk about how a Squeak image is
 built, but after explaining how most people never quite feel at home
 in a Squeak .changes file, it degenerates into details that make no
 sense to an outsider.

  The paper definitely serves its intended audience (programming
language designers and implementors.)  The paper is cited quite often
by papers from other language communities.

 I haven't yet found similar documentation for eToys, which is
 apparently something built on squeak rather than built in?

  Where did you find built on vs. built in discussion?  It doesn't
sound like an important distinction.

  The Etoys system is a bunch of additional code written in Squeak.
There are some deep changes in the base classes of Squeak to support
Etoys so it just happen to be distributed as a separated packaged
version called Etoys.

  There is no good documentation (as far as I know) on how Etoys is
implemented other than the source.  But again, the code is nicely
hyperlinked and the live system is there, learning it is possible if
you know Squeak.  (Etoys is like an application.  How many
applications you use have good documentation how they are implemented,
though?)

 There's also a warning at http://wiki.squeak.org/squeak that if you
 want to run eToys, you need to run a different version of Squeak than
 everybody else.

  *That* is Etoys.  What is wrong with it?

-- Yoshiki
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread NoiseEHC

 There's also a warning at http://wiki.squeak.org/squeak that if you
 want to run eToys, you need to run a different version of Squeak than
 everybody else.
 

   *That* is Etoys.  What is wrong with it?
   
Just out of curiosity:
Exactly how is it different from vanilla squeak? (If there is such a 
thing at all.)
Is it a different VM, or just a different distribution since it has a 
different binary blob?
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Yoshiki Ohshima
  There's also a warning at http://wiki.squeak.org/squeak that if you
  want to run eToys, you need to run a different version of Squeak than
  everybody else.
  
 
*That* is Etoys.  What is wrong with it?

 Just out of curiosity:
 Exactly how is it different from vanilla squeak? (If there is such a 
 thing at all.)

  Whichever two images you would like to compare (why not write
Squeak?), launch two images and evaluate:

  Smalltalk condenseSources.

or equivalent in them.  Each of image will make a .sources file so you
get two .sources file.  Then, use diff (perhaps you might want to
convert CR to LF before that) to see the difference.

 Is it a different VM, or just a different distribution since it has a 
 different binary blob?

  The VM is well synchronized with the trunk VM.  They were identical
a few weeks ago.  We now have a few more patches in the OLPC VM branch
but it is not significant.  The VM is a separeted rpm BTW.

  Why do you refer it to as binary blob?

-- Yoshiki
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Karl Ramberg
NoiseEHC wrote:
 There's also a warning at http://wiki.squeak.org/squeak that if you
 want to run eToys, you need to run a different version of Squeak than
 everybody else.
 
   
   *That* is Etoys.  What is wrong with it?
   
 
 Just out of curiosity:
 Exactly how is it different from vanilla squeak? (If there is such a 
 thing at all.)
 Is it a different VM, or just a different distribution since it has a 
 different binary blob?
The Etoys image is different than the main Squeak image, which  is 
mostly used by researchers and web developers.The main Squeak image is 
more focused on maintaining the Smalltalk libraries and IDE features 
while Etoys is more like a application.

One drawback of the Smalltalk image is it's monolithic nature and while 
the separation of the main classes and Etoy classes can be done, it's a 
big job and can become a hassle when all kinds of different users have 
their own agenda and objectives.
Therefor a plethora of images are available and are specialized for 
their use, much like different Linux distributions.

Karl
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread NoiseEHC
Thanks!


   Why do you refer it to as binary blob?

   

That was the first word jumped into my mind. All I know is that it is 
not in CVS or GIT so nothing serious.
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Edward Cherlin
On Wed, Jun 25, 2008 at 11:00 AM, Yoshiki Ohshima [EMAIL PROTECTED] wrote:
[John Gilmore wrote:]
  There's also a warning at http://wiki.squeak.org/squeak that if you
  want to run eToys, you need to run a different version of Squeak than
  everybody else.
 
*That* is Etoys.  What is wrong with it?

Yes, Etoys is precisely a version of Squeak with more objects added in.

 Just out of curiosity:
 Exactly how is it different from vanilla squeak? (If there is such a
 thing at all.)

More objects written in Squeak.

  Whichever two images you would like to compare (why not write
 Squeak?), launch two images and evaluate:

  Smalltalk condenseSources.

 or equivalent in them.

Explain to John and me how you get a command line in Etoys. No, I see
it. It's the text input mode in a Scriptor.

http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Tutorials/SqOnlineBook_(SOB)/englisch/sqk/sqk00046.htm

tells you how to operate the controls to get to a scriptor and type in
it to create a changes file.

doFileout
Smalltalk changes fileOut.
self beep: 'croak'

Actually, John, everything you need is in the Etoys Help tool--Script
Tiles, Object Catalog, and Halo Handles (including the Viewer and
Debugger)--and the Squeak tutorial
http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Tutorials/SqOnlineBook_(SOB)/index.html

 Each of image will make a .sources file so you
 get two .sources file.  Then, use diff (perhaps you might want to
 convert CR to LF before that) to see the difference.

Is this .sources output what Debian is asking for? If not, why not,
and what would we have to do to complete it from their point of view?

http://wiki.squeak.org/squeak/759

Smalltalk condenseSources
extracts the currently valid definitions form both
the sources file and the changes file and merges these into an
new sources file SourcesV3.6 (you are asked to supply the name of the
new sources file).
All outdated definitions are dropped. We have a 14MBytes sources and
10 MBytes changes file.
When these merge we have a 16 MBytes source file and a nearly empty
changes file. We therefore conclude, that the 10 MBytes of the changes
contained 2 MBytes new code and 8 MBytes development history.

Can gst bring in a .sources file and a .changes file and create a working image?

 Is it a different VM, or just a different distribution since it has a
 different binary blob?

  The VM is well synchronized with the trunk VM.  They were identical
 a few weeks ago.  We now have a few more patches in the OLPC VM branch
 but it is not significant.  The VM is a separeted rpm BTW.

  Why do you refer it to as binary blob?

Yeah, it's mostly Smalltalk source and objects created in Smalltalk.

 -- Yoshiki
 ___
 Devel mailing list
 Devel@lists.laptop.org
 http://lists.laptop.org/listinfo/devel

-- 
Edward Cherlin
End Poverty at a Profit by teaching children business
http://www.EarthTreasury.org/
The best way to predict the future is to invent it.--Alan Kay
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Bert Freudenberg

Am 25.06.2008 um 23:25 schrieb Edward Cherlin:

 On Wed, Jun 25, 2008 at 11:00 AM, Yoshiki Ohshima [EMAIL PROTECTED]  
 wrote:
 [John Gilmore wrote:]
 There's also a warning at http://wiki.squeak.org/squeak that if  
 you
 want to run eToys, you need to run a different version of Squeak  
 than
 everybody else.

  *That* is Etoys.  What is wrong with it?

 Yes, Etoys is precisely a version of Squeak with more objects added  
 in.

 Just out of curiosity:
 Exactly how is it different from vanilla squeak? (If there is such a
 thing at all.)

 More objects written in Squeak.

 Whichever two images you would like to compare (why not write
 Squeak?), launch two images and evaluate:

 Smalltalk condenseSources.

 or equivalent in them.

 Explain to John and me how you get a command line in Etoys. No, I see
 it. It's the text input mode in a Scriptor.

 http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Tutorials/SqOnlineBook_(SOB)/englisch/sqk/sqk00046.htm

 tells you how to operate the controls to get to a scriptor and type in
 it to create a changes file.

 doFileout
 Smalltalk changes fileOut.
 self beep: 'croak'

 Actually, John, everything you need is in the Etoys Help tool--Script
 Tiles, Object Catalog, and Halo Handles (including the Viewer and
 Debugger)--and the Squeak tutorial
 http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Tutorials/SqOnlineBook_(SOB)/index.html

Actually, to get at the Smalltalk tools, use the view-source key. This  
is also mapped to Alt-, if you happen to not run on the XO, while ALt- 
Shift-W brings up the regular Squeak main menu. Under help-preferences  
you can disable the etoyFriendly setting, which then brings up the  
main menu on a background left-click.

 Each of image will make a .sources file so you
 get two .sources file.  Then, use diff (perhaps you might want to
 convert CR to LF before that) to see the difference.

 Is this .sources output what Debian is asking for? If not, why not,
 and what would we have to do to complete it from their point of view?

Only they can answer that. It is all the sources, yes.

 http://wiki.squeak.org/squeak/759

 Smalltalk condenseSources
 extracts the currently valid definitions form both
 the sources file and the changes file and merges these into an
 new sources file SourcesV3.6 (you are asked to supply the name of the
 new sources file).
 All outdated definitions are dropped. We have a 14MBytes sources and
 10 MBytes changes file.
 When these merge we have a 16 MBytes source file and a nearly empty
 changes file. We therefore conclude, that the 10 MBytes of the changes
 contained 2 MBytes new code and 8 MBytes development history.

We currently ship an 18 MB .sources and 600 K .changes file. So the  
condenseSources step isn't going to make much of a difference (we did  
it in April to produce EtoysV3.sources).

 Can gst bring in a .sources file and a .changes file and create a  
 working image?

Not currently.

- Bert -

 Is it a different VM, or just a different distribution since it  
 has a
 different binary blob?

 The VM is well synchronized with the trunk VM.  They were identical
 a few weeks ago.  We now have a few more patches in the OLPC VM  
 branch
 but it is not significant.  The VM is a separeted rpm BTW.

 Why do you refer it to as binary blob?

 Yeah, it's mostly Smalltalk source and objects created in Smalltalk.

 -- Yoshiki
 ___
 Devel mailing list
 Devel@lists.laptop.org
 http://lists.laptop.org/listinfo/devel

 -- 
 Edward Cherlin
 End Poverty at a Profit by teaching children business
 http://www.EarthTreasury.org/
 The best way to predict the future is to invent it.--Alan Kay
 ___
 Devel mailing list
 Devel@lists.laptop.org
 http://lists.laptop.org/listinfo/devel



___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Frank Ch. Eigler
Edward Cherlin [EMAIL PROTECTED] writes:

 [...]  Can gst bring in a .sources file and a .changes file and
 create a working image?

It doesn't have to.  It builds gst.im from scratch at every
bootstrap.  If squeak/etoys did something close to that, many
concerns would be pacified.

- FChE
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: etoys implementation

2008-06-25 Thread Yoshiki Ohshima
At Wed, 25 Jun 2008 19:09:12 -0400,
Frank Ch. Eigler wrote:
 
 Edward Cherlin [EMAIL PROTECTED] writes:
 
  [...]  Can gst bring in a .sources file and a .changes file and
  create a working image?
 
 It doesn't have to.  It builds gst.im from scratch at every
 bootstrap.  If squeak/etoys did something close to that, many
 concerns would be pacified.

  Yes, for GNU Smalltalk, these are not .sources file and .changes
file but you can create an image file.

  BTW, Smalltalk-72 had a text file called ALLDEFS that is the
bootstrap file for the entire system.  For Smalltalk, bootstraping
from a text file is not a new concept.  While Dan and others were
experimenting different ideas like image, somehow a part of free
software community made very rigid by people who only know one way of
doing it and now we are having this conversation.

  For those who are curious, try Smalltalk-72 emulator available here:

http://map1.squeakfoundation.org/sm/accountbyid/a6930213-b578-49b1-862e-228cc5ab39e7/package/b98225e0-151d-4508-88fe-483db46f9814/autoversion/1

  BTW, As pointed out many times, we are not sticking to Squeak
because it is Smalltalk; but because it has Etoys.

-- Yoshiki
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel