Concretely who is willing to do something?
I said that I'm ready to help and now? else of course we can continue to send emails around.... Stef |
In reply to this post by Blake-5
Tim/Blake, Correct me if I am wrong, but the original was not about the people who were developing Squeak. It was about Squeak as such, not the good or bad will of the people who selflessly work on it. Criticism of Squeak is the issue that should be addressed and corrected or confirmed - and some of the contributions did just that. Ivan > -----Original Message-----
|
In reply to this post by Göran Krampe
Hi Goran,
I'd love to have such a tool! The only thing I'd like to stress is that in order to be usable by all the forks, it should not rely on too new or advanced features. And those requeriments should be well understood. For me to be able to use it, it should not require Monticello, Traits or any of the advanced browsers. If it turns out to be incompatible with Morphic 3.0 I'd be glad to adapt or rewrite the UI. Maybe other forks could have some other restrictions. For example, can Croquet run Morphic UIs (besides Tweak)? Cheers, Juan Vuletich www.jvuletich.org [hidden email] wrote: > Hi all! > > (long post, sorry!) > > Andreas Raab <[hidden email]> wrote: > >> Colin Putney wrote: >> >>> It's stated a bit harshly, but yeah, that sounds basically accurate. The >>> amazing thing is that, in spite of all that, Squeak is still such a >>> wonderful platform to work with. I do use Squeak in production, and >>> there are very few things I would trade it for. >>> >> Well, yes, but you can't deny that the guy's got a point. The >> frustration he's expressing is something that everyone has felt over the >> years. And while there are various plain invalid points in his post >> (like the fact that Squeak has bugs - I'm *shocked* to hear that of >> course and would have never started three products if I'd known that ;-) >> the main emerging point is valid: The lack of quality and maintenance. >> The problems he cites are all known, some of them even have fixes but >> there isn't enough traction in the community to make this all come >> > ... > >> together. And of course the forks don't exactly help because we still >> haven't figured out how to share code across the forks and consequently >> > > And Andreas continues to describe the problem that I have been thinking > a bit about during my vacation. > > Last night I wrote it up and intended to bounce it around "privately" > first on selected people, but reading this thread it is so inviting to > share the idea so what the hell :) Forgive me if this post is long - but > I want to paint my picture as best I can. > > IMO these are our major problems today (we have lots of minor ones too > and the problems intermix): > > 1. More or less anarchy when it comes to leadership of Squeak-dev. The > board is not taking charge, for a whole range of possible reasons. One > obvious reason is that the guys elected are really good developers who > tend to be very busy. Another reason may be that we have different > expectations on what they should/could be doing. IMPORTANT: I am *not* > placing any blame though - we are all in this together. > > 2. We are now "de facto" living in a highly forked world (Croquet, > Sophie, Squeak-dev, Spoon, Squeakland, OLPC, yaddayadda...) but we don't > have tools that support such a world! > > 3. The core Squeak is not evolving properly mainly due to the fact that > most of the core codebase is "abandoned" - or in other words, noone > feels responsible and/or authoritive to bring it forward. > > In short we have "leadership paralysis", a "forked world" and a largely > "abandoned core". Other problems I missed? Of course! ...but lets ignore > those for this post. > > > Considering a few measures then: > > - Make a new fork with a strong leadership? Hmmm, could help with #1 and > #3 above but does nothing to improve #2 and would probably be tons of > work to succeed, and I personally don't have the required time to spend. > Plus I am a hard core "squeak-dev" member - I don't *want* to fork. :) > > - Reshape the organisation of Squeak-dev? Nah, I am sick and tired of > pulling such work, done just too much of that stuff already over the > years, and it would possibly help with #1 and #3 (strong leadership) but > again would not help at all with #2. > > So ok, forking is out and reshaping the organisation from the inside is > out, even though I really would want much more initiative from the board > in the future - no doubt about that. > > > Hmmm. But what could be done then? Well, after seeing over and over > again how really good TOOLS can change the way we interact in our > community (Monticello, SqueakMap, SqueakSource, Universes etc) I tried > to imagine a new infrastructure that would help with the three problems > above, in a *natural* way. > > Let's look at #1 - the anarchy problem. If we don't try to solve it but > instead try to *live with it* - what could that mean? The piece that > suffers mostly from the anarchy is of course the base image. All our > external packages prosper just fine anyway (kinda). So could we put some > kind of "supertool" in place to maintain the base image that could be > made to work *without* strong leadership? I think we can. > > What about #2 - the forking problem? Well, imagine this "supertool" > being written in such a way that it can be used in all major forks - if > its good and easy to adapt/install it would most probably also *be* > used. Monticello has already showed this can be done. > > So instead of trying *not* to fork, we try to make it very easy to fork > - or rather *easy to live* in a forked world of Squeak > images/communities. > > But #3 - the rotting core problem? Again, if it was very easy to fix > stuff in the core, publish these changes without having to ask anyone > for permission and very easy to cherry-pick such fixes from other people > - then hopefully the core would again start moving forward. As Andreas > notes - fixes are sitting inside Croquet and my bet is that they are > mainly sitting there because it is a bit "too much work" to push them > out. I am aware of fixes sitting in Gjallar (at least a few) just > because I didn't feel I had time to fix/prepare them sufficiently etc. > > > So my "daft" idea is: > > Let's pull together a good team and make a Supertool that is written to > be used in all forks that... well, what will it actually *do*? :) > > > 1. Introduce a new kind of source unit - let's call it a Delta. The guys > working with MC2/Monticello may have lots of noteworthy stuff to share > about how this kind of thing could look, but I simply want a "changeset" > for the 21st century. A patch. But a smarter one! The philosophy here > being that changesets are nice given their simplicity and malleability - > but they are not so nice in many other respects. But the concept of > communicating with other developers using the natural "work unit" - a > "commit" - is quite nice. In MC at least I tend to make too large > snapshots because let's face it - MC is too slow for small commits - > given how it works. We just don't suffer because it is so darn slick at > merging :) > > 2. Create the notion of "delta streams". Yes, we had the update stream > earlier - a sequential flow of changesets. It was kinda nifty, but > imagine having tons of these streams originating both from larger > cooperative projects (Croquet, Sophie, Seaside, Gjallar etc) and from > individual developers ("Andreas Raab's kernel fixes", "Juan's > refactorings of Morphic" etc). A Delta could appear in several streams > so Croquet could have a single stream for each release AND multiple > streams for different kinds of Deltas, like "base image fixes for > Hedgehog" etc). > > 3. Make an efficient but simple storage model for deltas and delta > streams. Here I am thinking KISS. If a delta could be represented as a > single gzipped file (enabling dumb servers just like MC does) and a > stream can be represented by file naming conventions (by a number > suffix) - then a stream is just a directory or a zip of a bunch of delta > files. Yes, very similar to gzipped changesets and the update stream. :) > This enables us to use all "vanilla" tools available for dealing with > files (http servers, ftp, rsync, email etc). > > 4. Make a simple but efficient transport. Let's say we set up a public > server that syncs such directories of delta files (streams) from tons of > places. And then offers it to all of us as a simple rsync. Each > developer (or team) could then use rsync to mirror that mega tree of > delta files onto our laptops/servers and the tool inside Squeak would > just need to bother with reading the local filesystem - which makes it > much more portable across Squeak dialects (and possibly even Smalltalk > dialects - but let's not go there just yet). This also means we don't > suffer from servers being down. > > 4. Make a simple model of Delta and DeltaStream in Squeak and let it > mirror the filesystem. Add a simple API to the model á la Keith's > Installer. Or hey, just enable Installer work with this model. > > 5. Make a great Morphic tool to work with them. Perhaps we could even > rework the changesorter family of tools thus superceding changesets? > > > Ok, imagine this supertool in your image. Imagine that all public > streams are listed directly in the tool and new ones just "pop up" as > they are added. Imagine that you can add your own private streams just > like you can add repositories to sources.list in apt-get (you Debian > people know what I mean). You can have purely private local streams on > your harddrive or streams on a shared fileserver in your company/dev > group, etc. > > Now you have this huge flood of Deltas in hundreds of streams at your > fingertips. How would you use it? > > 1. Subscribe to some major streams and configure it to automatically > load deltas whenever they appear when you press "update". > > 2. Set some rules that govern if the tool should just try to load - or > ask for confirmation based on characteristics of the delta. > > 3. Autosubscribe to categories of streams. For example, if a new bug-fix > stream appears for a package you use a lot - you might want to get it > autosusbcribed - or again, have the tool ask you. > > 4. Of course, easily publish your own streams. We are talking single > button, no getting permissions etc. > > 5. Push fixes to other people's packages as deltas onto a personal > public fixes-stream. This means it does not matter what package you are > bug fixing - you can *always* push the fix to your personal public > fixes-stream and don't need to bother with getting permissions on > SqueakSource or wherever it came from. This is a very IMPORTANT feature > and should hopefully put an end to "lost fixes" or "fixes sitting inside > images". > > We have too many fixes out there that just never get published because > of the "hassle", and sure, someone says "it is very easy to upload to > Mantis!" - but fixes on Mantis sets expectations on quality, > documentation, follow up etc. A personal fixes stream like above sets no > such expectations - it is there for the taking - but that is all. > > 6. Pull deltas. Selective cherry picking etc. > > > Important features of Deltas: > > - Atomic load of a Delta. Either it loads cleanly or it does not load at > all, and it ensures this by checking FIRST that everything is in place > for it to be able to apply cleanly. This should prevent "failed loads" > and broken images. The actual low level atomicity is another story but > SystemEditor from MC2 perhaps? I dunno. > > - Revertable, if *possible*. A delta can be analyzed to see if it is > revertable. If it includes doits or class initializations it is in > theory not revertable, it may be in practice though! It can also be > marked as DefinitelyNonRevertable. > > - A Delta is declarative. Another class should be responsible for > actually applying them. > > - When a Delta is applied to an image we generate a reverse Delta which > (when applied) will reverse the effects. Since the image may be in > different states this reverse Delta needs to be constructed when the > Delta is applied! > > > A Delta contains: > > - A Preamble similar to ChangeSets with info fields > - Developer (name, id, signature etc whatever) > - Original stream (URL) > - UUID > - DefinitelyNotRevertable flag > - Test doit (a non destructive, non interactive doit that should throw > an exception in order to prevent loading!) > - An ordered sequence of Actions, see below. > > An example list of different types of Actions are: > > - Change method (class name, old method src, new method src) > - Add method (class name, method src, category name) > - Remove method (class name, method src, category name) > - Categorize method (class name, method name, old category name, new > category name) > > - Create class (class name, super class name, definition, category) > - Delete class (class name) > - Change superclass of class (class name, old super class name, new > super class name) > - Rename class (old class name, new class name) > - Categorize class (class name, old category name, new category name) > - Change definition (class name, new definition, old definition) > - Class comment change (new comment, old comment) > > - Class initialization > - Doit (marked as revertable or not by author!) > > Note how these Actions contain "more" info than a ChangeSet - it > contains information about what it was "before" in the image it > originates from! The idea is to make Deltas "rich" with info so that we > can apply them with more smarts. > > When applied to an image the Delta is copied to a directory with the > same name as the image followed by "-applied-deltas". It is also logged > in changesfile. If the Delta can not be cleanly reverted (based solely > on its own contents) we generate reverse Deltas and store them in the > same directory prefixed with "reverse-". > > Applying a Delta: > > 1. Verify that it can be applied (or signal CanNotApplyException). Do > this by analyzing Actions and running any Test and see if it throws an > Exception. > - It can not be applied *cleanly* if something is "different" from > expected. > - It can be applied *dirty* if all changes can be applied in "some > fashion". For example, a delete operation and the thing to delete is > already deleted. The reverse Delta will then show this so that a revert > will not put the thing back in. > - It can be applied *partially* if just a subset of Actions are applied > (by choice or since some just can't be applied). The reverse Delta will > then show what was applied or not. > > 2. Verify that it can be reverted cleanly (or signal > CanNotRevertCleanlyException). Do this by analyzing Actions. > > 3. Apply and generate the reverse Delta if needed. > > 4. Copy delta and any reverse delta to applied dir. > > 5. Log to changes file. > > 6. Report package touched (for running unit tests afterward!) > > > What about merging then? Well, the concept here is to be much more > "loose" when it comes to merging compared to say MC. It was inspired by > something I read about git (Linus' SCM tool) - it doesn't try to be > smart - it just tries to do the right thing when it is obvious. In other > situations it just asks the developer. I think I like this approach. The > Delta model should be easy enough for all developers to understand. It > is "just" a changeset/patch after all. > > So if I am trying to apply a Delta (or several) and the "before state" > is not as the Delta expects - we can either cop out, or let it be > "smart", or just ask the user to decide what to do. BUT... I am not an > SCM implementor - the MC/MC2 guys can clearly explain to me why/how this > will not work or amend the idea so that it can work. I gladly admit my > ignorance. ;) > > > ...ok, enough blabbering. :) Does this sound plausible, useful or just > plain dumb? Is MC2 already this and much more? > > ciao, Göran > > > |
In reply to this post by Ivan Tomek
Hi Ivan-- > Correct me if I am wrong, but the original was not about the people > who were developing Squeak. It was about Squeak as such, not the good > or bad will of the people who selflessly work on it. Actually, I think the comment that "the maintainer of the main VM code publically stated he will do shit unless someone pays him" is pretty clearly a personal attack. -C -- Craig Latta improvisational musical informaticist www.netjam.org Smalltalkers do: [:it | All with: Class, (And love: it)] |
Hi Craig,
You are right; I didn't have the text in front of me and remembered only the part. Although I still think that Squeak was the main point, I stand corrected and understand the feelings expressed in the reactions. Ivan -----Original Message----- From: [hidden email] [mailto:[hidden email]] On Behalf Of Craig Latta Sent: Monday, August 13, 2007 4:15 PM To: [hidden email] Subject: re: that zany blogosphere thing Hi Ivan-- > Correct me if I am wrong, but the original was not about the people > who were developing Squeak. It was about Squeak as such, not the good > or bad will of the people who selflessly work on it. Actually, I think the comment that "the maintainer of the main VM code publically stated he will do shit unless someone pays him" is pretty clearly a personal attack. -C -- Craig Latta improvisational musical informaticist www.netjam.org Smalltalkers do: [:it | All with: Class, (And love: it)] |
In reply to this post by Edgar J. De Cleene
Actually I thought we were already working on this Edgar. :)
On 8/13/07, Edgar J. De Cleene <[hidden email]> wrote: > > > > El 8/13/07 5:47 AM, "[hidden email]" <[hidden email]> escribió: > > > Hi all! > > > > (long post, sorry!) > > Gorän: > I cut you post for not doing more long. > I read and re-read carefully and you put very clear my own in the works > ideas about the problems you describe and give a possible solution. > > Only I wish you know I ready for work with you or any masters joining to the > Supertool quest. > > Awaiting orders ! > > Cheers. > > Edgar > > > > |
In reply to this post by ccrraaiigg
At some point during the election I made a joke of the gazillion dollar
comments. I did that because I thought it was funny, and never did I believe that it was a serious comment. I do think that we could use more corporate sponsorship and would like to see some contributors paid for their work. (We do see that now with some of the development in Croquet, Sophie and OLPC ...) If I added to the fire by my joke and if anyone took that as serious criticism I apologize. We have a terrific community and our members deserve many accolades to go with the gazillion dollars I wish we had to show our thanks. Ron Teitelbaum > -----Original Message----- > From: Craig Latta > > > Hi Ivan-- > > > Correct me if I am wrong, but the original was not about the people > > who were developing Squeak. It was about Squeak as such, not the good > > or bad will of the people who selflessly work on it. > > Actually, I think the comment that "the maintainer of the main VM > code publically stated he will do shit unless someone pays him" is > pretty clearly a personal attack. > > > -C > > -- > Craig Latta > improvisational musical informaticist > www.netjam.org > Smalltalkers do: [:it | All with: Class, (And love: it)] > |
Hi Ron-- I think your comments were fine (for what it's worth). And that blogger could have said something very similar and constructive without being offensive... it was the use of obscenity that was the dead giveaway. :) -C -- Craig Latta improvisational musical informaticist www.netjam.org Smalltalkers do: [:it | All with: Class, (And love: it)] |
In reply to this post by Juan Vuletich-4
I would urge people thinking about this to look at Darcs [1], [2].
Now, there are 2 things about Darcs that make it nice: (1) cherry picking and (2) smart dependency mapping. Smalltalk already has 1 (almost) by way of the change sorter. And keep in mind that it can have 2 better then Darcs can because we can ask our system things Darcs can't because it has to work for things it doesn't understand. The problem we have with MC imo is that it tries to be a bit too smart. A system can be viewed (as Darcs does) as the sum of applying all it's patches. When taking this view, coupled with a good dependency system it is easy for the system to figure out what patches "stand alone" (e.g. bug fixes). [1] http://darcs.net/ [2] http://wiki.darcs.net/DarcsWiki/WhyYouWantPatchTheory On 8/13/07, Juan Vuletich <[hidden email]> wrote: > Hi Goran, > > I'd love to have such a tool! The only thing I'd like to stress is that > in order to be usable by all the forks, it should not rely on too new or > advanced features. And those requeriments should be well understood. For > me to be able to use it, it should not require Monticello, Traits or any > of the advanced browsers. If it turns out to be incompatible with > Morphic 3.0 I'd be glad to adapt or rewrite the UI. > > Maybe other forks could have some other restrictions. For example, can > Croquet run Morphic UIs (besides Tweak)? > > Cheers, > Juan Vuletich > www.jvuletich.org > > [hidden email] wrote: > > Hi all! > > > > (long post, sorry!) > > > > Andreas Raab <[hidden email]> wrote: > > > >> Colin Putney wrote: > >> > >>> It's stated a bit harshly, but yeah, that sounds basically accurate. The > >>> amazing thing is that, in spite of all that, Squeak is still such a > >>> wonderful platform to work with. I do use Squeak in production, and > >>> there are very few things I would trade it for. > >>> > >> Well, yes, but you can't deny that the guy's got a point. The > >> frustration he's expressing is something that everyone has felt over the > >> years. And while there are various plain invalid points in his post > >> (like the fact that Squeak has bugs - I'm *shocked* to hear that of > >> course and would have never started three products if I'd known that ;-) > >> the main emerging point is valid: The lack of quality and maintenance. > >> The problems he cites are all known, some of them even have fixes but > >> there isn't enough traction in the community to make this all come > >> > > ... > > > >> together. And of course the forks don't exactly help because we still > >> haven't figured out how to share code across the forks and consequently > >> > > > > And Andreas continues to describe the problem that I have been thinking > > a bit about during my vacation. > > > > Last night I wrote it up and intended to bounce it around "privately" > > first on selected people, but reading this thread it is so inviting to > > share the idea so what the hell :) Forgive me if this post is long - but > > I want to paint my picture as best I can. > > > > IMO these are our major problems today (we have lots of minor ones too > > and the problems intermix): > > > > 1. More or less anarchy when it comes to leadership of Squeak-dev. The > > board is not taking charge, for a whole range of possible reasons. One > > obvious reason is that the guys elected are really good developers who > > tend to be very busy. Another reason may be that we have different > > expectations on what they should/could be doing. IMPORTANT: I am *not* > > placing any blame though - we are all in this together. > > > > 2. We are now "de facto" living in a highly forked world (Croquet, > > Sophie, Squeak-dev, Spoon, Squeakland, OLPC, yaddayadda...) but we don't > > have tools that support such a world! > > > > 3. The core Squeak is not evolving properly mainly due to the fact that > > most of the core codebase is "abandoned" - or in other words, noone > > feels responsible and/or authoritive to bring it forward. > > > > In short we have "leadership paralysis", a "forked world" and a largely > > "abandoned core". Other problems I missed? Of course! ...but lets ignore > > those for this post. > > > > > > Considering a few measures then: > > > > - Make a new fork with a strong leadership? Hmmm, could help with #1 and > > #3 above but does nothing to improve #2 and would probably be tons of > > work to succeed, and I personally don't have the required time to spend. > > Plus I am a hard core "squeak-dev" member - I don't *want* to fork. :) > > > > - Reshape the organisation of Squeak-dev? Nah, I am sick and tired of > > pulling such work, done just too much of that stuff already over the > > years, and it would possibly help with #1 and #3 (strong leadership) but > > again would not help at all with #2. > > > > So ok, forking is out and reshaping the organisation from the inside is > > out, even though I really would want much more initiative from the board > > in the future - no doubt about that. > > > > > > Hmmm. But what could be done then? Well, after seeing over and over > > again how really good TOOLS can change the way we interact in our > > community (Monticello, SqueakMap, SqueakSource, Universes etc) I tried > > to imagine a new infrastructure that would help with the three problems > > above, in a *natural* way. > > > > Let's look at #1 - the anarchy problem. If we don't try to solve it but > > instead try to *live with it* - what could that mean? The piece that > > suffers mostly from the anarchy is of course the base image. All our > > external packages prosper just fine anyway (kinda). So could we put some > > kind of "supertool" in place to maintain the base image that could be > > made to work *without* strong leadership? I think we can. > > > > What about #2 - the forking problem? Well, imagine this "supertool" > > being written in such a way that it can be used in all major forks - if > > its good and easy to adapt/install it would most probably also *be* > > used. Monticello has already showed this can be done. > > > > So instead of trying *not* to fork, we try to make it very easy to fork > > - or rather *easy to live* in a forked world of Squeak > > images/communities. > > > > But #3 - the rotting core problem? Again, if it was very easy to fix > > stuff in the core, publish these changes without having to ask anyone > > for permission and very easy to cherry-pick such fixes from other people > > - then hopefully the core would again start moving forward. As Andreas > > notes - fixes are sitting inside Croquet and my bet is that they are > > mainly sitting there because it is a bit "too much work" to push them > > out. I am aware of fixes sitting in Gjallar (at least a few) just > > because I didn't feel I had time to fix/prepare them sufficiently etc. > > > > > > So my "daft" idea is: > > > > Let's pull together a good team and make a Supertool that is written to > > be used in all forks that... well, what will it actually *do*? :) > > > > > > 1. Introduce a new kind of source unit - let's call it a Delta. The guys > > working with MC2/Monticello may have lots of noteworthy stuff to share > > about how this kind of thing could look, but I simply want a "changeset" > > for the 21st century. A patch. But a smarter one! The philosophy here > > being that changesets are nice given their simplicity and malleability - > > but they are not so nice in many other respects. But the concept of > > communicating with other developers using the natural "work unit" - a > > "commit" - is quite nice. In MC at least I tend to make too large > > snapshots because let's face it - MC is too slow for small commits - > > given how it works. We just don't suffer because it is so darn slick at > > merging :) > > > > 2. Create the notion of "delta streams". Yes, we had the update stream > > earlier - a sequential flow of changesets. It was kinda nifty, but > > imagine having tons of these streams originating both from larger > > cooperative projects (Croquet, Sophie, Seaside, Gjallar etc) and from > > individual developers ("Andreas Raab's kernel fixes", "Juan's > > refactorings of Morphic" etc). A Delta could appear in several streams > > so Croquet could have a single stream for each release AND multiple > > streams for different kinds of Deltas, like "base image fixes for > > Hedgehog" etc). > > > > 3. Make an efficient but simple storage model for deltas and delta > > streams. Here I am thinking KISS. If a delta could be represented as a > > single gzipped file (enabling dumb servers just like MC does) and a > > stream can be represented by file naming conventions (by a number > > suffix) - then a stream is just a directory or a zip of a bunch of delta > > files. Yes, very similar to gzipped changesets and the update stream. :) > > This enables us to use all "vanilla" tools available for dealing with > > files (http servers, ftp, rsync, email etc). > > > > 4. Make a simple but efficient transport. Let's say we set up a public > > server that syncs such directories of delta files (streams) from tons of > > places. And then offers it to all of us as a simple rsync. Each > > developer (or team) could then use rsync to mirror that mega tree of > > delta files onto our laptops/servers and the tool inside Squeak would > > just need to bother with reading the local filesystem - which makes it > > much more portable across Squeak dialects (and possibly even Smalltalk > > dialects - but let's not go there just yet). This also means we don't > > suffer from servers being down. > > > > 4. Make a simple model of Delta and DeltaStream in Squeak and let it > > mirror the filesystem. Add a simple API to the model á la Keith's > > Installer. Or hey, just enable Installer work with this model. > > > > 5. Make a great Morphic tool to work with them. Perhaps we could even > > rework the changesorter family of tools thus superceding changesets? > > > > > > Ok, imagine this supertool in your image. Imagine that all public > > streams are listed directly in the tool and new ones just "pop up" as > > they are added. Imagine that you can add your own private streams just > > like you can add repositories to sources.list in apt-get (you Debian > > people know what I mean). You can have purely private local streams on > > your harddrive or streams on a shared fileserver in your company/dev > > group, etc. > > > > Now you have this huge flood of Deltas in hundreds of streams at your > > fingertips. How would you use it? > > > > 1. Subscribe to some major streams and configure it to automatically > > load deltas whenever they appear when you press "update". > > > > 2. Set some rules that govern if the tool should just try to load - or > > ask for confirmation based on characteristics of the delta. > > > > 3. Autosubscribe to categories of streams. For example, if a new bug-fix > > stream appears for a package you use a lot - you might want to get it > > autosusbcribed - or again, have the tool ask you. > > > > 4. Of course, easily publish your own streams. We are talking single > > button, no getting permissions etc. > > > > 5. Push fixes to other people's packages as deltas onto a personal > > public fixes-stream. This means it does not matter what package you are > > bug fixing - you can *always* push the fix to your personal public > > fixes-stream and don't need to bother with getting permissions on > > SqueakSource or wherever it came from. This is a very IMPORTANT feature > > and should hopefully put an end to "lost fixes" or "fixes sitting inside > > images". > > > > We have too many fixes out there that just never get published because > > of the "hassle", and sure, someone says "it is very easy to upload to > > Mantis!" - but fixes on Mantis sets expectations on quality, > > documentation, follow up etc. A personal fixes stream like above sets no > > such expectations - it is there for the taking - but that is all. > > > > 6. Pull deltas. Selective cherry picking etc. > > > > > > Important features of Deltas: > > > > - Atomic load of a Delta. Either it loads cleanly or it does not load at > > all, and it ensures this by checking FIRST that everything is in place > > for it to be able to apply cleanly. This should prevent "failed loads" > > and broken images. The actual low level atomicity is another story but > > SystemEditor from MC2 perhaps? I dunno. > > > > - Revertable, if *possible*. A delta can be analyzed to see if it is > > revertable. If it includes doits or class initializations it is in > > theory not revertable, it may be in practice though! It can also be > > marked as DefinitelyNonRevertable. > > > > - A Delta is declarative. Another class should be responsible for > > actually applying them. > > > > - When a Delta is applied to an image we generate a reverse Delta which > > (when applied) will reverse the effects. Since the image may be in > > different states this reverse Delta needs to be constructed when the > > Delta is applied! > > > > > > A Delta contains: > > > > - A Preamble similar to ChangeSets with info fields > > - Developer (name, id, signature etc whatever) > > - Original stream (URL) > > - UUID > > - DefinitelyNotRevertable flag > > - Test doit (a non destructive, non interactive doit that should throw > > an exception in order to prevent loading!) > > - An ordered sequence of Actions, see below. > > > > An example list of different types of Actions are: > > > > - Change method (class name, old method src, new method src) > > - Add method (class name, method src, category name) > > - Remove method (class name, method src, category name) > > - Categorize method (class name, method name, old category name, new > > category name) > > > > - Create class (class name, super class name, definition, category) > > - Delete class (class name) > > - Change superclass of class (class name, old super class name, new > > super class name) > > - Rename class (old class name, new class name) > > - Categorize class (class name, old category name, new category name) > > - Change definition (class name, new definition, old definition) > > - Class comment change (new comment, old comment) > > > > - Class initialization > > - Doit (marked as revertable or not by author!) > > > > Note how these Actions contain "more" info than a ChangeSet - it > > contains information about what it was "before" in the image it > > originates from! The idea is to make Deltas "rich" with info so that we > > can apply them with more smarts. > > > > When applied to an image the Delta is copied to a directory with the > > same name as the image followed by "-applied-deltas". It is also logged > > in changesfile. If the Delta can not be cleanly reverted (based solely > > on its own contents) we generate reverse Deltas and store them in the > > same directory prefixed with "reverse-". > > > > Applying a Delta: > > > > 1. Verify that it can be applied (or signal CanNotApplyException). Do > > this by analyzing Actions and running any Test and see if it throws an > > Exception. > > - It can not be applied *cleanly* if something is "different" from > > expected. > > - It can be applied *dirty* if all changes can be applied in "some > > fashion". For example, a delete operation and the thing to delete is > > already deleted. The reverse Delta will then show this so that a revert > > will not put the thing back in. > > - It can be applied *partially* if just a subset of Actions are applied > > (by choice or since some just can't be applied). The reverse Delta will > > then show what was applied or not. > > > > 2. Verify that it can be reverted cleanly (or signal > > CanNotRevertCleanlyException). Do this by analyzing Actions. > > > > 3. Apply and generate the reverse Delta if needed. > > > > 4. Copy delta and any reverse delta to applied dir. > > > > 5. Log to changes file. > > > > 6. Report package touched (for running unit tests afterward!) > > > > > > What about merging then? Well, the concept here is to be much more > > "loose" when it comes to merging compared to say MC. It was inspired by > > something I read about git (Linus' SCM tool) - it doesn't try to be > > smart - it just tries to do the right thing when it is obvious. In other > > situations it just asks the developer. I think I like this approach. The > > Delta model should be easy enough for all developers to understand. It > > is "just" a changeset/patch after all. > > > > So if I am trying to apply a Delta (or several) and the "before state" > > is not as the Delta expects - we can either cop out, or let it be > > "smart", or just ask the user to decide what to do. BUT... I am not an > > SCM implementor - the MC/MC2 guys can clearly explain to me why/how this > > will not work or amend the idea so that it can work. I gladly admit my > > ignorance. ;) > > > > > > ...ok, enough blabbering. :) Does this sound plausible, useful or just > > plain dumb? Is MC2 already this and much more? > > > > ciao, Göran > > > > > > > > > |
In reply to this post by Jason Johnson-5
El 8/13/07 4:31 PM, "Jason Johnson" <[hidden email]> escribió: > Actually I thought we were already working on this Edgar. :) Yes, but don't tell. I have enormous respect for Goran and all win if he leads. Maybe you should contact he off list .... Very fun I trying to have 3.10 without Monticello , only with MCMczReader (maybe modifying) for people could load any flavor of Monticello they like. Or none... Edgar |
In reply to this post by Klaus D. Witzel
On 8/11/07, Klaus D. Witzel <[hidden email]> wrote:
> Hi Janko, > something exiting with Squeak :) Was that a Freudian slip? :) -bakki |
In reply to this post by Juan Vuletich-4
Juan Vuletich wrote:
> Hi Goran, > > I'd love to have such a tool! The only thing I'd like to stress is > that in order to be usable by all the forks, it should not rely on too > new or advanced features. And those requeriments should be well > understood. For me to be able to use it, it should not My immediate thoughts on this is that System Editor could be very useful for this tool. It is a standalone piece of code which models changes to the system, be it adding, removing methods instvars. When you have it populated you say #commit and it atomically loads the changes in. I also think that a populated SystemEditor instance would be capable of generating its equivalent undo-SystemEditor, before committing. Ok so it is new technology, but I think it could really give us what we are looking for, without re-writing something with method definitions, class definitions etc all over again. Keith |
In reply to this post by Göran Krampe
Göran,
I'm surprised with the lack of response to your post. Maybe people are letting it sink in. I think it's a great idea. FMPOV, the tool would be a clean way for the developer and user to accept bug fixes into his image. Why not make bug fixes easily available to everyone? It's also a nice way to put a method around all the fixes just lying there in various forms and places. And, it seems a nice way to update released images on ftp.squeak.org with proper fixes - at least the fairly new ones. The concept and high-level usage is a no-brainer. The tough part is getting it done. Since a lot of the work is creating the tool description, and you have a great handle on that already, I wouldn't be surprised if you've already started coding. brad |
Hi Brad,
It's not just sinking in that is an issue. I'm also considering the practical aspects. Also I'm not exactly sure how this all fits with Andreas' suggestion of managing packages outside the context of an official image. I can't help seeing the down side to all of this, and I wonder what the impact will be for those starting out with Squeak. The issue with too much freedom is that anyone is allowed to break things. We have enough trouble as it is with class clutter. Even I tried (unsuccessfully) to add to Collection. So let's say we go with this path and anyone can start a stream. How does a user decide which stream to use? If we have two very good streams (like Sophie and Croquet) which are changing classes in an incompatible way then someone's changes are still lost. I like the idea of making it easier for people to contribute. Our discussions earlier about commenting code is really hampered by how difficult it is to add comments and have those comments included somewhere. I like the idea of passing the streams or having stream managers, or something like that, so that there is one official stream per package. But of course this really just brings us back to squeak map and away from a change stream. I like Andreas' suggestion that we try to support standard packages for multiple images. So I guess I was no help but still we need to consider if we have a Ron's collection stream and nobody hears it does it still make a sound? How can we move from what we have now to a place where it is easy for someone to push quality changes or new code into production? Can we really support a free for all collection of change streams, or do we need to stick with standard packages? If we agree we need standard packages what do we gain from a change stream? Ron Teitelbaum > -----Original Message----- > From: Brad Fuller > > Göran, > > I'm surprised with the lack of response to your post. Maybe people are > letting > it sink in. I think it's a great idea. FMPOV, the tool would be a clean > way > for the developer and user to accept bug fixes into his image. Why not > make > bug fixes easily available to everyone? It's also a nice way to put a > method > around all the fixes just lying there in various forms and places. And, it > seems a nice way to update released images on ftp.squeak.org with proper > fixes - at least the fairly new ones. > > The concept and high-level usage is a no-brainer. The tough part is > getting it > done. Since a lot of the work is creating the tool description, and you > have > a great handle on that already, I wouldn't be surprised if you've already > started coding. > > brad |
On 14/08/07, Ron Teitelbaum <[hidden email]> wrote:
> Hi Brad, > > It's not just sinking in that is an issue. I'm also considering the > practical aspects. Also I'm not exactly sure how this all fits with > Andreas' suggestion of managing packages outside the context of an official > image. > > I can't help seeing the down side to all of this, and I wonder what the > impact will be for those starting out with Squeak. > > The issue with too much freedom is that anyone is allowed to break things. > We have enough trouble as it is with class clutter. Even I tried > (unsuccessfully) to add to Collection. > > So let's say we go with this path and anyone can start a stream. How does a > user decide which stream to use? If we have two very good streams (like > Sophie and Croquet) which are changing classes in an incompatible way then > someone's changes are still lost. > The only way then is to remove global system dictionary and make each package contain own set of globals. So, different versions of classes with same name can be used for different packages. I see no harm in this from VM point of view. From dev-s point of view we need to change dev-tools to support new global values semantics. A system dictionary is the root of many evil things. I wonder, how long the community stay victim of this concept, which totally not suitable for islands/forks development? A strong decision needed to get rid of it, but once we do this, then we freed from many current issues. -- Best regards, Igor Stasenko AKA sig. |
In reply to this post by Ron Teitelbaum
On 8/14/07, Ron Teitelbaum <[hidden email]> wrote:
> Hi Brad, > > The issue with too much freedom is that anyone is allowed to break things. > We have enough trouble as it is with class clutter. Even I tried > (unsuccessfully) to add to Collection. What changes did you make? (if you just want to point me to the thread about it, that's cool as well) Thanks, Jason |
In reply to this post by Göran Krampe
On Aug 13, 2007, at 1:47 AM, [hidden email] wrote: > ..ok, enough blabbering. :) Does this sound plausible, useful or just > plain dumb? Is MC2 already this and much more? I won't get into the details, because there's a lot to this proposal and I haven't fully absorbed it yet. I will say this though: MC2 is meant to be a versioning substrate that can accomodate several styles of collaboration on top of it. In it's current state, it (almost) provides that substrate, but there's nothing yet built on top of it. A more-efficient version of Monticello1 is one thing that could go on top of the substrate, but a better update-stream non-unlike what you describe is another thing that could be built on the same substrate. I'm a little wary of trying to create a technical solution to a social problem, but I think buy your theory that part of the problem is that it's too hard to cross-pollinate between Squeak distributions. I suspect that we want to end up more like the BSD world than Linux. The different distributions have separate code- bases, different foci and distinct communities. But ideas and code seem to flow between them pretty freely to the benefit of all. I need to think about this a bit more. Colin |
In reply to this post by Göran Krampe
Hi Goran -
I love it. Where do I sign up? I always thought that mixing the speed and versatility of change sets with a more structured approach like PIs and MC is ultimately the way to go. Couple of things I'd like to see: * Keeping it simple. You've already pointed that out but I'd like to emphasize it even more. It'll grow regardless as time goes by, so keeping it to the point initially is important. * Making it work with MC. I'm not sure what exactly that means but having a complete declarative versioned representation of source code is extremely useful. The goal would be that I can specify version x.y.z of something and have that be a well-defined set of code and meta-data. * Some tie-in with package/library versioning. The biggest problem with change sets is that they don't tie into any versioning mechanism other than the global image version (via update number). Being able to describe which deltas (version) I have and which one another person has will be important. (this problem may very well just be a slight reformulation of the previous point because it is also one of the advantages of MC) * Keeping it simple. In case I hadn't mentioned that before. Although I do think that a tool can't solve all the social problems around Squeak (in particular not the one about absence of direction) I think that such a tool would make the practical side of collaboration via cherry picking from delta streams a *lot* simpler. That alone would be worth it - if you've tried to go through 50 or so versions in Monticello you know what I mean ;-) Cheers, - Andreas [hidden email] wrote: > Hi all! > > (long post, sorry!) > > Andreas Raab <[hidden email]> wrote: >> Colin Putney wrote: >>> It's stated a bit harshly, but yeah, that sounds basically accurate. The >>> amazing thing is that, in spite of all that, Squeak is still such a >>> wonderful platform to work with. I do use Squeak in production, and >>> there are very few things I would trade it for. >> Well, yes, but you can't deny that the guy's got a point. The >> frustration he's expressing is something that everyone has felt over the >> years. And while there are various plain invalid points in his post >> (like the fact that Squeak has bugs - I'm *shocked* to hear that of >> course and would have never started three products if I'd known that ;-) >> the main emerging point is valid: The lack of quality and maintenance. >> The problems he cites are all known, some of them even have fixes but >> there isn't enough traction in the community to make this all come > ... >> together. And of course the forks don't exactly help because we still >> haven't figured out how to share code across the forks and consequently > > And Andreas continues to describe the problem that I have been thinking > a bit about during my vacation. > > Last night I wrote it up and intended to bounce it around "privately" > first on selected people, but reading this thread it is so inviting to > share the idea so what the hell :) Forgive me if this post is long - but > I want to paint my picture as best I can. > > IMO these are our major problems today (we have lots of minor ones too > and the problems intermix): > > 1. More or less anarchy when it comes to leadership of Squeak-dev. The > board is not taking charge, for a whole range of possible reasons. One > obvious reason is that the guys elected are really good developers who > tend to be very busy. Another reason may be that we have different > expectations on what they should/could be doing. IMPORTANT: I am *not* > placing any blame though - we are all in this together. > > 2. We are now "de facto" living in a highly forked world (Croquet, > Sophie, Squeak-dev, Spoon, Squeakland, OLPC, yaddayadda...) but we don't > have tools that support such a world! > > 3. The core Squeak is not evolving properly mainly due to the fact that > most of the core codebase is "abandoned" - or in other words, noone > feels responsible and/or authoritive to bring it forward. > > In short we have "leadership paralysis", a "forked world" and a largely > "abandoned core". Other problems I missed? Of course! ...but lets ignore > those for this post. > > > Considering a few measures then: > > - Make a new fork with a strong leadership? Hmmm, could help with #1 and > #3 above but does nothing to improve #2 and would probably be tons of > work to succeed, and I personally don't have the required time to spend. > Plus I am a hard core "squeak-dev" member - I don't *want* to fork. :) > > - Reshape the organisation of Squeak-dev? Nah, I am sick and tired of > pulling such work, done just too much of that stuff already over the > years, and it would possibly help with #1 and #3 (strong leadership) but > again would not help at all with #2. > > So ok, forking is out and reshaping the organisation from the inside is > out, even though I really would want much more initiative from the board > in the future - no doubt about that. > > > Hmmm. But what could be done then? Well, after seeing over and over > again how really good TOOLS can change the way we interact in our > community (Monticello, SqueakMap, SqueakSource, Universes etc) I tried > to imagine a new infrastructure that would help with the three problems > above, in a *natural* way. > > Let's look at #1 - the anarchy problem. If we don't try to solve it but > instead try to *live with it* - what could that mean? The piece that > suffers mostly from the anarchy is of course the base image. All our > external packages prosper just fine anyway (kinda). So could we put some > kind of "supertool" in place to maintain the base image that could be > made to work *without* strong leadership? I think we can. > > What about #2 - the forking problem? Well, imagine this "supertool" > being written in such a way that it can be used in all major forks - if > its good and easy to adapt/install it would most probably also *be* > used. Monticello has already showed this can be done. > > So instead of trying *not* to fork, we try to make it very easy to fork > - or rather *easy to live* in a forked world of Squeak > images/communities. > > But #3 - the rotting core problem? Again, if it was very easy to fix > stuff in the core, publish these changes without having to ask anyone > for permission and very easy to cherry-pick such fixes from other people > - then hopefully the core would again start moving forward. As Andreas > notes - fixes are sitting inside Croquet and my bet is that they are > mainly sitting there because it is a bit "too much work" to push them > out. I am aware of fixes sitting in Gjallar (at least a few) just > because I didn't feel I had time to fix/prepare them sufficiently etc. > > > So my "daft" idea is: > > Let's pull together a good team and make a Supertool that is written to > be used in all forks that... well, what will it actually *do*? :) > > > 1. Introduce a new kind of source unit - let's call it a Delta. The guys > working with MC2/Monticello may have lots of noteworthy stuff to share > about how this kind of thing could look, but I simply want a "changeset" > for the 21st century. A patch. But a smarter one! The philosophy here > being that changesets are nice given their simplicity and malleability - > but they are not so nice in many other respects. But the concept of > communicating with other developers using the natural "work unit" - a > "commit" - is quite nice. In MC at least I tend to make too large > snapshots because let's face it - MC is too slow for small commits - > given how it works. We just don't suffer because it is so darn slick at > merging :) > > 2. Create the notion of "delta streams". Yes, we had the update stream > earlier - a sequential flow of changesets. It was kinda nifty, but > imagine having tons of these streams originating both from larger > cooperative projects (Croquet, Sophie, Seaside, Gjallar etc) and from > individual developers ("Andreas Raab's kernel fixes", "Juan's > refactorings of Morphic" etc). A Delta could appear in several streams > so Croquet could have a single stream for each release AND multiple > streams for different kinds of Deltas, like "base image fixes for > Hedgehog" etc). > > 3. Make an efficient but simple storage model for deltas and delta > streams. Here I am thinking KISS. If a delta could be represented as a > single gzipped file (enabling dumb servers just like MC does) and a > stream can be represented by file naming conventions (by a number > suffix) - then a stream is just a directory or a zip of a bunch of delta > files. Yes, very similar to gzipped changesets and the update stream. :) > This enables us to use all "vanilla" tools available for dealing with > files (http servers, ftp, rsync, email etc). > > 4. Make a simple but efficient transport. Let's say we set up a public > server that syncs such directories of delta files (streams) from tons of > places. And then offers it to all of us as a simple rsync. Each > developer (or team) could then use rsync to mirror that mega tree of > delta files onto our laptops/servers and the tool inside Squeak would > just need to bother with reading the local filesystem - which makes it > much more portable across Squeak dialects (and possibly even Smalltalk > dialects - but let's not go there just yet). This also means we don't > suffer from servers being down. > > 4. Make a simple model of Delta and DeltaStream in Squeak and let it > mirror the filesystem. Add a simple API to the model á la Keith's > Installer. Or hey, just enable Installer work with this model. > > 5. Make a great Morphic tool to work with them. Perhaps we could even > rework the changesorter family of tools thus superceding changesets? > > > Ok, imagine this supertool in your image. Imagine that all public > streams are listed directly in the tool and new ones just "pop up" as > they are added. Imagine that you can add your own private streams just > like you can add repositories to sources.list in apt-get (you Debian > people know what I mean). You can have purely private local streams on > your harddrive or streams on a shared fileserver in your company/dev > group, etc. > > Now you have this huge flood of Deltas in hundreds of streams at your > fingertips. How would you use it? > > 1. Subscribe to some major streams and configure it to automatically > load deltas whenever they appear when you press "update". > > 2. Set some rules that govern if the tool should just try to load - or > ask for confirmation based on characteristics of the delta. > > 3. Autosubscribe to categories of streams. For example, if a new bug-fix > stream appears for a package you use a lot - you might want to get it > autosusbcribed - or again, have the tool ask you. > > 4. Of course, easily publish your own streams. We are talking single > button, no getting permissions etc. > > 5. Push fixes to other people's packages as deltas onto a personal > public fixes-stream. This means it does not matter what package you are > bug fixing - you can *always* push the fix to your personal public > fixes-stream and don't need to bother with getting permissions on > SqueakSource or wherever it came from. This is a very IMPORTANT feature > and should hopefully put an end to "lost fixes" or "fixes sitting inside > images". > > We have too many fixes out there that just never get published because > of the "hassle", and sure, someone says "it is very easy to upload to > Mantis!" - but fixes on Mantis sets expectations on quality, > documentation, follow up etc. A personal fixes stream like above sets no > such expectations - it is there for the taking - but that is all. > > 6. Pull deltas. Selective cherry picking etc. > > > Important features of Deltas: > > - Atomic load of a Delta. Either it loads cleanly or it does not load at > all, and it ensures this by checking FIRST that everything is in place > for it to be able to apply cleanly. This should prevent "failed loads" > and broken images. The actual low level atomicity is another story but > SystemEditor from MC2 perhaps? I dunno. > > - Revertable, if *possible*. A delta can be analyzed to see if it is > revertable. If it includes doits or class initializations it is in > theory not revertable, it may be in practice though! It can also be > marked as DefinitelyNonRevertable. > > - A Delta is declarative. Another class should be responsible for > actually applying them. > > - When a Delta is applied to an image we generate a reverse Delta which > (when applied) will reverse the effects. Since the image may be in > different states this reverse Delta needs to be constructed when the > Delta is applied! > > > A Delta contains: > > - A Preamble similar to ChangeSets with info fields > - Developer (name, id, signature etc whatever) > - Original stream (URL) > - UUID > - DefinitelyNotRevertable flag > - Test doit (a non destructive, non interactive doit that should throw > an exception in order to prevent loading!) > - An ordered sequence of Actions, see below. > > An example list of different types of Actions are: > > - Change method (class name, old method src, new method src) > - Add method (class name, method src, category name) > - Remove method (class name, method src, category name) > - Categorize method (class name, method name, old category name, new > category name) > > - Create class (class name, super class name, definition, category) > - Delete class (class name) > - Change superclass of class (class name, old super class name, new > super class name) > - Rename class (old class name, new class name) > - Categorize class (class name, old category name, new category name) > - Change definition (class name, new definition, old definition) > - Class comment change (new comment, old comment) > > - Class initialization > - Doit (marked as revertable or not by author!) > > Note how these Actions contain "more" info than a ChangeSet - it > contains information about what it was "before" in the image it > originates from! The idea is to make Deltas "rich" with info so that we > can apply them with more smarts. > > When applied to an image the Delta is copied to a directory with the > same name as the image followed by "-applied-deltas". It is also logged > in changesfile. If the Delta can not be cleanly reverted (based solely > on its own contents) we generate reverse Deltas and store them in the > same directory prefixed with "reverse-". > > Applying a Delta: > > 1. Verify that it can be applied (or signal CanNotApplyException). Do > this by analyzing Actions and running any Test and see if it throws an > Exception. > - It can not be applied *cleanly* if something is "different" from > expected. > - It can be applied *dirty* if all changes can be applied in "some > fashion". For example, a delete operation and the thing to delete is > already deleted. The reverse Delta will then show this so that a revert > will not put the thing back in. > - It can be applied *partially* if just a subset of Actions are applied > (by choice or since some just can't be applied). The reverse Delta will > then show what was applied or not. > > 2. Verify that it can be reverted cleanly (or signal > CanNotRevertCleanlyException). Do this by analyzing Actions. > > 3. Apply and generate the reverse Delta if needed. > > 4. Copy delta and any reverse delta to applied dir. > > 5. Log to changes file. > > 6. Report package touched (for running unit tests afterward!) > > > What about merging then? Well, the concept here is to be much more > "loose" when it comes to merging compared to say MC. It was inspired by > something I read about git (Linus' SCM tool) - it doesn't try to be > smart - it just tries to do the right thing when it is obvious. In other > situations it just asks the developer. I think I like this approach. The > Delta model should be easy enough for all developers to understand. It > is "just" a changeset/patch after all. > > So if I am trying to apply a Delta (or several) and the "before state" > is not as the Delta expects - we can either cop out, or let it be > "smart", or just ask the user to decide what to do. BUT... I am not an > SCM implementor - the MC/MC2 guys can clearly explain to me why/how this > will not work or amend the idea so that it can work. I gladly admit my > ignorance. ;) > > > ...ok, enough blabbering. :) Does this sound plausible, useful or just > plain dumb? Is MC2 already this and much more? > > ciao, Göran > > |
In reply to this post by Ron Teitelbaum
Ron Teitelbaum wrote:
> It's not just sinking in that is an issue. I'm also considering the > practical aspects. Also I'm not exactly sure how this all fits with > Andreas' suggestion of managing packages outside the context of an official > image. From my perspective Goran's proposal actually provides a solution. Part of the problem with the current setup is that it's plain impossible to go through all of the versions that were generated by the 3.10 team and try to figure out which ones contain fixes that apply to Croquet and which ones don't. MCZs are simply to heavy-weight for this process. Delta streams (assuming they tie in with versions) would solve the problem nicely. > I can't help seeing the down side to all of this, and I wonder what the > impact will be for those starting out with Squeak. There will be almost no impact. Users will find one or two subscriptions in their image (those for the current version they are on and maybe an optional one for the next alpha version) and that's it. Much like the update stream. The magic is upstream, by having the release stream aggregate fixes from various inputs and provide those in a consistent manner to the downstream consumers. > So let's say we go with this path and anyone can start a stream. How does a > user decide which stream to use? If we have two very good streams (like > Sophie and Croquet) which are changing classes in an incompatible way then > someone's changes are still lost. Indeed. A tool can't solve the social problems. If you have inherently incompatible changes then you need to make a decision which path to follow. However, contrary to the past you should still be able to very quickly follow changes on the path not taken and adapt deltas coming that way for whatever you need. So that, for example Croquet can listen to the delta stream of Squeak 3.10 and quickly filter out those changes that are relevant to its packages and vice versa. Both are independent but the interplay is simplified because it is possible to quickly screen a concise set of changes. Consumers of either one don't usually even get to see the other stream but they may subscribe directly to an upstream package stream in which they are interested in. In the end what happens is that you start out with a single stream for your image version, moderated by whoever provides that stream. As you progress, you may subscribe to further upstream packages (or individual contributors) to get the changes you are interested in. > I like the idea of passing the streams or having stream managers, or > something like that, so that there is one official stream per package. But > of course this really just brings us back to squeak map and away from a > change stream. I like Andreas' suggestion that we try to support standard > packages for multiple images. Which can be done in addition to and independent from Goran's proposal. > How can we move from what we have now to a place where it is easy for > someone to push quality changes or new code into production? Can we really > support a free for all collection of change streams, or do we need to stick > with standard packages? If we agree we need standard packages what do we > gain from a change stream? Delta streams won't replace a release team. That's for sure. What they should offer is the ability to very quickly pick out what changes are relevant to a particular fork from some set of updates. This may actually lead to competition and more forks but like Goran said, part of this proposal is to embrace change. Cheers, - Andreas |
In reply to this post by Andreas.Raab
> simpler. That alone would be worth it - if you've tried to go through > 50 or so versions in Monticello you know what I mean ;-) > I do know what you mean, in MC1.5 there is a dual changes comparison tool. This allows you to see the changes between any two versions. For speed these can be loaded into an in-memory repository. Keith |
Free forum by Nabble | Edit this page |