[Glass] Short introduction with tODE, Git, packages and so on ...

Dale Henrichs via Glass glass at lists.gemtalksystems.com
Sat May 21 08:33:15 PDT 2016


Thank you very much for your feedback! I appreciate the time it take to 
go through this process!

Comments embedded below.

On 5/21/16 3:02 AM, Marten Feldtmann wrote:
> I want to show how I work with tODE and how I stopped at several points.
> First a bug:
> *Creating a new package*
> From the pop-up menu, open "Packages (mc)" and one gets all known 
> packages - adding a new packages results into a StackOverflow error. Hmm.
I assume that this is the 'Tools > Packages [mc]' menu? I am not able to 
get a stack overflow :(

I tried this with 3.2.12 and 3.3.0, so perhaps some detail on the 
version of GemStone that you are using? Plus I am curious as to the 
versions of the projects that you are using. If you use the 'Window > 
print window' menu on an open project list, I will get just about all 
the information I need to reproduce your problem.

If the stack overflow is occurring on the server-side, you can bring up 
a window and use 'Window > print window' on the stack list to provide me 
with a stack so I can fix this issue.
> But now to my workflow:
> *Creating a new project*
> There seems to be no way to create a new project using the GUI. One 
> might get the project list using the GUI, but from there: no way to 
> create a new project. STOP
The main thrust of tODE has been to create the basic infrastructure and 
implement a minimal set of GUI tools. With the idea that the GUI tools 
will be expanded "on demand".
> Therefore I have to execute "project new <name>" in the tODE shell. If 
> the external git tools has not been configured yet (developer eMail 
> and name) - this fails and errors are shown in the shell. STOP.
Good point. I think that this is a documentation bug for GsDevKit_home 
and I've created an issue[1]

[1] https://github.com/GsDevKit/GsDevKit_home/issues/117
> Ok, I switched to an external shell and execute two git commands (the 
> syntax was printed in the tODE shell in the step earlier) - then at 
> least the infrastructure has been fixed. OK.
> Now I can create a project named "MSKGrummel" and this worked. My 
> project is shown in the "Projects" window. OK
> *From Project to Packages*
> With the new project I have also a new package named "MSKGrummel-Core" 
> - that's very good. I found this out, when I select "packages" from 
> the pop-up menu and I get a window called "Packages for MSKGrummel".
> In that I window I looked at the pop-up menu and found "create new 
> package". Hmm, actually not needed in this step to my first class, but 
> I tried it out and was asked for a new package name. Entered it and 
> got a callback Metaclass>stonName. STOP.
I was able to reproduce this bug and created a tODE issue for it[2]. Thanks.

[2] https://github.com/dalehenrich/tode/issues/259
> Looking with Jade into the stone I see the packages there ...but they 
> are not added to the project.
Ah good point. The 'create new package' menu is the generic create new 
package operation and does not add the package to the project 
automatically ... another issue[3]

[3] https://github.com/dalehenrich/tode/issues/260
> I select "MSKGrummel-Core" and select "browse" from the menu and get 
> an empty window for "MSKGrummel-Core definitions". Seems to be ok, I 
> have no new classes defined.
> *From Packages to Classes
> *
> I look up at the pop-up menu: "Class", "Method" entries I would expect 
> here are all there - but all sub-menue entries are greyed ... dead-end 
> reached. STOP.
Ah very interesting ... browsing a package is different than browsing 
loaded package, because you are browsing the definitions in the package 
and not the artifacts in the image ... and package browsing is a 
read-only operation and empty packages are not very interesting ...

When putting together the description for you yesterday I did notice 
that the transition from empty packages to classes is not very smooth, 
so I've submitted an issue[4]

[4] https://github.com/dalehenrich/tode/issues/261
> I go to the tODE shell and enter "cls create MyFirstClass Object 
> MSKGrummel-Core` and the first class is defined. Here one point would 
> be really nice:
> * I do not want to type the whole stuff - If I enter "Ob" I would like 
> to have autocomplection on the shell and if I enter "MSKG" I would 
> also like to have autocompletion - like in a bash.
There is command completion in the tODE shell but at the moment it is 
not command/context sensitive. Like the bash shell, the tODE command 
completion is based on "directory paths" and "filenames in the current 
directory" ... I agree that it would be very useful to recognize that 
the command is looking for class names, or method selectors or 
repository names and provide context sensitive completion[5].

[5] https://github.com/dalehenrich/tode/issues/262
> The class appears in "MSKGrummel-Core definitions" - but from that 
> window nothing works - all greyed out - even "browse class". That's 
> very strange. STOP
I assume that you are again browsing the package....
> Back to the "Projects" window and from there a "browse classes" is 
> possible. I get a new window "Classes" and there are my classes 
> listed. Select a class and one gets a "pseudo" browser.
> *From Classes to Methods
> *
> The first error I made here: I expected a "new method" menu item in 
> the right window, where the methods are listed. No way to go here. STOP.
Good point[6]

[6] https://github.com/dalehenrich/tode/issues/263
> One has to go to the "protocol" window and there is a "new method" 
> menu entry. That seems to be ok - on the other hand if I have a 
> protocol selected then I would expect the user interaction on the 
> "method" list window.
Agreed ...
> But now to the point where I failed totally:
> I entered a method text like:
> testMe
>    "Some comment here"
>   ^1
> and the system did no accept this. At least here I would give up.
> But ok, what is the problem ? Well I pressed "^" and then "space" - to 
> get "^" (as here in the browser), but this results into a very 
> different character in the source code browser and you get a compiling 
> error.
> Solution: one has to enter "^" and again "^" to get the correct "^" in 
> the source code browser. Puuuh.
> Now I was able to enter and compile source code.
Hmmm ... this must be an odd interaction between the Pharo client and 
your keyboard mappings and /or os ...  It would be helpful if I could 
somehow get the codepoint for the bad "^" character and then perhaps I 
could map that character to the correct one ... or ??? I am not really 
familiar with keyboard mappings, but I have seen Richard struggle with 
keyboard mapping issues --- perhaps together Richard and I can reproduce 
this problem --- if you get anymore information, please add any 
additional info to the new issue I've created[7].

[7] https://github.com/dalehenrich/tode/issues/266
> I created several methods and then I noticed, that the method-list 
> window does no get updated. Press on the "protocol" entry and you get 
> an update of that list.
Ah, I have deferred automatic updates because I want to come up with a 
solution that does not cause an inordinate amount of network traffic on 
updates (the fatal issue for GemTools). I've had a couple of ideas over 
time that might be able to provide updates without incurring nasty 
network overhead ... but it is time to get serious about coming up with 
a solution[8]

[8] https://github.com/dalehenrich/tode/issues/264
> Some other strange things: change from instance to class or back, 
> select any other class - the source code of the last method stays 
> there. Strange.
This is actually a feature ... When you switch "change from instance to 
class or back, select any other class" the expected behavior is to clear 
the method pane, correct? But what is the use of that? You just get a 
big empty pane in the middle of the screen and lose the method that *you 
were looking at* ... I agree that this is a bit disconcerting and takes 
a bit of time to get used to, but I find this feature very useful ...

With that said, I suppose it wouldn't hurt to add an option to clear the 
method pane when clicking around in the class browser[9]. If you have 
comments pro or con, let'sm ake them in the context of the issue[9].

[9] https://github.com/dalehenrich/tode/issues/265
> *Summary*
> Above is a pretty simple workflow - Iwrote this eMail while doing the 
> work in tODE. Perhaps I assumed too much from other IDEs and even 
> Smalltalk IDEs - but there were many situations, where the workflow 
> did not work as I would expect (and I even did not reach the git area).
I appreciate your effort and I've tagged all of the issues I've opened 
as "must have"[10] as a means of prioritizing things --- I expect to 
address the easier issues immediately while some of the others may take 
some time ... If there are issues that you deem more important than 
others please let me know ...

> For one posting this should be enough. Next I want to work-out how to 
> solve these problems:
> * How to I get a browser like the "Application Browser" (in 
> VASmalltalk) which shows me (in a Smalltalk browser) the definitions 
> and extensions of a package in a useable way. That's the main point 
> I'm missing in Pharo/Squeak/Jade.
I'm not familiar with the "Application Browser" could you point me at 
documentation or otherwise describe in a bit more detail what features 
are missing - Perhaps open a new issue[11] against tODE with this 
information? I'm very interested in adding new and useful tools to tODE...

[11] https://github.com/dalehenrich/tode/issues/new
> * tODE creates a local GIT repository. How can I put/synchronize with 
> an external GIT repository on my local server. This seems to be more a 
> GIT problem - but actually
take a look at the `git remote` command ... it allows you to assign a 
name to each external git repo and then you can use fetch, push, merge, 
etc.to/from this external repo
> * How can I add already defined classed to a package/project I newly 
> created to swap from pure Monticello packages to git based repository.
All that you need to do is to copy the package from the mcz repository 
into a filetree repository on your git repository. From the tODE command 
line you would do something like the following:

   mc copy  FooBar-Core-dkh.2 

or from the GUI:
   - use `mr list` to open a window on the repositories in you image
   - select the source monitcello repository ( 
   - use the 'packages' menu item to open a window on the packages in 
the repository
   - select the package that you want to copy  (FooBar-Core) in the 
packages window to open a versions window
   - select the package version that you want to copy 
(FooBar-Core-dkh.2) and then use the `copy to repository' menu item to 
select the target repo (filetree://$GS_HOME/shared/repos/FooBar/repository)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20160521/e2f952a7/attachment-0001.html>

More information about the Glass mailing list