New source code subsystem

stéphane ducasse ducasse at iam.unibe.ch
Thu Jul 27 08:22:09 UTC 2006


> List,
>
> I put together what I think is relevant for a new source code  
> subsystem and, if I'm mistaken or have overlooked one of your  
> recent suggestions and/or requirements, please do not hesitate and  
> say so.
>
> What follows is not intended as a replacement for MC or SM, rather  
> the new subsystem should be as independent as possible. If you load  
> something with MC, the new subsystem can treat it like any other  
> contribution (more about contributions later).
>
> Trying to keep preliminaries as short as possible, we have as  
> organizational elements (for the sake of discussion): system  
> categories, classes, message categories and methods. The unit of  
> source code "entity" we consider to be a unit of change belongs to  
> one of these elements. We can add, replace, rename and delete. We  
> have not only methods, but also DoIt's (definitions,  
> organizational, etc) to take into account. And let's say that the  
> browser is our tool, just to keep it simple here.

I would really like to have a distinction between Doit and  
definition. Because this way we could build much clever tools. In VW  
classDef are not doit and you can eliminate doits when you want to do  
a replay all.

Do I understand correctly by saying that this would be a component  
that could be put between the sources/changes and MC for example.

> -------------------------------
>
> At the time an image is distributed, it is supposed to be in sync  
> (not necessarily *full* sync) with its respective source code  
> subsystem. So when you open a browser, all entities are colored  
> black on white, and my story begins.
>
> When you want to *observe* a certain area of the source code  
> subsytem, you put the respective entity (item from here on) onto  
> your watchlist (cmd+ if you like) from where the item gets the  
> color blue. After putting a class onto your watchlist you get all  
> its message categories and methods blue; un-watch those (sub)items  
> which are of no interest to you; etc for other organizational levels.
>
> When you do a *change* to a blue colored item, its new source is  
> contributed to the source code subsystem (from here on scs for  
> short) and the item is colored green in your browser. If later  
> somebody else contributes a change to the same blue item, it gets  
> the color yellow in both browsers.
>
> And if an entity you have in your image cannot be *matched* with  
> the scs, it is colored red.
>
> As is tradition, if you don't save your image before the next  
> crash, all this coloring information is lost, and you are back to  
> black and white. The scs does NOT know the state of your image.
>
> -------------------------------
>
> A contribution to the scs either has a predecessor or else it is  
> new (to the scs). Let's say three developers make contributions to  
> the same blue item, then we arrive at three branches (and the three  
> browsers color the respective item yellow). It is up to you to  
> accept one of these branches, but you are no forced to do so. An  
> accepted branch is colored green (it will turn yellow when the next  
> contribution relative to it arrives).
>
> -------------------------------
>
> By chasing the predecessor it is always possible to roll-back an  
> item (or a group of items), this is independent of the coloring I  
> used for illustration. The same "backwards" information is readily  
> available for analyzing the complete history of an item, including  
> all unaccepted branches.
>
> -------------------------------
>
> Doing this into the other direction (roll-forward) depends on which  
> branches where accepted. At any point in time, accepted branches  
> represent a "cut" in the scs.
>
> -------------------------------
>
> If you work alone on a project, you'll never see any yellow colored  
> item, unless you revert a change (because the dismissed becomes an  
> unaccepted branch). For people who are used to make small  
> incremental changes, a preference tells whether or not every change  
> is treated as a branch or else is to be consolidated until you do a  
> "big save" to the scs. The latter requires, I think, a local  
> buffering scs on your harddisk (or on your local area server).
>
> -------------------------------
>
> The amount of conversation between browser and scs is small, the  
> browser only has to ask for colors (one byte answer per item) for  
> those items it shows *and* which are on your watch list. But if you  
> want to see more (like, for example, all branches of an item), more  
> data will have to travel.
>
> -------------------------------
>
> It's now time for me to sit back and relax :-)
>
> /Klaus
>
>




More information about the Squeak-dev mailing list