[Cuis] Thoughts on workflow
Juan Vuletich
juan at jvuletich.org
Mon Dec 31 06:34:05 CST 2012
Hi Casey,
(below)
Casey Ransberger wrote:
> Below.
>
> On Dec 30, 2012, at 6:20 PM, Juan Vuletich <juan at jvuletich.org> wrote:
>
>
>> Hi Casey,
>>
>> Casey Ransberger wrote:
>>
>>> Not saving the image totally makes sense when working on a shared artifact, but it doesn't suit my solo development style. Sometimes I work on things for a long time before sharing them, and being able to keep my work context alive is one of the reasons I love working with Smalltalk.
>>>
>> I understand. I want to support that style too.
>>
>>
>>> The warning every time I make a change to a method or class that's *not* a core part of Cuis seems a little bit much to me. Here's a thought: why not keep a #(registry of classes) which belong to the core, and warn about a save only in that case? I love being able to use git, but I'm not super sure I like being forced into it all the time:/
>>>
>>> --
>>> Casey Ransberger
>>>
>> Ok. I guess you refer to the warnings you get when you save the image, right? I guess you're ok with the warnings when quitting without saving, as they prevent you from the need to go to the .changes log file to recover your work.
>>
>> When saving the image, you get a warning about unsaved packages and another one about unsaved changes to Cuis core (i.e. changes that don't belong in any package). Their purpose is _not_ to force you to use Git, just to remind you that saving them is good practice...
>>
>> The warning about changes that don't belong in a package is perhaps the most important. Those change sets are zapped at image save, so you might forget about them, and maybe never publish them, or save them to be loaded on another image...
>>
>> The warning about unsaved packages is less important: you can save the packages on next image start, or anytime you prefer. For this warning, a possible solution would be to ask if to suppress it in the future. Or we can even remove it, after all, it is important when you quit _without_ save.
>>
>> What do you think?
>>
>
> Forgive me if this is a bit daft, but why do the change sets have to get zapped on save? It seems like I'd want to keep them going until I was ready to commit them. Part of the problem, I think, is that I'm not completely understanding what motivates some of the design decisions involved.
>
> Casey
>
Well, this new way of handling code in Cuis is still young, and only
starting to get broader feedback. Nothing of this is carved on stone! We
need to evolve it. Besides, it seems I didn't publicize enough
http://jvuletich.org/Cuis/CodeManagementInCuis4.html and
http://jvuletich.org/Cuis/CuisAndGitHub.html . The first one is what I
had in my head when I did Packages and the new behavior of ChangeSets.
The second one are my initial thoughts on using GitHub to host packages.
Please read them, especially CodeManagementInCuis4. The main motivation
for all this is that working with ChangeSets as they used to behave (and
still do in Squeak and others) is a PITA. It was quite common to lose
changes, contaminate one change set with stuff from the other, etc.
So, now, the main idea is that regular change sets are used only for
updating the base image, and they form a sequence (the update stream).
Stuff that doesn't belong there is better stored in some package. This
is a key idea. If you fight it, then all the rest won't make sense. If
you really want to keep using change sets for stuff that will never be
part of an update stream, then we need to discuss the use case, and find
a way to support it (or decide to abandon it!).
(There are other 'automatic' change sets for the changes you do to each
package, and others that record what happens when you install a package.
You can usually just ignore them.)
In particular, when you save the image, the change sets with stuff for
the base image are removed. My thinking here is that when you are
working on them, the result of that work is not an updated image, but a
sequence of change sets. This works quite well, as it eases producing an
"update stream" that can be used to update other images or for
publication. The idea is that when you save the image, those change sets
become part of it, you no longer need them as a separate entity. See
that the first option of the right click menu in the Change Sorter is
"file out and remove". It is the same thing. When you are done with some
changes to the base image, you save the change set, and start a new
change set for what follows. This means that there is usually one single
change set in existence that captures changes to the base image. This
means there's no way for change sets to get mangled! And this almost
enforces the change sets to form a sequence (an ordered list).
To keep the discussion concrete, please give some thought to all this
(especially CodeManagementInCuis4.html), and then describe your use case
telling what goes into packages and what goes into change sets, at what
times you save them, and if you save the image and when.
It will require some effort, but the result will be polishing our
procedures and tools.
Cheers,
Juan Vuletich
More information about the Cuis
mailing list