got updates, want to use them - Chapter 1

Bob Arning arning at charm.net
Wed Aug 16 14:50:43 UTC 2000


On Wed, 16 Aug 2000 14:46:33 +0200 Karl Ramberg <karl.ramberg at chello.se> wrote:
>I can see there is alot of new stuff for colaboration, chat, project sharing, telemorphic, nebraska,
>etc in this
>update. Now I what to try this out, but how does this work ? What kind of infrastrukture is needed
>in the background ?
>Is there any server up for project sharing etc. ?

Hi Karl,

This is probably going to take some time to explain fully, but here's a start:

What's new?
------------------
Nebraska - Nebraska allows multiple squeak images to see and touch the same world. The current implementation allows one squeak (the "server") to share its world with one or more others squeak images ("clients"). Other variations are possible, but this is the starting point. To begin, the server image executes:

	NebraskaServerMorph serveWorld: World

This will begin the listening process for client connections and will open a small morph that shows the number of such connections. Next a client image executes:

	NetworkTerminalMorph openAndConnectTo: 'servername'

where 'servername' is the server's ip address. When the connection is established, a small white morph appears in the upper left of the client machine. As soon as the initial state of the world is received, this morph expands to be a full size view of the server's world. At this point, users on both machines are able to interact with the world, each with their own hand. When the client wishes to disconnect, he brings up the halos on the view of the server (a NetworkTerminalMorph) and deletes it. The server side can then delete the small morph showing the number of connections and listening for connect requests is terminated.

Improvements coming in future releases:
- There are some issues with dependents and shutdown that leave old stuff hanging around. I would advise against saving an image that has run the server. This will be fixed soon.
- A fairly large chunk of network bandwidth can be consumed. Best results are seen with ethernet or better. The next release will offer some significant bandwidth reductions. There are some options in the current version to try different strategies. I'll leave these for another discussion.
- A better UI for starting a session.
- Correction of some visual anomalies.
- Better control over size and placement of the client's view of the server.
- A last minute change elsewhere means that the client cannot invoke the server's World menu. I'll put a fix out for that shortly.
- Ability for server to share less than his whole world.

------------------
Communications - several new ways to communicate between squeak images are included and more are to come. A good place to start would be the "badge" (EToySenderMorph). This is the representation of another squeak user and serves a central role in the communication process. You can get one from the new morph menu under Experimental or you can create one with:

	EToySenderMorph
		new
		userName: 'user name here' 
		userPicture: theUsersPictureOrNil 
		userEmail: 'user email address here' 
		userIPAddress: 'user ip address here';
		position: 200 at 200;
		open

The email and ip address can be easily changed by clicking on those fields in the badge. Once you have a badge representing another user (or yourself, even!), several types of communication are possible:

== Drop a morph on the user's picture (part of the badge will turn blue when you are in the right place) and the morph is sent to that user.
== Click on the 'C' button at the bottom to start a written chat with that user. The chat window will appear in the lower part of the badge. Type your message in the upper part and press cmd-s or Enter (not return) to send it. Your messages and any replies appear in the bottom pane.
== The 'T' button is a shortcut for starting a telemorphic session. Telemorphic has been around for a few years and I think I'll defer it's explanation to someone more familiar.
== The '!' button opens an email window to tell this person about the project you are currently viewing (if it has been saved). This is a shortcut for the Tell button on the ProjectNavigationMorph.
== The '?' button offers some information and options for exchanging more information with another user as to status and availability for various types of communications. I'll touch a bit more on these when we look at the receiving side.

Finally, the "fridge". The fridge (new morph/experimental/EToyFridgeMorph) offers the ability to send things to more than one recipient. Dropping badges on the fridge adds that user to the group of recipients. Dropping any other morph on the fridge sends that morph to all of the recipients. The toggle button on the fridge opens it up so you can remove a recipient from the group.

Now we ought to look at the receiving side.

So that there are no misunderstandings, let me first say that some of these operations are not secure. Arbitrary morphs arriving in an image could do nasty things. Read and understand your options before diving in too deeply.

First, *no* incoming communications are processed unless the receiving end is listening for them. The control for this is the listener (new morph/experimental/EToyListenerMorph). Click on the mouseketeer hat and when the ears appear, you are listening. Click again to remove the ears and stop listening. This is your first control over the communications you receive. The second level of control is the gate keeper. When you are listening, each incoming connection is checked against a list of approved ip addresses and connection types. If the list indicates you do not wish to receive this message from this user, it is simply ignored. Note: for the purposes of making some demos run smoothly, the default at the moment is to accept anything from anyone! If you have any concerns about the security of your system, you will want to change this first. Future releases will make this a smoother process, but for now, if you edit

EToyGateKeeperEntry>>initialize

and change

	acceptableTypes _ Set withAll: EToyGateKeeperMorph messageTypes.
to
	acceptableTypes _ Set new.

Then the default will be to ignore any incoming requests. So, how do we copntrol this more selectively? Once another user (or yourself, so you can check this out on a single machine if you like) attempts to connect, that creates a gate keper entry which will be shown at the top of the listener. Here you will see a series of check boxes (they will actually look like check boxes in the next release). These allow you to control what types of communications you do, or do not, wish to accept from that user. Obviously, a better UI would offer a way to set these up easily before the first request arrives.

So, having enabled certain types for a given user, what happens when they arrive?

== Written chats will appear in a badge representing that user in the current world. If you already have a badge, that will be used, otherwise a new one will be created.
== Morphs will appear in the lower part of the listener where they can be grabbed or deleted. An alternative to this is that arriving morphs can appear directly in the world. To enable this, simply place an EToyMorphsWelcomeMorph somewhere in your world. This acts as a signal to bypass the listener and open the morph on arrival.
== Morphs arriving with the 'fridge' designation will be opened directly in a project titled Fridge (if you have one). This can serve as a bulletin board for sharing things among group members.

What's upcoming?
- Audio chat is working nicely and should be available soon.
- Simplified the process for adding new communications types.

I think that will do it for this email. More later.

Cheers,
Bob





More information about the Squeak-dev mailing list