SqueakMap tommorrow?

Göran Hultgren squeak-dev at lists.squeakfoundation.org
Sat Sep 21 14:30:45 UTC 2002


Hi all!

Quoting danielv at netvision.net.il:
> goran.hultgren at bluefish.se wrote:
> > Well, the UI is very separated from the domain model. So if you can
> whip
> > up a complemental minimal UI that for example is simply a two-level
> deep
> > menu (with letter intervals on the first level, like the good old
> "new
> > morph" menu) of *installable* (downloadurl endswith .cs, .cs.gz, .st)
> Aha - good idea. Only installable packages in the quick d/l UI.

Yes, and for starters I think checking for file extensions like the above will
suffice. KISS.

[SNIP]
> 1. Minimal UI. I'll do that - anything in particular I should know?

Well, I think you can get a long way by simple peeking at SMSqueakMapBrowser.
But I intend to look over the code (this weekend or on monday) and give you some
hints.

[SNIP]
> 2. You create a silent update/publish interface (we'll have to agree on
> some good simple semantics, see later).

Sure.

> 3. I create a first, simple UI to use 2. Probably one using Avi's
> ModuleFiler, and maybe a bit later one using simple ChangeSets. 
> (Second release - a D/Lable package for trivial publish/update).
> That's the seed. From here people CAN use it. Then the question will be

Actually I think it can be used even if we don't have publish/update (but I will
fix it). Just having that nice little menu with a bunch of installable packages
is a good thing in itself IMHO.

[SNIP]
> > > Yes - make the minimal update mechanism. 
> > >  - You don't have to control conflicts, we can start by assuming
> only
> > > one person maintains the entry, so there are none conflicts. 
> > 
> > Yes, the only current "problem" when updating is the possibility that
> > the slave map is out of synch and that you select categories that
> have
> > been removed. A very unlikely situation, and perhaps we could even
> let
> > it pass by making the server "cope" with it. A reference to a missing
> > category could be resolved to a category called "Missing category" or
> > something.
> I didn't understand that. Where is a category selected? where are there
> references to categories?

A package entry in SqueakMap is almost only a bunch of Strings. This was
intentional so that they will be as independent of each other as possible. The
id used is UUIDs (Thanks John) so they can indeed be created on different
computers without conflicts. The *only* thing that a package entry has that is
*not* a String is a bunch of category ids - the categories that the package
"belongs" in.

Those categories are maintained by some trusted "map maintainers" so that chaos
will not ensue.

But as I said, we can probably handle the tricky sitations - one technique is to
force the client machine that is about to update/add entries to update itself
first from the master (so that the map is not *that* old). Then when the client
is about to upload the updated/added entries it can start with another update
and check that no category changes occurred since the last update - if not, we
are safe and the entries can simply be updated on the master.

> > >  - SqueakMap isn't the repository, so you can't control the update
> of
> > > the source itself. OTOH, this lets you relax about allowing an
> update
> > > notification (that doesn't change significant details).
> Authorization
> > > might not even be needed at all for this.
> > Ok... what do you mean? What is an update notification?
> 
> Let me continue with short stories -
> 1. I get a clean image, look at the menu, download Connectors.
> 2. I develop an Outline editor, and want to publish it. I upload into
> some ftp space.
> 3. I download the ChangeSetPackagePublisher, and use it to publish
> OustEd (my editor ;-)
> 4. People see it, load it. For every package loaded, the system keeps
> the name and timestamp for it (see next). Packages that are already

When you say "the system" I assume you mean the image.

> loaded aren't shown.
> 5. People find a bug. I fix bug and upload the fix. I want people to
> get
> the new version. I update the SM entry. At a minimum, this simply
> updates the timestamp on the entry, doing nothing else.
> 6. People get into the minimal UI again, see that my package is
> suddenly
> back in their list, because the timestamp is newer. They reload,

I think we instead should check if the "version" field is different from the one
we have loaded. (Note that the field is "free text" so we can't really decide
which version is newer/older, but a safe guess is that it is newer. :-)

> getting
> bug fix.

Ok, we might have a problem defining "reload". For ChangeSets I assume we can
waste the old one (if the name clashes) and load the new one (and hope for the
best). An .st file we can simply file in and hope for the best.

Currently I haven't thought about "update streams" for packages, perhaps we need
that in order to apply "patches". Need to think a bit about that. Today
SqueakMap simply holds an url for the download of the package. There is no
"memory" of previous versions (well, in the logfile there is, but not in the model).

[SNIP]
> structure. It kept all versions of everything. It had many good ideas,
> if you haven't given it a peek you should.

I peeked, but not very much.

> > Why (in your opinion) didn't it become a hit?
> * It wasn't in the image, so it didn't help people d/l their stuff from
> step 1.
> * The install wasn't completely trivial - there was a wizard, instead
> of
> the usual mere filein.
> * It didn't help my clients (people d/ling the RB) to install it. I had
> to write a script. Though having the dependencies declared allowed me
> to
> generate it automatically, which is nice.
> * It was a bit big - lots of code and ideas, some changes to the base
> classes, so it was not quite trivial as possible to get into it.
> * Closed package - because it managed the update process, it actively
> got the code, limiting it to the methods of input and workflow
> supported
> by the author, which was only picking files, at the time. No "update
> the
> package for this changeset" menu item in the changesorter and such.
> * I got annoyed with it after I saved the image with it open and it
> killed my image. There was a fix for this, and HMM was helpful, but I
> got tired.

Interesting.

[SNIP]
> > PS. A funny thing - I have always read your name as "Vainsacher" (for
> no
> > apparent good reason whatsoever) and just the other day I  realized I
> > have been reading it completely wrong. I don't normally do things
> like
> > that. Isn't the brain a weird sometimes? DS
>:-) yup. Actually, IIUC, Vain-sencher is "wine-pourer" literally, or
> simply bar-man.

Ah.

regards, Göran

Göran Hultgren, goran.hultgren at bluefish.se
GSM: +46 70 3933950, http://www.bluefish.se
\"Department of Redundancy department.\" -- ThinkGeek



More information about the Squeak-dev mailing list