Lex Spoon wrote:
> Hilaire is only asking what the status and expectations about a usable > Tweak are. It took a lot of asking, and apparently the answer is that > you have to go back and convert a 3.8 image to a Tweak one. This is > different from Morphic, where Morphic was initially available in > Squeak right beside MVC. But what is your point, exactly? That Tweak is to blame for changes in 3.9 that render 3.9 incompatible with 3.8 to such an extent that Tweak doesn't work out of the box? Contrary to which other 3.8 based environments (iSqueak, Croquet, TinLizzie) run Tweak just fine. And for the records, the reason why Morphic was initially available in Squeak right beside MVC was because the people who worked on it (SqC) had control over BOTH. Unfortunately, the same cannot be said about Tweak and 3.9 so unless your point is that you're screwed when you don't have control over parts that you depend on (to which I wholeheartedly agree), then I don't get the point you're trying to make. Cheers, - Andreas |
No problem we are the bad guys to blame....
Stef (the random refactorer) > Lex Spoon wrote: >> Hilaire is only asking what the status and expectations about a >> usable >> Tweak are. It took a lot of asking, and apparently the answer is >> that >> you have to go back and convert a 3.8 image to a Tweak one. This is >> different from Morphic, where Morphic was initially available in >> Squeak right beside MVC. > > But what is your point, exactly? That Tweak is to blame for changes > in 3.9 that render 3.9 incompatible with 3.8 to such an extent that > Tweak doesn't work out of the box? Contrary to which other 3.8 > based environments (iSqueak, Croquet, TinLizzie) run Tweak just fine. > > And for the records, the reason why Morphic was initially available > in Squeak right beside MVC was because the people who worked on it > (SqC) had control over BOTH. Unfortunately, the same cannot be said > about Tweak and 3.9 so unless your point is that you're screwed > when you don't have control over parts that you depend on (to which > I wholeheartedly agree), then I don't get the point you're trying > to make. > > Cheers, > - Andreas > > |
In reply to this post by Lex Spoon
On Mon, 10 Jul 2006 10:05:48 +0200, Lex Spoon <[hidden email]> wrote:
> tim Rowledge <[hidden email]> writes: >> On 7-Jul-06, at 6:48 AM, Bert Freudenberg wrote: >> >> [snip] >> > >> > Hilaire, it would be nice if you read what I write. I never said or >> > implied that. >> >> It certainly would; putting words into other people's mouths is >> neither polite nor hygenic. > > Hilaire is only asking what the status and expectations about a usable > Tweak are. Thank you Lex, that was overdue! All that Hilaire wants is confidence on which GUI will be available for the next to come project and/or customer. Not a bad question to ask a community. > It took a lot of asking, and apparently the answer is that > you have to go back and convert a 3.8 image to a Tweak one. This is > different from Morphic, where Morphic was initially available in > Squeak right beside MVC. > > > -Lex /Klaus |
Am 10.07.2006 um 13:32 schrieb Klaus D. Witzel:
> On Mon, 10 Jul 2006 10:05:48 +0200, Lex Spoon <[hidden email]> > wrote: >> Hilaire is only asking what the status and expectations about a >> usable >> Tweak are. > > Thank you Lex, that was overdue! All that Hilaire wants is > confidence on which GUI will be available for the next to come > project and/or customer. Not a bad question to ask a community. Agreed, but it's not one with a simple yes/no answer like Hilaire demanded, either. A very simplistic answer would be - yes, sure it will be available, because it is available now, it's MIT licensed, you can take the code and do anything with it that you like. Is that a satisfying answer? I don't think so, but that's all you gonna get if you demand simple answers. - Bert - |
Bert Freudenberg a écrit :
> Am 10.07.2006 um 13:32 schrieb Klaus D. Witzel: > >> On Mon, 10 Jul 2006 10:05:48 +0200, Lex Spoon <[hidden email]> wrote: >> >>> Hilaire is only asking what the status and expectations about a usable >>> Tweak are. >> >> >> Thank you Lex, that was overdue! All that Hilaire wants is confidence >> on which GUI will be available for the next to come project and/or >> customer. Not a bad question to ask a community. > > > Agreed, but it's not one with a simple yes/no answer like Hilaire > demanded, either. It is. Indeed, I was asking about the community commitment to Squeak.org regarding Tweak. And the answer was clear. And I am not objecting Andreas, how I could, it is free software world. Other projects have more commitment to Squeak.org, for example Seaside is doing so, therefore using Seaside is something with a relitively highter level of thrust than using Tweak. Again, this is just the way free software seems to work. Project with higher visibility attract more users and developpers, and in turn get even more 'thrustable'. Again I am not blaming but just pointing how free software project evolve, and yes it is not always rewarding for the authors, but some subtle mutual benefice is always possible. Hilaire |
In reply to this post by stéphane ducasse-2
stéphane ducasse wrote:
> No problem we are the bad guys to blame.... > > Stef (the random refactorer) Honestly, Stef, if it isn't random then what is the strategy for these changes? Looking at the past Squeak versions, starting from 3.6 every version was just incompatible enough with previous versions such that it would break any serious user of the metaclass hierarchy (like Tweak). I think you will agree that it can't continue that way, that at some point we need to get back to what can be called a *stable* metaclass kernel with reliable APIs and when exactly will that point be reached? Cheers, - Andreas > >> Lex Spoon wrote: >>> Hilaire is only asking what the status and expectations about a usable >>> Tweak are. It took a lot of asking, and apparently the answer is that >>> you have to go back and convert a 3.8 image to a Tweak one. This is >>> different from Morphic, where Morphic was initially available in >>> Squeak right beside MVC. >> >> But what is your point, exactly? That Tweak is to blame for changes in >> 3.9 that render 3.9 incompatible with 3.8 to such an extent that Tweak >> doesn't work out of the box? Contrary to which other 3.8 based >> environments (iSqueak, Croquet, TinLizzie) run Tweak just fine. >> >> And for the records, the reason why Morphic was initially available in >> Squeak right beside MVC was because the people who worked on it (SqC) >> had control over BOTH. Unfortunately, the same cannot be said about >> Tweak and 3.9 so unless your point is that you're screwed when you >> don't have control over parts that you depend on (to which I >> wholeheartedly agree), then I don't get the point you're trying to make. >> >> Cheers, >> - Andreas >> >> > > > |
Hi Andreas,
> Honestly, Stef, if it isn't random then what is the strategy for these > changes? Looking at the past Squeak versions, starting from 3.6 every > version was just incompatible enough with previous versions such that it > would break any serious user of the metaclass hierarchy (like Tweak). I > think you will agree that it can't continue that way, that at some point > we need to get back to what can be called a *stable* metaclass kernel > with reliable APIs and when exactly will that point be reached? my vision of squeak is a live organism and I don't think a stable API could fit such a system. I agree with you that one should be able to rely on a common factor and work on top of this. On a certain point of view this is already done with the most common classes/hierarchies and their methods (you can count on #do: and #collect: for the collections, and on #superclass for Behavior). But squeak is not in a position of stabilization. Its community is to small. Currently, I think it is better to push things and make things go ahead even if it breaks compatibility. |
In reply to this post by Andreas.Raab
> Honestly, Stef, if it isn't random then what is the strategy for these
> changes? Looking at the past Squeak versions, starting from 3.6 every > version was just incompatible enough with previous versions such that it > would break any serious user of the metaclass hierarchy (like Tweak). I > think you will agree that it can't continue that way, that at some point > we need to get back to what can be called a *stable* metaclass kernel > with reliable APIs and when exactly will that point be reached? To improve software, it is required to break backward compatibility. Nobody is forcing you to move to a new version. If updates to the base-framework don't enhance anything in the development process of your software, it is unnecessary to update. If I were you, I would stick with 3.6. Still waters run deep. I have some legacy Seaside applications in ancient 3.6 images that run just fine. They rarely change. They simply run fine. I won't port them to 3.9 and a recent version of Seaside. These applications don't require anything more as it is available in 3.6. However, for new applications I take 3.9, I love Shout/eCompletion/OmniBrowser/Traits/Pragmas/ToolBuilder/... I like to keep up-to-date as long as it improves my productivity. Lukas -- Lukas Renggli http://www.lukas-renggli.ch |
Lukas Renggli wrote:
>> Honestly, Stef, if it isn't random then what is the strategy for these >> changes? Looking at the past Squeak versions, starting from 3.6 every >> version was just incompatible enough with previous versions such that it >> would break any serious user of the metaclass hierarchy (like Tweak). I >> think you will agree that it can't continue that way, that at some point >> we need to get back to what can be called a *stable* metaclass kernel >> with reliable APIs and when exactly will that point be reached? > > > To improve software, it is required to break backward compatibility. > Nobody is forcing you to move to a new version. > > If updates to the base-framework don't enhance anything in the > development process of your software, it is unnecessary to update. If > I were you, I would stick with 3.6. Still waters run deep. > > I have some legacy Seaside applications in ancient 3.6 images that run > just fine. They rarely change. They simply run fine. I won't port them > to 3.9 and a recent version of Seaside. These applications don't > require anything more as it is available in 3.6. However, for new > applications I take 3.9, I love > Shout/eCompletion/OmniBrowser/Traits/Pragmas/ToolBuilder/... I like to > keep up-to-date as long as it improves my productivity. It's not quite that simple... To improve software, it MAY be required to break backward compatibility. But it should always be a conscious decision to do so. In my opinion, in Squeak, it is an even bigger issue: although my software may not require the new features of 3.9, I dread the thought of having to go back and work in a 3.6 image. Not only do I lose many of the development environment features I like, it's DIFFERENT. Having to re-learn the intricacies and bugs of a new environment every time I need to fix a bug in my stable software just because someone decided to "improve software" is not efficient. I'm not saying don't break compatibility, I'm just saying be aware every time that you are doing it. And the thought that there be a relatively stable API for a core set of classes that doesn't change without some forethought is perfectly reasonable, in my opinion. At least then, when compatibility is broken, detailed instructions could be provided on how to update your software in each case. Julian |
In reply to this post by Lukas Renggli
On Jul 10, 2006, at 12:42 PM, Lukas Renggli wrote: >> Honestly, Stef, if it isn't random then what is the strategy for >> these >> changes? Looking at the past Squeak versions, starting from 3.6 every >> version was just incompatible enough with previous versions such >> that it >> would break any serious user of the metaclass hierarchy (like >> Tweak). I >> think you will agree that it can't continue that way, that at some >> point >> we need to get back to what can be called a *stable* metaclass kernel >> with reliable APIs and when exactly will that point be reached? > > To improve software, it is required to break backward compatibility. > Nobody is forcing you to move to a new version. True. Though if few enough people are moving to new versions as they come out, it's not a very good sign. Just as a data point: everything we do at Smallthought is based on a stripped 3.7 image. Every few months I download a 3.9 image and play with it for about 15 minutes, but the reality is that what happens in 3.9 simply doesn't affect us. If we're an exceptional case, it's probably not a big deal, but if it turns out that lots of others are doing the same thing, it would be worrying. Avi |
In reply to this post by Julian Fitzell
On Jul 10, 2006, at 4:22 PM, Julian Fitzell wrote: > I'm not saying don't break compatibility, I'm just saying be aware > every time that you are doing it. And the thought that there be a > relatively stable API for a core set of classes that doesn't change > without some forethought is perfectly reasonable, in my opinion. > At least then, when compatibility is broken, detailed instructions > could be provided on how to update your software in each case. Here, here. I'll add an example of the kind of incompatibility that I, at least, am frustrated by. I try to keep OmniBrowser compatible with Squeak 3.6 and later. Prior to 3.9, you can fetch a menu icon for delete operations by sending #deleteIcon to the class MenuIcons. In 3.9 you have to send #smallDeleteIcon. As far as I can tell, the change is completely gratuitous. The icon is small, yes, but there's no corresponding #largeDeleteIcon. #deleteIcon was just removed, it wasn't changed to call through to #smallDeleteIcon or even deprecated. Apparently, I have to jump through some hoops to make menus work in Squeak 3.9 because somebody wanted to make the selectors more consistent. I'm all for progress, but this kind of thing is just irritating. Colin |
In reply to this post by Lukas Renggli
Lukas Renggli wrote:
> To improve software, it is required to break backward compatibility. > Nobody is forcing you to move to a new version. For starters, let's get our basic assumptions right: This discussion isn't about people who do *not* want to move to new versions. It's about people who *do* want and what expectations they can have. Otherwise I'd agree with your statement. > If updates to the base-framework don't enhance anything in the > development process of your software, it is unnecessary to update. If > I were you, I would stick with 3.6. Still waters run deep. Well, if you were me, you would *want* to update. But you would have noticed that things got so inconsistently broken at the metaclass level that unless there are major pay-offs, it simply isn't worth the effort. That's what happened from 3.6 to 3.7. In 3.8 there was a major payoff - the m17n integration. That's why I then spent the time needed. For 3.9, from a Tweak POV there isn't that much interesting in there, so rather than going through the painful porting exercise yet again I'll probably spend my time on bootstrapping a stable (3.8-based) metaclass kernel which can be used in parallel to the 3.9 kernel. Which is not particularly nice but in the absence of any inclination towards stable APIs the only alternative that I can see. > I have some legacy Seaside applications in ancient 3.6 images that run > just fine. They rarely change. They simply run fine. I won't port them > to 3.9 and a recent version of Seaside. These applications don't > require anything more as it is available in 3.6. However, for new > applications I take 3.9, I love > Shout/eCompletion/OmniBrowser/Traits/Pragmas/ToolBuilder/... I like to > keep up-to-date as long as it improves my productivity. You're totally missing my point. Let's take one example from your list: ToolBuilder. Let's say you've got some work that uses it, would you really expect that in each new Squeak version you have to spend major effort to port your code to the latest ToolBuilder version? Or wouldn't you rather expect that there is a stable API that can be used and that may be extended over time, or even broken, but if it's broken that you may get some notice about it beforehand? Or, in particular when the changes get really fundamental, that instead of modifying ToolBuilder in-place you get the offer to use either ToolBuilder (working the way it always did) and whatever the brand-new framework of the day is? I'm curious but is my position in this discussion really so outrageous? Cheers, - Andreas |
In reply to this post by Colin Putney
Colin Putney wrote:
> > On Jul 10, 2006, at 4:22 PM, Julian Fitzell wrote: > >> I'm not saying don't break compatibility, I'm just saying be aware >> every time that you are doing it. And the thought that there be a >> relatively stable API for a core set of classes that doesn't change >> without some forethought is perfectly reasonable, in my opinion. At >> least then, when compatibility is broken, detailed instructions could >> be provided on how to update your software in each case. > > Here, here. I'll add an example of the kind of incompatibility that I, > at least, am frustrated by. > > I try to keep OmniBrowser compatible with Squeak 3.6 and later. Prior to > 3.9, you can fetch a menu icon for delete operations by sending > #deleteIcon to the class MenuIcons. In 3.9 you have to send > #smallDeleteIcon. As far as I can tell, the change is completely > gratuitous. The icon is small, yes, but there's no corresponding > #largeDeleteIcon. #deleteIcon was just removed, it wasn't changed to > call through to #smallDeleteIcon or even deprecated. > > Apparently, I have to jump through some hoops to make menus work in > Squeak 3.9 because somebody wanted to make the selectors more > consistent. I'm all for progress, but this kind of thing is just > irritating. > > Colin Hi, this example demonstrates the main reason why I think the "full" image is so important: If, at the point of this refactoring (or renaming, whatever), the author had your OmniBrowser loaded, it would have been no big deal to just make the required changes. Using the RB, you get most of these changes *for free*. It's so much less work this way, compared to trying to find out what has changed, exactly, between newer versions. Cheers Wolfgang |
In reply to this post by Andreas.Raab
Andreas Raab wrote:
> Lukas Renggli wrote: >> To improve software, it is required to break backward compatibility. >> Nobody is forcing you to move to a new version. > > For starters, let's get our basic assumptions right: This discussion > isn't about people who do *not* want to move to new versions. It's > about people who *do* want and what expectations they can have. > Otherwise I'd agree with your statement. > >> If updates to the base-framework don't enhance anything in the >> development process of your software, it is unnecessary to update. If >> I were you, I would stick with 3.6. Still waters run deep. > > Well, if you were me, you would *want* to update. But you would have > noticed that things got so inconsistently broken at the metaclass > level that unless there are major pay-offs, it simply isn't worth the > effort. That's what happened from 3.6 to 3.7. In 3.8 there was a major > payoff - the m17n integration. That's why I then spent the time > needed. For 3.9, from a Tweak POV there isn't that much interesting in > there, so rather than going through the painful porting exercise yet > again I'll probably spend my time on bootstrapping a stable > (3.8-based) metaclass kernel which can be used in parallel to the 3.9 > kernel. Which is not particularly nice but in the absence of any > inclination towards stable APIs the only alternative that I can see. > >> I have some legacy Seaside applications in ancient 3.6 images that run >> just fine. They rarely change. They simply run fine. I won't port them >> to 3.9 and a recent version of Seaside. These applications don't >> require anything more as it is available in 3.6. However, for new >> applications I take 3.9, I love >> Shout/eCompletion/OmniBrowser/Traits/Pragmas/ToolBuilder/... I like to >> keep up-to-date as long as it improves my productivity. > > You're totally missing my point. Let's take one example from your > list: ToolBuilder. Let's say you've got some work that uses it, would > you really expect that in each new Squeak version you have to spend > major effort to port your code to the latest ToolBuilder version? Or > wouldn't you rather expect that there is a stable API that can be used > and that may be extended over time, or even broken, but if it's broken > that you may get some notice about it beforehand? Or, in particular > when the changes get really fundamental, that instead of modifying > ToolBuilder in-place you get the offer to use either ToolBuilder > (working the way it always did) and whatever the brand-new framework > of the day is? > > I'm curious but is my position in this discussion really so outrageous? fixes alone. And, I wouldn't want any surprises. If something is broken, it should be easy to state that somewhere so people can have a look before upgrading. brad |
In reply to this post by Avi Bryant
Hi!
Avi Bryant <[hidden email]> wrote: > On Jul 10, 2006, at 12:42 PM, Lukas Renggli wrote: > > To improve software, it is required to break backward compatibility. > > Nobody is forcing you to move to a new version. > > True. Though if few enough people are moving to new versions as they > come out, it's not a very good sign. Indeed, indeed. As I often say "remember the 3.3 branch". Noone moved in, because it was an uncomfortable image to move into, and thus it died (at least that was an important part). > Just as a data point: everything we do at Smallthought is based on a > stripped 3.7 image. Every few months I download a 3.9 image and play > with it for about 15 minutes, but the reality is that what happens in > 3.9 simply doesn't affect us. If we're an exceptional case, it's > probably not a big deal, but if it turns out that lots of others are > doing the same thing, it would be worrying. > > Avi As a datapoint I work in 3.8. I will try to move to 3.9 when it seems fruititious - but I probably will not work in it until Seaside, Magma and a few other important pieces are stabilized in it. My first job in that department would be to give KomHttpServer a 3.9 overhaul of course. regards, Göran |
In reply to this post by Wolfgang Eder
On Jul 10, 2006, at 7:06 PM, Wolfgang Eder wrote: > Hi, > this example demonstrates the main reason why I think > the "full" image is so important: > If, at the point of this refactoring (or renaming, whatever), > the author had your OmniBrowser loaded, it would have been > no big deal to just make the required changes. > Using the RB, you get most of these changes *for free*. Actually, I suspect that this is exactly what was done. OmniBrowser is part of the Full 3.9 image, and it appears to have been refactored along with everything else in the full image. The break in compatibility is still a problem, though, for two reasons: First, that refactored version of OmniBrowser only works in Squeak 3.9. It doesn't work in Squeak 3.6, 3.7 or 3.8. If all I cared about was compatibility with the latest release of Squeak, I wouldn't be complaining in the first place. Second, it's just not feasible to have all the code in the Squeak world loaded into a single image. You can get a lot, I'm sure, but some packages conflict with other packages. If you rely on refactoring to mitigate API changes, you're going to break anything that isn't in your image when you make the change. > It's so much less work this way, compared to trying to find > out what has changed, exactly, between newer versions. I love refactoring. But it's not a solution to this problem. Colin |
In reply to this post by Andreas.Raab
Andreas Raab <[hidden email]> wrote:
> I'm curious but is my position in this discussion really so outrageous? No to me. :) I find it quite reasonable. I on the other hand do not know the whys and whats about the changes made. Can someone give us a quick summary on the changes in question and why they were made? I assume it is Traits related? Or refactoring? regards, Göran PS. Hasn't been in 3.9 land for quite some time, but will try to make up for that. |
In reply to this post by Andreas.Raab
Andreas Raab wrote:
> > You're totally missing my point. Let's take one example from your > list: ToolBuilder. Let's say you've got some work that uses it, would > you really expect that in each new Squeak version you have to spend > major effort to port your code to the latest ToolBuilder version? Or > wouldn't you rather expect that there is a stable API that can be used > and that may be extended over time, or even broken, but if it's broken > that you may get some notice about it beforehand? Or, in particular > when the changes get really fundamental, that instead of modifying > ToolBuilder in-place you get the offer to use either ToolBuilder > (working the way it always did) and whatever the brand-new framework > of the day is? > > I'm curious but is my position in this discussion really so outrageous? I'm primarily a python developer which looks at squeak as a wonderful platform where implement multimedia apps for children. Unfortunately, it's difficult for me to understand what's new in each release and where will go the development from there... No (or minor) release docs, no code that comes from enhancements proposals (like PEPs) and that's discussed before actual inclusion in the release. And with each release you get the 90% of probability that if you try to filein a package or code developed for the release before the one you are running it will not run at all. Python has it's own big problems too (the code and naming style of its standard lib changes from module to module and big parts of that library are function oriented rather than object oriented), but it cares backward compatibility a lot... Important enhancements that will be enabled by default in the next stable version are available in the actual release by importing them from a special "future" module as old features considered "deprecated" are available in a number of releases since then. I consider the fact that squeak is always a "moving target" from an API POV one of its major drawbacks and one of the reasons why there is so little documentation about them, a fact that which i think keeps possible developers interested in squeak away from it. my two cents, Alberto |
In reply to this post by Göran Krampe
> As a datapoint I work in 3.8. I will try to move to 3.9 when it seems
> fruititious - but I probably will not work in it until Seaside, Magma > and a few other important pieces are stabilized in it. > > My first job in that department would be to give KomHttpServer a 3.9 > overhaul of course. Seaside and Kom work quite nicely in 3.9 today :) Philippe |
In reply to this post by Andreas.Raab
Hi andreas
I will not state any related to our totally illness to do random refactorings but can you tell me what is so deeply broken in the metaclass kernel? I'm so idiot that I cannot even know it. Stef On 11 juil. 06, at 00:56, Andreas Raab wrote: > Lukas Renggli wrote: >> To improve software, it is required to break backward compatibility. >> Nobody is forcing you to move to a new version. > > For starters, let's get our basic assumptions right: This > discussion isn't about people who do *not* want to move to new > versions. It's about people who *do* want and what expectations > they can have. Otherwise I'd agree with your statement. > >> If updates to the base-framework don't enhance anything in the >> development process of your software, it is unnecessary to update. If >> I were you, I would stick with 3.6. Still waters run deep. > > Well, if you were me, you would *want* to update. But you would > have noticed that things got so inconsistently broken at the > metaclass level that unless there are major pay-offs, it simply > isn't worth the effort. That's what happened from 3.6 to 3.7. In > 3.8 there was a major payoff - the m17n integration. That's why I > then spent the time needed. For 3.9, from a Tweak POV there isn't > that much interesting in there, so rather than going through the > painful porting exercise yet again I'll probably spend my time on > bootstrapping a stable (3.8-based) metaclass kernel which can be > used in parallel to the 3.9 kernel. Which is not particularly nice > but in the absence of any inclination towards stable APIs the only > alternative that I can see. > >> I have some legacy Seaside applications in ancient 3.6 images that >> run >> just fine. They rarely change. They simply run fine. I won't port >> them >> to 3.9 and a recent version of Seaside. These applications don't >> require anything more as it is available in 3.6. However, for new >> applications I take 3.9, I love >> Shout/eCompletion/OmniBrowser/Traits/Pragmas/ToolBuilder/... I >> like to >> keep up-to-date as long as it improves my productivity. > > You're totally missing my point. Let's take one example from your > list: ToolBuilder. Let's say you've got some work that uses it, > would you really expect that in each new Squeak version you have to > spend major effort to port your code to the latest ToolBuilder > version? Or wouldn't you rather expect that there is a stable API > that can be used and that may be extended over time, or even > broken, but if it's broken that you may get some notice about it > beforehand? Or, in particular when the changes get really > fundamental, that instead of modifying ToolBuilder in-place you get > the offer to use either ToolBuilder (working the way it always did) > and whatever the brand-new framework of the day is? > > I'm curious but is my position in this discussion really so > outrageous? > > Cheers, > - Andreas > |
Free forum by Nabble | Edit this page |