RE: [iPAQ] Squeak on iPAQ :-)

From: Laird Popkin <laird.a.t.io.com>
Date: Thu Feb 01 2001 - 00:48:39 EST

To be clear, my point had nothing to do with legal issues, but rather with
the fact that in Squeak you have the full source code to absolutely
everything, including the VM, and it's all written in Smalltalk. This is
tremendously powerful for developers, because it means that you can explore
virtually any aspect of the system in order to learn more from it, modify
its behavior, and so on. And by explore I don't mean read listings, but set
breakpoints, step through, and inspect anything I like, anywhere in the
system exactly as if it were my application code. The elimination of the
barrier between developers and the runtime environment is a wonderful
freedom that you don't have in Java, where the development is more like the
traditional C model, where most of what the system does is distributed in
binary form where all I really get is a documented black-box that I can
attempt to use according to documentation.

Now, to jump into the license snake pit for just a second, with the hope of
cutting this discussion short, I would assert that by the handhelds.org
stated goals, Squeak is open source. While you can argue that some of the
Apple license's terms are a little strange, I think you'd have to agree that
Squeak counts as "infrastructure and application software ... available in
full source form, free of charge, in keeping with the open source
philosophy" (from www.handhelds.org/about.html) as opposed to "development
for sale." Note specifically that the site doesn't reference any specific
legal definition of open source, or conform to any particular license, just
that they want to support efforts that are in keeping with the open source
philosophy. Yes, Apple's license doesn't promote the GPL (it's more like the
BSD, MPL, etc., licenses that allow commercial use), and it has a few weird
Apple terms regarding the fonts and governing law, but none of that affects
the basic fact that we all have source code to the entire system, with the
right to port it anywhere or do pretty much anything else we like with it,
and redistribute the result with no restrictions. The only meaningful
restriction is that I have to distribute source code to my changes, which I
would hope we all regard as a good thing. If that's not in keeping with the
open source philosophy, then I don't know what is.

Can we please discuss software instead of licensing?

OK, here's how I envision things working in Squeak on a PDA. It's just my
personal vision, and I'd be interested in hearing from others about their
ideas -- if we kick ideas around a bit, we should be able to find something
we all find interesting/useful to implement.

My basic idea is based on the Newton, but taken a little further in the
direction of an electronic notepad (and no app's). Here are some thoughts --
what do you think? Would you want to use this? The vision is pretty
expansive, so realistically it could only be done in small stages. In
another sense, it's a very restrictive view, so coding for it would be
almost like haiku.

- The model of user interaction is the notebook. It has a cover (with your
name on it), a table of contents and individual pages.
- There are no menu bars, and no title bars.
- You can only see one page at a time. There is no horizontal scrolling --
everything reflows to the screen's width. There is only vertical scrolling
sufficient to show the objects as they're flowed onto the page. The first
line of each page has the page's title and the date at which it was written.
Visually this isn't a title bar, but rather is a highlighted top line in a
notebook page.
- Notebook pages have a title (required), timestamps, and can contain
objects of various types (text, ink, lists, links to other pages, etc.). The
pages reflow based on screen width.
- There are no applications, just new kinds of objects to embed in pages.
- For example, your contact list is an object.
- A drawing area is an object.
- A calculator is an object.
- A 3D scene that you can wander around in is an object.
- Pretty much any Morphic object can be an object in a notebook. I think
we'd have to add a little basic behavior. Hmm.
- There are no windows. List objects can link to detail objects on other
pages. For example, tapping on a person in the contact list would flip to a
page for that person containing all of their contact information in a
"contact" object. Since it's a notebook page, you could add additional
notes. The list objects would populate themselves from all of the detail
objects anywhere in the notebook, and link to the appropriate pages. In
theory this could be pretty chaotic (i.e. if people rearrange date book
pages) but perhaps these auto-generated pages could be locked down in the
TOC. I also suspect that people will arrange their information in a manner
that makes sense to them (e.g. a section for contacts, a section for project
notes, a section for finances, etc.). After all, nothing's keeping people
from randomly rearranging the pages in a Daytimer aside from rationality.
- All data is simply objects in memory -- the concept of a file system is
unnecessary complexity and overhead for a PDA.
- For external synchronization (i.e. with desktops) I rather like the idea
of an XML-based protocol. I like ICE (http://www.icestandard.org) and would
love to see us use a subset appropriate to PDA's, since it's been in
production for a few years and seems to work nicely, but I'll freely admit a
personal bias -- I helped write the protocol. I'd also love to see a
mechanism to synchronize the notebook with a Swiki by comparing modification
dates, etc., and generating text pages, GIF images, and so on.
- If you write on a page, you create text. If you want to create other
objects, you gesture (or click a button) to bring up a list of available
object types, pick one, then drag a rectangle to define the area of the
object. If you tap instead of dragging, the object is its smallest size.
- You can bring up a keyboard, which shrinks the notepad vertically to
reveal the keyboard. Other objects may bring up other palettes the same way.
For example, while drawing you may have a palette of shapes to use
(rectangle, circle, pencil, etc.), while a calculator may let you pick
functions, and a 3D world may have navigational controls.
- Some applications may span many pages, by creating pages that contain
objects that refer to the same underlying data structures. For example,
there would be a calendar page for the year, then pages for each month,
week, and day. The pages would all be linked to each other. Since you can
edit, scribble on, etc., each page in the calendar they all have to actually
exist as first-class objects. On the other hand, for efficiency's sake the
system would need to know how to build pages on demand from some sort of
template. Either that or you would have to tell the system to add the 2001
calendar when you got near the end of 2000, which would build 365 new daily
pages, 52 new week pages, 12 new month pages, and a new year page. I am
assuming that such an application would "own" a section.
- If there's a palette for the currently selected object, a triangle
pointing up appears at the bottom of the screen. Clicking on the triangle
reveals the palette. Or (hmm) perhaps the palette is always shown.
- All graphics should be shaded, textured, etc., to look like "real"
objects. (The iPaq's screen is beautiful, so let's use it).
- User actions should have sound associated with them, such as page turning,
pencil scratching, clicking buttons, and so on.
- We have to have the usual administrative widgets (calibration, train the
HWR, etc.). These are pages in the notebook.
- There are a few meta-commands for the notebook, to flip pages back and
forth, close the notebook (go to front cover page), create new page, copy
page, paste page. These are accessed by clicking the left edge of the screen
(i.e. the notebook's binding) and appear like the Morphic Halo.
- The TOC is manipulatable. You reorder pages by dragging them around. Pages
are organized into sections. Clicking on a TOC entry jumps to the page.
- Selection is performed by either button-clicking on an object or by clicki
ng and holding for a second until a selection cursor appears (Newton-style).
I don't know what the right answer is.
- Erasing is by scribbling over an object (Newton-style).
- There are a few meta-commands for the page, such as to rename the page,
beam (IR transmit) the page, and delete the page. These are accessible by
clicking on the top of the screen (i.e. where the title is), where they
appear like the Morphic Halo.
- There are some commands for selected items, such as to copy, move, resize,
or delete the item. These appear as a Morphic Halo when an item is selected.
- I rather liked the Newton convention of copy/cut/paste by dragging objects
to the edge of the screen (a holding pen), then later dragging them from
there into the target.
- The joy pad moves around pages. Left and right are previous and next page.
Up and down scroll the current page.
- The buttons jump to whatever pages you link them to. For example, the
buttons could link to today's calendar page, the table of contents, the
contacts list page, and the next blank notebook page.
- Everything is done by direct manipulation. The model is the view.

I think it would look a little like:

++-------------------------+-+
|| Laird Popkin 2/1/01 |A|
|| . . . . . . . . . . . . | |
|| Address: [1 Cool St. ] | |
|| [Apt. 1| ] | |
|| City: [New York ] | |
|| State: [NY] | |
|| Zip: [10128] | |
|| | |
|| What a nice guy! He | |
|| loves Smalltalk and the |V|
++=========================+-+
| |
| KEYBOARD PALATTE |
| |
+-------------V--------------+

In a crude ASCII way, I am trying to represent editable text form fields
with []'s, a vertical scroll bar across the right, the notebook's binder
along the left, and the page's title at the top.

So what do you think? Cool? Insane?

- Laird

-----Original Message-----
From: ipaq-admin@handhelds.org [mailto:ipaq-admin@handhelds.org]On
Behalf Of Alan Cox
Sent: Wednesday, January 31, 2001 1:41 PM
To: Laird A Popkin
Cc: Noel J. Bergman; Kevin Fisher; ipaq@handhelds.org
Subject: Re: [iPAQ] Squeak on iPAQ :-)

> Both Java and Smalltalk are VM-based. The differences I see are mainly
> specific to the Squeak implementation:
> - Squeak is entirely open source, including the VM.

You have that backwards. Squeak is weird closed with source licensed, there
are open source (but not good) java implementations

Smalltalk is a wonderful programming system that has been killed everywhere
by people who do not grasp why a language needs to have a truely free
environment to succeed. The original smalltalk vendors never got it, squeak
is closer but still not there

_______________________________________________
iPAQ mailing list
iPAQ@handhelds.org
http://handhelds.org/mailman/listinfo/ipaq
Received on Wed Jan 31 21:40:39 2001

This archive was generated by hypermail 2.1.8 : Tue May 04 2004 - 09:43:51 EDT