On 2 May 2011 18:49, Ted F.A. van Gaalen <[email protected]> wrote: > Hi All instances of HumanBeing > > Then, another question remains: > > Will my image of 2011 still work correctly > on the VM of AD 2019 (the ones that than probably > run on Ubuntu 2019.10, Windows11 and AppleOS/X 2019)? > or the VM created for a newly emerged computer system? > > "All" I wish for is: > -= Backward Source Compatibilty =- > whenever possible because: > -in five years the one could have written a huge amount of coding, > for instance, a large ERP system, or an large internet trading > system. Often these consists of (10)thousands of lines > of coding, even in Smalltalk. Many years of development and > effort, blood sweat and tears have gone in to it. > Finally everything is debugged and tested. And may happy > users depend on it > > Assume that throughout this all coding are countless > references to classes that are perfectly normal at the > time of writing. This no exception. > > Then one or tow releases later: > > If these classes are removed, because The Respectful > Tool Developers (e.g. (not only) Pharo) in their wisdom find it > necessary to render these obsolete, then this has enormous > consequences: > One would have to edit and test, and in some cases rewrite (!) > very large amounts of coding costing considerable amounts > of time=money. > Now, imagine yourself as an application programmer maintaining > this huge amount of coding, which is not working anymore, > not because you did it wrong, but because of chances in the > Developmen Tool? How would feel? Like shit. Tons of work > gone down the drain. Besides, are you going to ask your > customer to pay for this? You can't of course. He/she will > say things like: "Why? It works perfectly!"etc. > > Naturally one wishes to migrate to new images releases and > happily utilize the new features that come with it, no question > about it. But as it seems now, this is out of the question, > because with every release, things are taken out, changed > without any respect to backward compatibility. > > > I might suggest. for instance: > - leave deprecated classes in. when ever possible! > if you can't, then rewrite them as a sort of emulation > encapsulation, thus a kind of shell, invoking your new > replacement class. >
A first phrase you can read when opening Pharo home page is: Pharo is a clean, innovative, open-source Smalltalk-inspired environment. And the things you proposing is going in conflict with the above. You cannot make things clean and lean if we follow path you proposing. Anyone is free write a separate package which could "maintain" a compatibility layer(s) for whatever functionality they missing, but just don't force these practices to others. There is two different kinds of people: one people putting garbage in trash bin, while others putting it into garage room, because they thinking that some of stuff still would be useful later. A few years later a garage is full of various "useful" stuff which in reality just rots there, because its owner already forgot what he puts there , or even if he remembers, he can't find it because it buried under the tons of other 'useful' stuff. > Why not have the best of both worlds? What's the problem? There is no any problem. You can download and run any Squeak and Pharo images starting from 1.0. > Things can live next to each other, if you do it well. > But i find a little sense of keeping stuff which were already obsolete 10 years ago, but still polluting a modern image just because we can make things to live next to other. You know, there is a plenty of space on hard disk. Squeak 1.0 image can live next to Pharo 1.3. Not a big deal :) > If you don't I can only resort to the most basic of > system core classes. Ergo: limit myself to what I am > (reasonable certain of) > > > I see lines on this forum like: > "Seems to be unused. I vote for removing.." > Assuming is a bad thing in software development. > How can you be certain that: > No one really uses the component anymore? > You can't. > You can. Because pharoers are the users of their own system. We're not targeting system for potential customer(s) who living in parallel universe. And so, if there is no voice which says 'oh wait, i using it' , then it is deem necessary to remove it to make system cleaner and smaller and therefore easier to learn, comprehend and use. > The essence of it all is: > > I saw Pharo fit to write production software, > especially with Seaside! > but how can I use it for this, seen the above > described arguments? If all the things > I write become useless with a next release? > The reason why it could happen is: - your code is not good enough - someone wrote better code (and so your code become not good enough) ;) for the rest of the cases, if you maintaining a 3rd party library or application - it is up to you whether you want to keep on par with pharo bleeding edge development, or just take a concrete pharo release version and from then on, froze it forever and stick with it. > > > (Sorry, we don't sell tires for your > car anymore, because we chanced > the diameter of them, we recommend > you to change/modify your car.. ) > > A perfect example: > (most) internet browsers > are backward compatible. > A perfect example of what? Don't mix an end-user application with development tool. I could write an application which are backward compatible with its most initial version, while under the hood i could radically change everything. Pharo is end-user application for developers, not for users :) > I rest my case, enough said.. > > Kind regards > Ted > > > -- Best regards, Igor Stasenko AKA sig.
