[squeak-dev] Statistics on merging Cuis with 3.10 on Morph hierarchy

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
23 messages Options
12
Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Statistics on merging Cuis with 3.10 on Morph hierarchy

hernan.wilkinson
Hi,
 here is a statistics I made about taking Squeak 3.10 and merging Cuis with it on the Morph hierarchy, just to have an idea on how much it could take...

Number of Classes removed in Cuis: 265
Number of Classes added on 3.10: 0
Number of Classes added on Cuis: 5
Number of Classes to merge: 59
    Number of same methods: 930
    Number of changed methods on Cuis: 117
    Number of new methods on Cuis: 66
    Number of conflicting methods: 44  (method on 3.7 is different that the one in 3.10 that in Cuis)
    Number of changed methods on current: 109 (from 3.7)
    Number of removed methods on Cuis: 796
    Number of new methods in current: 2192

Hope it is useful!


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Statistics on merging Cuis with 3.10 on Morph hierarchy

Edgar J. De Cleene
Re: [squeak-dev] Statistics on merging Cuis with 3.10 on Morph hierarchy


On 4/17/09 5:47 PM, "Hernan Wilkinson" <hernan.wilkinson@gmail..com> wrote:

Hi,
 here is a statistics I made about taking Squeak 3.10 and merging Cuis with it on the Morph hierarchy, just to have an idea on how much it could take....

Number of Classes removed in Cuis: 265
Number of Classes added on 3.10: 0
Number of Classes added on Cuis: 5
Number of Classes to merge: 59
    Number of same methods: 930
    Number of changed methods on Cuis: 117
    Number of new methods on Cuis: 66
    Number of conflicting methods: 44  (method on 3.7 is different that the one in 3.10 that in Cuis)
    Number of changed methods on current: 109 (from 3.7)
    Number of removed methods on Cuis: 796
    Number of new methods in current: 2192

Hope it is useful!

Hernan:

It’s very useful.
I know Juan put many hours on Cuis, too bad no time to learn of it and try to get all in my fork, which is 3.11 (as still NO 3.11 image , no matter one year of promises)

Edgar




Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Statistics on merging Cuis with 3.10 on Morph hierarchy

keith1y

>
>     Hernan:
>
>     It’s very useful.
>     I know Juan put many hours on Cuis, too bad no time to learn of it
>     and try to get all in my fork, which is 3.11 (as still NO 3.11
>     image , no matter one year of promises)
>
>     Edgar
>
One year of Edgar not reading or understanding. 3.11 effort is about
process not an image. Similarly 4.0 is more about politics than an image.

Keith


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Statistics on merging Cuis with 3.10 on Morph hierarchy

Randal L. Schwartz
>>>>> "Keith" == Keith Hodges <[hidden email]> writes:

Keith>  Similarly 4.0 is more about politics than an image.

I don't see that. The final result of 4.0 will be the 4.0 image, which will
contain a tiny .changes file (almost nothing I hope) and a fully-OSI-licensed
.sources file, from which we will be able to build the future.

I'd say that's quite a bit about the image.

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[hidden email]> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion

Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy

hernan.wilkinson
In reply to this post by hernan.wilkinson
Here are the same statistics but with Pharo dev 09.02.3, Squeak 3.7 and Cuis

Number of Classes removed in Cuis: 271
Number of Classes added on Pharo: 0
Number of new Classes in Cuis: 5
Number of Classes to merge: 59
Number of same methods: 858
Number of changed methods on Cuis: 91
Number of new methods on Cuis: 95
Number of conflicting methods: 66 (methods on 3.7 that different with the ones in Pharo and Cuis)
Number of changed methods on Pharo: 162 (from 3.7)
Number of removed methods on Cuis: 555
Number of new methods in Pharo: 2387

So, to merge Cuis Morph hierarchy with Pharo, 91+95 methods from Cuis have to be loaded in Pharo and 66 methods have to be integrated by a human.
To merge Cuis Morph hierarchy with Squeak 3-10, 117+66 methods from Cuis have to be loaded in Squeak 3.10 and 44 methods have to be integrated by a human.

I ran the statistics only on the Morph hierarchy because what seems to be faster in Cuis is the UI. I'm assuming that the Cuis changes in the Morph hierarchy is what makes Cuis run faster, but I'm not sure of that... of course we can run the same process for other hierarchies, packages, all the classes, etc. And if somebody is interesting in knowing which classes, methods, etc. are involved (the real stuff, not only the numbers), just let me know.

Hernan.


On Fri, Apr 17, 2009 at 5:47 PM, Hernan Wilkinson <[hidden email]> wrote:
Hi,
 here is a statistics I made about taking Squeak 3.10 and merging Cuis with it on the Morph hierarchy, just to have an idea on how much it could take...

Number of Classes removed in Cuis: 265
Number of Classes added on 3.10: 0
Number of Classes added on Cuis: 5
Number of Classes to merge: 59
    Number of same methods: 930
    Number of changed methods on Cuis: 117
    Number of new methods on Cuis: 66
    Number of conflicting methods: 44  (method on 3.7 is different that the one in 3.10 that in Cuis)
    Number of changed methods on current: 109 (from 3.7)
    Number of removed methods on Cuis: 796
    Number of new methods in current: 2192

Hope it is useful!



Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy

Edgar J. De Cleene
Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy


On 4/17/09 9:58 PM, "Hernan Wilkinson" <hernan.wilkinson@gmail..com> wrote:

I ran the statistics only on the Morph hierarchy because what seems to be faster in Cuis is the UI. I'm assuming that the Cuis changes in the Morph hierarchy is what makes Cuis run faster, but I'm not sure of that... of course we can run the same process for other hierarchies, packages, all the classes, etc. And if somebody is interesting in knowing which classes, methods, etc. are involved (the real stuff, not only the numbers), just let me know.

Hernan.


I don’t dig deeper in Cuis, but my bet is Cuis is faster as no TTF fonts.
What people seems like , the Microsoft look, gives Vista perfomance :=)


Edgar


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy

Bèrto ëd Sèra
Hi!

At least on Linux I can't imagine why people would like the usual Squeak rendering, I may have a problem with Cuis as far as cut&paste is concerned, but it looks 1 million times better as far as fonts are concerned... Together with Opera and Chromium the usual Squeak way it's got the worst fonts rendering ever. Why?

I know nothing about char rendering in general, though. Maybe someone will take a second to explain me why certain things look so poor on *nix?

Berto

2009/4/18 Edgar J. De Cleene <[hidden email]>

I don’t dig deeper in Cuis, but my bet is Cuis is faster as no TTF fonts.
What people seems like , the Microsoft look, gives Vista perfomance :=)


Edgar




Reply | Threaded
Open this post in threaded view
|

Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Bert Freudenberg

On 20.04.2009, at 16:53, Bèrto ëd Sèra wrote:

> Hi!
>
> At least on Linux I can't imagine why people would like the usual  
> Squeak rendering, I may have a problem with Cuis as far as cut&paste  
> is concerned, but it looks 1 million times better as far as fonts  
> are concerned... Together with Opera and Chromium the usual Squeak  
> way it's got the worst fonts rendering ever. Why?

Linux and Windows users are accustomed to heavily hinted font  
rendering, looking overly "crisp" because lines are snapped to the  
screen pixel grid. The result has little resemblance to the true  
character shape as it would appear when printed on paper, but it's  
what they are used to. In contrast, Apple's and Adobe's font rendering  
is much more truthful to the paper appearance, but looks "blurry" to  
Windows and Linux users.

So it's much more a thing of taste than correctness for what people  
prefer. Here's a pretty nice discussion:

http://www.antigrain.com/research/font_rasterization/index.html

> I know nothing about char rendering in general, though. Maybe  
> someone will take a second to explain me why certain things look so  
> poor on *nix?


Squeak's default truetype font rendering looks the same on all  
platforms, so it's not a *nix problem. It uses the Balloon2D engine,  
which renders vector fonts into bitmaps using 4x4 oversampling for  
anti-aliasing, without any hinting. The result looks more like the  
Apple rendering, which does not match the taste of many Linux/Windows  
users. And even Mac users usually have sub-pixel-rendering enabled  
which makes fonts look slightly crisper than what Balloon2D produces.

If you prefer the Linux font look, use the Freetype plugin. Well, or  
the Cuis fonts of course.

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

K. K. Subramaniam
On Monday 20 April 2009 9:17:38 pm Bert Freudenberg wrote:
> Linux and Windows users are accustomed to heavily hinted font  
> rendering, looking overly "crisp" because lines are snapped to the  
> screen pixel grid. The result has little resemblance to the true  
> character shape as it would appear when printed on paper, but it's  
> what they are used to. In contrast, Apple's and Adobe's font rendering  
> is much more truthful to the paper appearance, but looks "blurry" to  
> Windows and Linux users
Squeak's screen and its contents are meant to be consumed on bitmap monitors
and rarely printed on paper, so why should the fonts be optimized for paper
rendering and not display monitors?

Confused .. Subbu

Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Bert Freudenberg
On 24.04.2009, at 13:57, K. K. Subramaniam wrote:

> On Monday 20 April 2009 9:17:38 pm Bert Freudenberg wrote:
>> Linux and Windows users are accustomed to heavily hinted font
>> rendering, looking overly "crisp" because lines are snapped to the
>> screen pixel grid. The result has little resemblance to the true
>> character shape as it would appear when printed on paper, but it's
>> what they are used to. In contrast, Apple's and Adobe's font  
>> rendering
>> is much more truthful to the paper appearance, but looks "blurry" to
>> Windows and Linux users
> Squeak's screen and its contents are meant to be consumed on bitmap  
> monitors
> and rarely printed on paper, so why should the fonts be optimized  
> for paper
> rendering and not display monitors?
>
> Confused .. Subbu


I tried not to argue too much one way or the other, just stating what  
the difference appears to be. As I wrote, it's mostly a matter of  
taste, and only secondly one of technology. It's still worth  
investigating why Balloon rendering looks so blurry, and if there can  
be done something about it.

- Bert -


Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Michael Rueger-6
On Fri, Apr 24, 2009 at 4:41 PM, Bert Freudenberg <[hidden email]> wrote:

> I tried not to argue too much one way or the other, just stating what the
> difference appears to be. As I wrote, it's mostly a matter of taste, and
> only secondly one of technology. It's still worth investigating why Balloon
> rendering looks so blurry, and if there can be done something about it.

Without having looked at the code, two problems that we encountered in Sophie:
- multiple anti-aliasing (first the glyph, then when rendering the glyph image)
- fractional position rendering (rendering an anti-aliased glyph onto
a fractional pixel position)

Michael

Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

johnmci

On 25-Apr-09, at 2:02 AM, Michael Rueger wrote:

> - fractional position rendering (rendering an anti-aliased glyph onto
> a fractional pixel position)
>
> Michael
>

Michael glosses over the fun details of do you round, or truncate, and  
as you accumulate float rounding errors what happens.
So if you typed    
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
Er *maybe* somewhere the median visual density of one of those 'l'  
would be placed a pixel to the left or right of where it should have  
been.


--
=
=
=
========================================================================
John M. McIntosh <[hidden email]>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
=
=
=
========================================================================




Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Bert Freudenberg

On 25.04.2009, at 18:22, John M McIntosh wrote:

>
> On 25-Apr-09, at 2:02 AM, Michael Rueger wrote:
>
>> - fractional position rendering (rendering an anti-aliased glyph onto
>> a fractional pixel position)
>>
>> Michael
>>
>
> Michael glosses over the fun details of do you round, or truncate,  
> and as you accumulate float rounding errors what happens.
> So if you typed    
> llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
> Er *maybe* somewhere the median visual density of one of those 'l'  
> would be placed a pixel to the left or right of where it should have  
> been.


You both are seriously overestimating the sophistication of Squeak's  
standard text rendering ;)

It all derives from bitmap fonts, each glyph basically is a Form, and  
they are simply blitted one after the other onto the screen. No sub-
pixel positioning, no kerning. The only thing that's different for  
TrueType fonts is how the forms are generated.

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Steve Wart
Is an external dependency like http://www.freetype.org/ completely out of the question?

On Sun, Apr 26, 2009 at 4:20 AM, Bert Freudenberg <[hidden email]> wrote:

On 25.04.2009, at 18:22, John M McIntosh wrote:

On 25-Apr-09, at 2:02 AM, Michael Rueger wrote:

- fractional position rendering (rendering an anti-aliased glyph onto
a fractional pixel position)

You both are seriously overestimating the sophistication of Squeak's standard text rendering ;)

It all derives from bitmap fonts, each glyph basically is a Form, and they are simply blitted one after the other onto the screen. No sub-pixel positioning, no kerning. The only thing that's different for TrueType fonts is how the forms are generated.



Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Font rendering

Bert Freudenberg
On 26.04.2009, at 15:04, Steve Wart wrote:

Is an external dependency like http://www.freetype.org/ completely out of the question?

Not sure what you mean. There is a FreeType plugin already.

It does work for some applications. But besides huge plugins in general being not in the spirit of Smalltalk, one of the particular problems of using FreeType is that it depends on external fonts. But platform fonts vary largely between systems. That breaks one of the core promises of Squeak, platform independence.

Now I know the "re-inventing the wheel" argument. Which is why we made a Pango/FreeType rendering plugin for OLPC Etoys, where we need to support many more scripts than simple TrueType rendering could do. But it already starts to crumble. OLPC defined a platform, so we could rely on the fonts we used being installed. But now that Sugar became independent of OLPC, there is no control of the platform anymore really. Which means it's not guaranteed projects will look the same everywhere. We have not yet found a cheap solution to that problem.

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Karl Ramberg
In reply to this post by Michael Rueger-6
On 2009-04-25 11:02, Michael Rueger wrote:
On Fri, Apr 24, 2009 at 4:41 PM, Bert Freudenberg [hidden email] wrote:

  
I tried not to argue too much one way or the other, just stating what the
difference appears to be. As I wrote, it's mostly a matter of taste, and
only secondly one of technology. It's still worth investigating why Balloon
rendering looks so blurry, and if there can be done something about it.
    

Without having looked at the code, two problems that we encountered in Sophie:
- multiple anti-aliasing (first the glyph, then when rendering the glyph image)
  
This sounds time consuming. Did you guys fix this ?

Karl

- fractional position rendering (rendering an anti-aliased glyph onto
a fractional pixel position)

Michael


  



Reply | Threaded
Open this post in threaded view
|

Re: Font rendering (was Re: [squeak-dev] Re: Statistics on merging Cuis with 3.10 on Morph hierarchy)

Michael Rueger-6
Karl Ramberg wrote:

- multiple anti-aliasing (first the glyph, then when
>> rendering the glyph image)
>>
> This sounds time consuming. Did you guys fix this ?

Yes, you have to make sure you only blit glyphs (not image render them
in Cairo) and only to integer pixel coordinates.

Michael

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Font rendering

K. K. Subramaniam
In reply to this post by Bert Freudenberg
On Sunday 26 April 2009 7:49:21 pm Bert Freudenberg wrote:
> Not sure what you mean. There is a FreeType plugin already.
>
> It does work for some applications. But besides huge plugins in general
> being not in the spirit of Smalltalk, one of the particular problems of
> using FreeType is that it depends on external fonts. But platform fonts
> vary largely between systems. That breaks one of the core promises of
> Squeak, platform independence.
There is another downside - the fonts design does not scale for many non-Roman
languages. It divides glyphs on language and script basis instead of basic
graphic shapes. Common sub-shapes are duplicated across fonts. Current
rendering models support only rectangular bitblts which does not work very
well for stroke-based compositions found in many Indian and Arabic scripts.
Calligraphy is restricted to typeface designers.

An intriguing (and challenging) aspect of Squeak is the possibility of
rendering texts in terms of graphical primitives and adding support for
changing rendering algorithms on-the-fly. This would allow calligraphy and
on-the-fly additions of new languages and scripts.

Those who fear the blue plane need not apply ;-).

Subbu

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Font rendering

Steve Wart
In reply to this post by Bert Freudenberg
On Sun, Apr 26, 2009 at 7:19 AM, Bert Freudenberg <[hidden email]> wrote:
On 26.04.2009, at 15:04, Steve Wart wrote:
Is an external dependency like http://www.freetype.org/ completely out of the question?
Not sure what you mean. There is a FreeType plugin already.

Funny. I had installed it only 2 months ago and spent several hours trying to get it to work/work well in Cobalt before deciding that Accuny looked better than any of the several dozen fonts I scoured through. Don't know why I didn't think about that before I posted.

I mentioned because I had been coincidentally looking at GLTT (for another project) to render some TT fonts in OpenGL and probably read too much into the coincidence.

It does work for some applications. But besides huge plugins in general being not in the spirit of Smalltalk, one of the particular problems of using FreeType is that it depends on external fonts. But platform fonts vary largely between systems. That breaks one of the core promises of Squeak, platform independence.

I think this is a problem for a lot of projects and maybe FreeType isn't the answer. But it would be nice to have an alternative to the bitmap fonts and the TrueType model is very rich (I don't know if it's rich enough for all human languages but if there is another model that can live up to that standard I'd be interested to find out more). Many decent free fonts are available so I don't think external dependencies need to be an issue (they're just data), but I don't understand why fonts tend to be a platform problem. How is font rendering/lookup dependent on the underlying OS? Can that dependency be broken?
 
Now I know the "re-inventing the wheel" argument. Which is why we made a Pango/FreeType rendering plugin for OLPC Etoys, where we need to support many more scripts than simple TrueType rendering could do. But it already starts to crumble. OLPC defined a platform, so we could rely on the fonts we used being installed. But now that Sugar became independent of OLPC, there is no control of the platform anymore really. Which means it's not guaranteed projects will look the same everywhere. We have not yet found a cheap solution to that problem.

It does make sense in some contexts to do everything in Smalltalk. Clearly changing the font model is a huge amount of work and there is a long legacy of development that depends on fonts working the way they do now. But Squeak has for years shipped with its own fonts installed, why do we need to depend on the platform for that?

Steve


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Font rendering

Bert Freudenberg

On 27.04.2009, at 17:30, Steve Wart wrote:

On Sun, Apr 26, 2009 at 7:19 AM, Bert Freudenberg <[hidden email]> wrote:
On 26.04.2009, at 15:04, Steve Wart wrote:
Is an external dependency like http://www.freetype.org/ completely out of the question?
Not sure what you mean. There is a FreeType plugin already.

Funny. I had installed it only 2 months ago and spent several hours trying to get it to work/work well in Cobalt before deciding that Accuny looked better than any of the several dozen fonts I scoured through. Don't know why I didn't think about that before I posted.

I mentioned because I had been coincidentally looking at GLTT (for another project) to render some TT fonts in OpenGL and probably read too much into the coincidence.

It does work for some applications. But besides huge plugins in general being not in the spirit of Smalltalk, one of the particular problems of using FreeType is that it depends on external fonts. But platform fonts vary largely between systems. That breaks one of the core promises of Squeak, platform independence.

I think this is a problem for a lot of projects and maybe FreeType isn't the answer. But it would be nice to have an alternative to the bitmap fonts and the TrueType model is very rich (I don't know if it's rich enough for all human languages but if there is another model that can live up to that standard I'd be interested to find out more). Many decent free fonts are available so I don't think external dependencies need to be an issue (they're just data), but I don't understand why fonts tend to be a platform problem. How is font rendering/lookup dependent on the underlying OS? Can that dependency be broken?

By bundling fonts, sure. But trying to convince Linux package maintainers that this is a necessity ... that's going to be hard.

Now I know the "re-inventing the wheel" argument. Which is why we made a Pango/FreeType rendering plugin for OLPC Etoys, where we need to support many more scripts than simple TrueType rendering could do. But it already starts to crumble. OLPC defined a platform, so we could rely on the fonts we used being installed. But now that Sugar became independent of OLPC, there is no control of the platform anymore really. Which means it's not guaranteed projects will look the same everywhere. We have not yet found a cheap solution to that problem.

It does make sense in some contexts to do everything in Smalltalk. Clearly changing the font model is a huge amount of work and there is a long legacy of development that depends on fonts working the way they do now. But Squeak has for years shipped with its own fonts installed, why do we need to depend on the platform for that?

We don't need to, true, but in their current form the plugins cannot render fonts embedded in the image.

- Bert -




12