[ENH][Modules] Another version

danielv at netvision.net.il danielv at netvision.net.il
Sat Sep 15 21:21:21 UTC 2001


Hi Henrik,
A few questions about your modules system -
The Explorer is used extensively to browse modules. Is there a tool for
modifying them (to create the system refactorings)? how do you do it?
Do you/will you support extensions (class definition is in module a,
additional methods for it are defined in module b)?
The DeltaModules class comment looks like it's supposed to allow me to
load code and install it (or not) separately, which is important. How
much of that is there?
How does one load code from the HTTP repository? how does one put code
there?
Your work and the ModSqueak work seem quite similar in scope. Can you
comment on the differences?
BTW, in the regular browser, after loading your changes and executing
the refactoring, the menu for class categories (now modules?) bombs. See
error below.
The module list in the browser would be better served by an explorer
now... the empty high level categories look strange.

Daniel

Image version: Squeak3.1alpha
latest update: #4332
Current Change Set: Unnamed1

VM version: Squeak3.1alpha of 7 March 2001 [latest update: #4173]
for: unix

Receiver: a MenuMorph(2944)

Instance variables: 
bounds: 	0 at 0 corner: 40 at 10
owner: 	nil
submorphs: 	#(a MenuItemMorph(2150)'find class... (f)' a
MenuItemMorph(1648)'recent classes... (r)' a MenuLineMorph(568) a
MenuItemMorph(2659)'browse all' a MenuItemMorph(1082)'browse' a
MenuLineMorph(3522))
fullBounds: 	nil
color: 	Color veryLightGray
extension: 	a MorphExtension (3856) [other:  (layoutPolicy -> a
TableLayout) (cornerStyle -> #rounded) (layoutProperties -> a
TableLayoutProperties)]
borderWidth: 	2
borderColor: 	#raised
defaultTarget: 	a Browser
selectedItem: 	nil
stayUp: 	false
popUpOwner: 	nil
activeSubMenu: 	nil

Method (temp) variables: 
labelList: 	'find class... (f)
recent classes... (r)
browse all
browse
"printOut
fileOut
reorganize
update
add item...
rename...
remove"'
linesArray: 	#(2 4)
selectionsArray: 	#(#findClass #recent #browseAllClasses
#buildSystemCategoryBrowser)
labelArray: 	an OrderedCollection('find class... (f)' 'recent classes...
(r)' 'browse all' 'browse' '"printOut' 'fileOut' 'reorganize' 'update'
'add item...' 'rename...' 'remove"')
i: 	5
iLimiT: 	11

Stack: 
Array(Object)>>error:
Array(Object)>>errorSubscriptBounds:
Array(Object)>>at:
MenuMorph>>labels:lines:selections:
Browser>>systemCategoryMenu:
PluggableListMorph(ScrollPane)>>getMenu:
PluggableListMorph(ScrollPane)>>yellowButtonActivity:
PluggableListMorph>>mouseDown:
PluggableListMorph(Morph)>>handleMouseDown:
MouseButtonEvent>>sentTo:
PluggableListMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchMouseDown:with:
MorphicEventDispatcher>>dispatchEvent:with:
PluggableListMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchMouseDown:with:
MorphicEventDispatcher>>dispatchEvent:with:
SystemWindow(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchMouseDown:with:
MorphicEventDispatcher>>dispatchEvent:with:
PasteUpMorph(Morph)>>processEvent:using:


Henrik Gedenryd <Henrik.Gedenryd at lucs.lu.se> wrote:
> > This message is in MIME format. Since your mail reader does not understand
> this format, some or all of this message may not be legible.
> 
> --MS_Mac_OE_3083181220_2027577_MIME_Part
> Content-type: text/plain; charset="US-ASCII"
> Content-transfer-encoding: 7bit
> 
> Here is an updated version of the modules prototype from a couple of weeks
> ago. (File into 3.1a-4332 in the given order, or strange bugs may happen. I
> have tested it to some extent and it worked for me...)
> 
> Much following Les' suggestion, this is as yet a "weak modules" scheme that
> partitions the system into modules but still leaves the critical name lookup
> mechanisms in place (e.g. #Smalltalk). Still, the changes are irreversible,
> mostly because the SystemOrganizer is replaced by an object that simulates
> system categories from module paths. (The path is the location of a module
> within the virtual module hierarchy, and serves to uniquely identify every
> module in every squeaker's project. Hans-Martin's original modularity
> posting is worth re-reading, some ideas are virtually identical to this
> system.) 
> 
> There are some instructions in the preamble of the first change set, and the
> class comments that are there provide some meat as well. Otherwise, the
> basic concepts follow the proposal that I posted earlier. I recommend the
> package browser, even though there's some serious slowness in it now, that
> anyone is welcome to fix. :-)
> 
> The most powerful piece in there so far is the mechanism for refactoring the
> image to eventually yield easy shrinking/growing of customized images.
> People who want to experiment with creating e.g. a really minimal headless
> image could more or less start right away. There are also some quite
> powerful tools for finding and analyzing the ill-formed dependencies that
> now hinder easy growing/shrinking. In the last minute I included a very
> crude prototype of DeltaModule. It will serve as to give an idea of how to
> handle upstream definitions, but its details shouldn't be considered final
> at all. You can try
> 
> self collectUpstreamMethodsOutside: self
> 
> in the Module explorer on e.g. the Morphic or EToy modules, and afterward
> look at the contents of the new submodule Deltas. (MVC: 72 delta modules!)
> 
> Ideally I would now provide a list of things that are made better by this
> system, but as they mostly don't work yet, I'll wait to advertise them until
> the proof is really in the pudding. The class comment of DeltaModule does
> give a few hints however. Right now the best feature is how small it all is.
> :-)
> 
> If the effort is justified there definitely will be documentation, right now
> I'll gladly ask questions that come up rather than trying to anticipate what
> you want to know. (My email capacity will be a little smaller from Thursday
> until Tuesday though.)
> 
> Have fun,
> Henrik
>




More information about the Squeak-dev mailing list