Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
December 2015
- 990 messages
Re: [Pharo-dev] Unicode Support
by EuanM
Thanks for those pointers, Steph. I'll make sure they are on my
reading list. (I have a limited weekly time-budget for Unicode work,
but I expect this is a long-term project).
I'll keep in touch with Steph, so any new facilities can be
immediately useful to Pharo, and someone can guide them to a proper
home in Pharo's Class hierarchy.
For now, I've stuck stuff on my blog,
http://smalltalkinsmallsteps.blogspot.co.uk/2015/12/utf-8-for-cuis-pharo-an…
in an email here
and at smalltalk.uk.to/unicode-utf.html
On 5 December 2015 at 13:08, stepharo <stepharo(a)free.fr> wrote:
> Hi EuanM
>
> Le 4/12/15 12:42, EuanM a écrit :
>>
>> I'm currently groping my way to seeing how feature-complete our
>> Unicode support is. I am doing this to establish what still needs to
>> be done to provide full Unicode support.
>
>
> this is great. Thanks for pushing this. I wrote and collected some roadmap
> (analyses on different topics)
> on the pharo github project feel free to add this one there.
>>
>>
>> This seems to me to be an area where it would be best to write it
>> once, and then have the same codebase incorporated into the Smalltalks
>> that most share a common ancestry.
>>
>> I am keen to get: equality-testing for strings; sortability for
>> strings which have ligatures and diacritic characters; and correct
>> round-tripping of data.
>
> Go!
> My suggestion is
> start small
> make steady progress
> write tests
> commit often :)
>
> Stef
>
> What is the french phoneBook ordering because this is the first time I hear
> about it.
>
>>
>> Call to action:
>> ==========
>>
>> If you have comments on these proposals - such as "but we already have
>> that facility" or "the reason we do not have these facilities is
>> because they are dog-slow" - please let me know them.
>>
>> If you would like to help out, please let me know.
>>
>> If you have Unicode experience and expertise, and would like to be, or
>> would be willing to be, in the 'council of experts' for this project,
>> please let me know.
>>
>> If you have comments or ideas on anything mentioned in this email
>>
>> In the first instance, the initiative's website will be:
>> http://smalltalk.uk.to/unicode.html
>>
>> I have created a SqueakSource.com project called UnicodeSupport
>>
>> I want to avoid re-inventing any facilities which already exist.
>> Except where they prevent us reaching the goals of:
>> - sortable UTF8 strings
>> - sortable UTF16 strings
>> - equivalence testing of 2 UTF8 strings
>> - equivalence testing of 2 UTF16 strings
>> - round-tripping UTF8 strings through Smalltalk
>> - roundtripping UTF16 strings through Smalltalk.
>> As I understand it, we have limited Unicode support atm.
>>
>> Current state of play
>> ===============
>> ByteString gets converted to WideString when need is automagically
>> detected.
>>
>> Is there anything else that currently exists?
>>
>> Definition of Terms
>> ==============
>> A quick definition of terms before I go any further:
>>
>> Standard terms from the Unicode standard
>> ===============================
>> a compatibility character : an additional encoding of a *normal*
>> character, for compatibility and round-trip conversion purposes. For
>> instance, a 1-byte encoding of a Latin character with a diacritic.
>>
>> Made-up terms
>> ============
>> a convenience codepoint : a single codepoint which represents an item
>> that is also encoded as a string of codepoints.
>>
>> (I tend to use the terms compatibility character and compatibility
>> codepoint interchangably. The standard only refers to them as
>> compatibility characters. However, the standard is determined to
>> emphasise that characters are abstract and that codepoints are
>> concrete. So I think it is often more useful and productive to think
>> of compatibility or convenience codepoints).
>>
>> a composed character : a character made up of several codepoints
>>
>> Unicode encoding explained
>> =====================
>> A convenience codepoint can therefore be thought of as a code point
>> used for a character which also has a composed form.
>>
>> The way Unicode works is that sometimes you can encode a character in
>> one byte, sometimes not. Sometimes you can encode it in two bytes,
>> sometimes not.
>>
>> You can therefore have a long stream of ASCII which is single-byte
>> Unicode. If there is an occasional Cyrillic or Greek character in the
>> stream, it would be represented either by a compatibility character or
>> by a multi-byte combination.
>>
>> Using compatibility characters can prevent proper sorting and
>> equivalence testing.
>>
>> Using "pure" Unicode, ie. "normal encodings", can cause compatibility
>> and round-tripping probelms. Although avoiding them can *also* cause
>> compatibility issues and round-tripping problems.
>>
>> Currently my thinking is:
>>
>> a Utf8String class
>> an Ordered collection, with 1 byte characters as the modal element,
>> but short arrays of wider strings where necessary
>> a Utf16String class
>> an Ordered collection, with 2 byte characters as the modal element,
>> but short arrays of wider strings
>> beginning with a 2-byte endianness indicator.
>>
>> Utf8Strings sometimes need to be sortable, and sometimes need to be
>> compatible.
>>
>> So my thinking is that Utf8String will contain convenience codepoints,
>> for round-tripping. And where there are multiple convenience
>> codepoints for a character, that it standardises on one.
>>
>> And that there is a Utf8SortableString which uses *only* normal
>> characters.
>>
>> We then need methods to convert between the two.
>>
>> aUtf8String asUtf8SortableString
>>
>> and
>>
>> aUtf8SortableString asUtf8String
>>
>>
>> Sort orders are culture and context dependent - Sweden and Germany
>> have different sort orders for the same diacritic-ed characters. Some
>> countries have one order in general usage, and another for specific
>> usages, such as phone directories (e.g. UK and France)
>>
>> Similarly for Utf16 : Utf16String and Utf16SortableString and
>> conversion methods
>>
>> A list of sorted words would be a SortedCollection, and there could be
>> pre-prepared sortBlocks for them, e.g. frPhoneBookOrder, deOrder,
>> seOrder, ukOrder, etc
>>
>> along the lines of
>> aListOfWords := SortedCollection sortBlock: deOrder
>>
>> If a word is either a Utf8SortableString, or a well-formed Utf8String,
>> then we can perform equivalence testing on them trivially.
>>
>> To make sure a Utf8String is well formed, we would need to have a way
>> of cleaning up any convenience codepoints which were valid, but which
>> were for a character which has multiple equally-valid alternative
>> convenience codepoints, and for which the string currently had the
>> "wrong" convenience codepoint. (i.e for any character with valid
>> alternative convenience codepoints, we would choose one to be in the
>> well-formed Utf8String, and we would need a method for cleaning the
>> alternative convenience codepoints out of the string, and replacing
>> them with the chosen approved convenience codepoint.
>>
>> aUtf8String cleanUtf8String
>>
>> With WideString, a lot of the issues disappear - except
>> round-tripping(although I'm sure I have seen something recently about
>> 4-byte strings that also have an additional bit. Which would make
>> some Unicode characters 5-bytes long.)
>>
>>
>> (I'm starting to zone out now - if I've overlooked anything - obvious,
>> subtle, or somewhere in between, please let me know)
>>
>> Cheers,
>> Euan
>>
>>
>
>
Dec. 7, 2015
Re: [Pharo-dev] Unicode Support
by EuanM
This a long email. A *lot* of it is encapsulated in the Venn diagram both:
http://smalltalk.uk.to/unicode-utf8.html
and my Smalltalk in Small Steps blog at:
http://smalltalkinsmallsteps.blogspot.co.uk/2015/12/utf-8-for-cuis-pharo-an…
My current thinking, and understanding.
==============================
0) a) ASCII and ISO-8859-1 consist of characters encoded in 1 byte.
b) UTF-8 can encode all of those characters in 1 byte, but can
prefer some of them to be encoded as sequences of multiple bytes. And
can encode additional characters as sequences of multiple bytes.
1) Smalltalk has long had multiple String classes.
2) Any UTF16 Unicode codepoint which has a codepoint of 00nn hex
is encoded as a UTF-8 codepoint of nn hex.
3) All valid ISO-8859-1 characters have a character code between 20
hex and 7E hex, or between A0 hex and FF hex.
https://en.wikipedia.org/wiki/ISO/IEC_8859-1
4) All valid ASCII characters have a character code between 00 hex and 7E hex.
https://en.wikipedia.org/wiki/ASCII
5) a) All character codes which are defined within ISO-8859-1 and also
defined within ASCII. (i.e. character codes 20 hex to 7E hex) are
defined identically in both.
b) All printable ASCII characters are defined identically in both
ASCII and ISO-8859-1
6) All character codes defined in ASCII (00 hex to 7E hex) are
defined identically in Unicode UTF-8.
7) All character codes defined in ISO-8859-1 (20 hex - 7E hex ; A0 hex
- FF hex ) are defined identically in UTF-8.
8) => some Unicode codepoints map to both ASCII and ISO-8859-1.
all ASCII maps 1:1 to Unicode UTF-8
all ISO-8859-1 maps 1:1 to Unicode UTF-8
9) All ByteStrings elements which are either a valid ISO-8859-1
character or a valid ASCII character are *also* a valid UTF-8
character.
10) ISO-8859-1 characters representing a character with a diacritic,
or a two-character ligature, have no ASCII equivalent. In Unicode
UTF-8, those character codes which are representing compound glyphs,
are called "compatibility codepoints".
11) The preferred Unicode representation of the characters which have
compatibility codepoints is as a a short set of codepoints
representing the characters which are combined together to form the
glyph of the convenience codepoint, as a sequence of bytes
representing the component characters.
12) Some concrete examples:
A - aka Upper Case A
In ASCII, in ISO 8859-1
ASCII A - 41 hex
ISO-8859-1 A - 41 hex
UTF-8 A - 41 hex
BEL (a bell sound, often invoked by a Ctrl-g keyboard chord)
In ASCII, not in ISO 8859-1
ASCII : BEL - 07 hex
ISO-8859-1 : 07 hex is not a valid character code
UTF-8 : BEL - 07 hex
£ (GBP currency symbol)
In ISO-8859-1, not in ASCII
ASCII : A3 hex is not a valid ASCII code
UTF-8: £ - A3 hex
ISO-8859-1: £ - A3 hex
Upper Case C cedilla
In ISO-8859-1, not in ASCII, in UTF-8 as a compatibility codepoint
*and* a composed set of codepoints
ASCII : C7 hex is not a valid ASCII character code
ISO-8859-1 : Upper Case C cedilla - C7 hex
UTF-8 : Upper Case C cedilla (compatibility codepoint) - C7 hex
Unicode preferred Upper Case C cedilla (composed set of codepoints)
Upper case C 0043 hex (Upper case C)
followed by
cedilla 00B8 hex (cedilla)
13) For any valid ASCII string *and* for any valid ISO-8859-1 string,
aByteString is completely adequate for editing and display.
14) When sorting any valid ASCII string *or* any valid ISO-8859-1
string, upper and lower case versions of the same character will be
treated differently.
15) When sorting any valid ISO-8859-1 string containing
letter+diacritic combination glyphs or ligature combination glyphs,
the glyphs in combination will treated differently to a "plain" glyph
of the character
i.e. "C" and "C cedilla" will be treated very differently. "Ã" and
"fs" will be treated very differently.
16) Different nations have different rules about where diacritic-ed
characted and ligature pairs should be placed when in alphabetical
order.
17) Some nations even have multiple standards - e.g. surnames
beginning either "M superscript-c" or "M superscript-a superscript-c"
are treated as beginning equivalently in UK phone directories, but not
in other situations.
Some practical upshots
==================
1) Cuis and its ISO-8859-1 encoding is *exactly* the same as UTF-8,
for any single character it considers valid, or any ByteString it has
made up of characters it considers valid.
2) Any ByteString is valid UTF-8 in any of Squeak, Pharo, Cuis or any
other Smalltalk with a single byte ByteString following ASCII or
ISO-8859-1.
3) Any Smalltalk (or derivative language) using ByteString can
immediately consider it's ByteString as valid UTF-8, as long as it
also considers the ByteSring as valid ASCII and/or ISO-8859-1.
4) All of those can be successfully exported to any system using UTF-8
(e.g. HTML).
5) To successfully *accept* all UTF-8 we much be able to do either:
a) accept UTF-8 strings with composed characters
b) convert UTF-8 strings with composed characters into UTF-8 strings
that use *only* compatibility codepoints.
Class + protocol proposals
a Utf8CompatibilityString class.
asByteString - ensure only compatibility codepoints are used.
Ensure it doews not encode characters above 00FF hex.
asIso8859String - ensures only compatibility codepoints are used,
and that the characters are each valid ISO 8859-1
asAsciiString - ensures only characters 00hex - 7F hex are used.
asUtf8ComposedIso8859String - ensures all compatibility codepoints
are expanded into small OrderedCollections of codepoints
a Utf8ComposedIso8859String class - will provide sortable and
comparable UTF8 strings of all ASCII and ISO 8859-1 strings.
Then a Utf8SortableCollection class - a collection of
Utf8ComposedIso8859Strings words and phrases.
Custom sortBlocks will define the applicable sort order.
We can create a collection... a Dictionary, thinking about it, of
named, prefabricated sortBlocks.
This will work for all UTF8 strings of ISO-8859-1 and ASCII strings.
If anyone has better names for the classes, please let me know.
If anyone else wants to help
- build these,
- create SUnit tests for these
- write documentation for these
Please let me know.
n.b. I have had absolutely no experience of Ropes.
My own background with this stuff: In the early 90's as a Project
Manager implementing office automation systems across a global
company, with offices in the Americas, Western, Eastern and Central
Europe, (including Slavic and Cyrillic users) nations, Japan and
China. The mission-critical application was word-processing.
Our offices were spread around the globe, and we needed those offices
to successfully exchange documents with their sister offices, and with
the customers in each region the offices were in.
Unicode was then new, and our platform supplier was the NeXT
Corporation, who had been founder members in of the Unicode Consortium
in 1990.
So far: I've read the latest version of the Unicode Standard (v8.0).
This is freely downloadable.
I've purchased a paper copy of an earlier release. New releases
typically consist additional codespaces (i.e. alphabets). So old
copies are useful, as well as cheap. (Paper copies of version 4.0
are available second-hand for < $10 / â¬10).
The typical change with each release is the addition of further
codespaces (i.e alphabets (more or less) ), so you don't lose a lot.
(I'll be going through my V4.0 just to make sure)
Cheers,
Euan
On 5 December 2015 at 13:08, stepharo <stepharo(a)free.fr> wrote:
> Hi EuanM
>
> Le 4/12/15 12:42, EuanM a écrit :
>>
>> I'm currently groping my way to seeing how feature-complete our
>> Unicode support is. I am doing this to establish what still needs to
>> be done to provide full Unicode support.
>
>
> this is great. Thanks for pushing this. I wrote and collected some roadmap
> (analyses on different topics)
> on the pharo github project feel free to add this one there.
>>
>>
>> This seems to me to be an area where it would be best to write it
>> once, and then have the same codebase incorporated into the Smalltalks
>> that most share a common ancestry.
>>
>> I am keen to get: equality-testing for strings; sortability for
>> strings which have ligatures and diacritic characters; and correct
>> round-tripping of data.
>
> Go!
> My suggestion is
> start small
> make steady progress
> write tests
> commit often :)
>
> Stef
>
> What is the french phoneBook ordering because this is the first time I hear
> about it.
>
>>
>> Call to action:
>> ==========
>>
>> If you have comments on these proposals - such as "but we already have
>> that facility" or "the reason we do not have these facilities is
>> because they are dog-slow" - please let me know them.
>>
>> If you would like to help out, please let me know.
>>
>> If you have Unicode experience and expertise, and would like to be, or
>> would be willing to be, in the 'council of experts' for this project,
>> please let me know.
>>
>> If you have comments or ideas on anything mentioned in this email
>>
>> In the first instance, the initiative's website will be:
>> http://smalltalk.uk.to/unicode.html
>>
>> I have created a SqueakSource.com project called UnicodeSupport
>>
>> I want to avoid re-inventing any facilities which already exist.
>> Except where they prevent us reaching the goals of:
>> - sortable UTF8 strings
>> - sortable UTF16 strings
>> - equivalence testing of 2 UTF8 strings
>> - equivalence testing of 2 UTF16 strings
>> - round-tripping UTF8 strings through Smalltalk
>> - roundtripping UTF16 strings through Smalltalk.
>> As I understand it, we have limited Unicode support atm.
>>
>> Current state of play
>> ===============
>> ByteString gets converted to WideString when need is automagically
>> detected.
>>
>> Is there anything else that currently exists?
>>
>> Definition of Terms
>> ==============
>> A quick definition of terms before I go any further:
>>
>> Standard terms from the Unicode standard
>> ===============================
>> a compatibility character : an additional encoding of a *normal*
>> character, for compatibility and round-trip conversion purposes. For
>> instance, a 1-byte encoding of a Latin character with a diacritic.
>>
>> Made-up terms
>> ============
>> a convenience codepoint : a single codepoint which represents an item
>> that is also encoded as a string of codepoints.
>>
>> (I tend to use the terms compatibility character and compatibility
>> codepoint interchangably. The standard only refers to them as
>> compatibility characters. However, the standard is determined to
>> emphasise that characters are abstract and that codepoints are
>> concrete. So I think it is often more useful and productive to think
>> of compatibility or convenience codepoints).
>>
>> a composed character : a character made up of several codepoints
>>
>> Unicode encoding explained
>> =====================
>> A convenience codepoint can therefore be thought of as a code point
>> used for a character which also has a composed form.
>>
>> The way Unicode works is that sometimes you can encode a character in
>> one byte, sometimes not. Sometimes you can encode it in two bytes,
>> sometimes not.
>>
>> You can therefore have a long stream of ASCII which is single-byte
>> Unicode. If there is an occasional Cyrillic or Greek character in the
>> stream, it would be represented either by a compatibility character or
>> by a multi-byte combination.
>>
>> Using compatibility characters can prevent proper sorting and
>> equivalence testing.
>>
>> Using "pure" Unicode, ie. "normal encodings", can cause compatibility
>> and round-tripping probelms. Although avoiding them can *also* cause
>> compatibility issues and round-tripping problems.
>>
>> Currently my thinking is:
>>
>> a Utf8String class
>> an Ordered collection, with 1 byte characters as the modal element,
>> but short arrays of wider strings where necessary
>> a Utf16String class
>> an Ordered collection, with 2 byte characters as the modal element,
>> but short arrays of wider strings
>> beginning with a 2-byte endianness indicator.
>>
>> Utf8Strings sometimes need to be sortable, and sometimes need to be
>> compatible.
>>
>> So my thinking is that Utf8String will contain convenience codepoints,
>> for round-tripping. And where there are multiple convenience
>> codepoints for a character, that it standardises on one.
>>
>> And that there is a Utf8SortableString which uses *only* normal
>> characters.
>>
>> We then need methods to convert between the two.
>>
>> aUtf8String asUtf8SortableString
>>
>> and
>>
>> aUtf8SortableString asUtf8String
>>
>>
>> Sort orders are culture and context dependent - Sweden and Germany
>> have different sort orders for the same diacritic-ed characters. Some
>> countries have one order in general usage, and another for specific
>> usages, such as phone directories (e.g. UK and France)
>>
>> Similarly for Utf16 : Utf16String and Utf16SortableString and
>> conversion methods
>>
>> A list of sorted words would be a SortedCollection, and there could be
>> pre-prepared sortBlocks for them, e.g. frPhoneBookOrder, deOrder,
>> seOrder, ukOrder, etc
>>
>> along the lines of
>> aListOfWords := SortedCollection sortBlock: deOrder
>>
>> If a word is either a Utf8SortableString, or a well-formed Utf8String,
>> then we can perform equivalence testing on them trivially.
>>
>> To make sure a Utf8String is well formed, we would need to have a way
>> of cleaning up any convenience codepoints which were valid, but which
>> were for a character which has multiple equally-valid alternative
>> convenience codepoints, and for which the string currently had the
>> "wrong" convenience codepoint. (i.e for any character with valid
>> alternative convenience codepoints, we would choose one to be in the
>> well-formed Utf8String, and we would need a method for cleaning the
>> alternative convenience codepoints out of the string, and replacing
>> them with the chosen approved convenience codepoint.
>>
>> aUtf8String cleanUtf8String
>>
>> With WideString, a lot of the issues disappear - except
>> round-tripping(although I'm sure I have seen something recently about
>> 4-byte strings that also have an additional bit. Which would make
>> some Unicode characters 5-bytes long.)
>>
>>
>> (I'm starting to zone out now - if I've overlooked anything - obvious,
>> subtle, or somewhere in between, please let me know)
>>
>> Cheers,
>> Euan
>>
>>
>
>
Dec. 7, 2015
Re: [Pharo-dev] Community Building [was: please name your thread]
by Tudor Girba
Hi,
> On Dec 4, 2015, at 1:19 AM, EuanM <euanmee(a)gmail.com> wrote:
>
> Tudor,
>
> You say that we are talking about different mails. I hope so.
Most of the talk in the original thread was about your mail about Oracle and Java. I still fail to see how this is relevant.
> "We need to focus on building a great platform."
> "acting is the only thing that will push us further.".
>
> I agree that action is what achieves things.
>
> To make sure the correct actions are taken, in a productive and
> efficient way, it can be valuable to take stock and think,
> periodically.
I prefer to be thinking all the time, actually :).
> It is important to carry out a variety of actions, not solely coding.
You seem to imply that the only actions that are being undertaken or encouraged are code related. That is far from reality.
However, we do favor actions. For example, when you offered a tutorial, you were welcome and you received direct feedback. This is the effect of action.
> Too narrow a focus on keeping a small group of people coding as fast
> as they can is not the fastest path to the end goal. It can easily
> lead to improving the platform at a slower rate than other great
> platforms are improving - a process of relative decay.
>
> I would like to help with community building efforts. But unless the
> leaders of the community also help and prioritise such efforts, they
> are unlikely to make any difference.
>
> There is no point gaining the interest of new people unless we have
> mechanisms in place to make them welcome, and put them on the path to
> becoming valuable contributors to the community.
>
> Small communities with low levels of resource must, to succeed, do
> things more efficiently than large groups with lots of funding.
>
> Currently, we lack:
> 1) debugged beginner's training materials.
> 2) community processes for getting the interest of new people
> 3) community processes for onboarding interested new people with the
> lowest loss rate
Please be concrete. What do you think is missing concretely?
> 4) community processes for providing positive feedback and
> encouragement to people taking these actions.
We think this actually happens. For example, you received that feedback.
> 5) community processes for stopping bit-rot in mature libraries and
> facilities - including key facilities like SqueakSource, Smalltalkhub
> and SqueakSource3
This requires actions. Btw, SmalltalkHub is maintained through the money that the Consortium and Inria are bringing in the game. This is possible due to actions that are far from simple coding.
> 6) community processes to help focus resources on merging libraries
> into a single best-of-breed best-of-breed mature libraries. We often
> have two competing incomplete libraries for any given problem space,
> e.g. Spec/Bloc, MuTalk / SMutant
I do not see how this is a problem. Having competing solutions is a good thing.
The way we deal with these problems is that we try to have people define projects and work with these for a longer time.
For example, Bloc is a long term project started several years before and that now starts to come to fruition and will become a core piece in Pharo. GT was created as a separate project since more than 5 years until parts of it became ready to be integrated. And the list goes on.
This does not mean that we do not want to have more consolidation. We do and we want people to pick an area and provide longer term support.
> 7) community processes to document the community processes
> 8) documented processes for bringing newcomers up to speed with "the
> way things are done round hereâ
Letâs be concrete on this point. Please list the things that you have needed. We can use that experience and produce something concrete that will help other people that will come in the future.
> We need to take these issues seriously - they affect how fast things
> get done around here much more than this amount of time away from
> decoding Pharo-core does
But, we are taking it seriously.
> Closing down all discussions where these issues surface does not
> communicate "We welcome any action that anyone would want to undertake
> in this direction". Quite the reverse.
I did not close any discussion. Only the ones about fuzzy topics that lead to nowhere in particular.
> We need to do more than just Smalltalk the Smalltalk - we need to walk the walk.
Thank you. That is what I was calling for.
Cheers,
Doru
> Cheers,
> Euan
>
> Here is the thread I am keeping alive:
> On 30 November 2015 at 23:32, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>> In any case, please name you thread appropriately. And, we should remember that acting is the only thing that will push us further.
>
>>> On Dec 1, 2015, at 12:18 AM, EuanM <euanmee(a)gmail.com> wrote:
>>> Welcoming is, as welcoming does.
>
>>> On 30 November 2015 at 11:20, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>>>> Increasing the community is certainly important, and we welcome any action that anyone would want to undertake in this direction.
>
>>>>> On Nov 30, 2015, at 4:44 AM, EuanM <euanmee(a)gmail.com> wrote:
>>>>> We also need to concentrate on building our community.
>>>>>
>>>>> We build a better platform faster if we have more people.
>>>>>
>>>>> We build a more valuable platform if we have a wider range of valuable
>>>>> use cases to target.
>>>>>
>>>>> Unless and until we hit a critical mass of people joining our
>>>>> community, we *need* to spend some of our focus on community-building.
>>>>>
>>>>> Part of great is being able to build things to sufficient completeness
>>>>> *and* keep them in working order over the long haul. This is easier
>>>>> with more contributors.
>
>>>>>>> On Nov 27, 2015, at 10:05 PM, EuanM <euanmee(a)gmail.com> wrote:
>>>>>>> We *should* wish to take advantage of [the rumoured Java] announcement.
>>>>>>>
>>>>>>> After all, think what difference having even 0.01% of the world's Java
>>>>>>> coders moving to Smalltalk would make. How could we help that
>>>>>>> happen?
>
> [Full thread at foot of mail]
>
> ====================
>
>
>
> On 30 November 2015 at 23:32, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>> Hi,
>>
>> I think we are not talking about the same email.
>>
>> In any case, please name you thread appropriately. And, we should remember that acting is the only thing that will push us further.
>>
>> Cheers,
>> Tudor
>>
>>
>>> On Dec 1, 2015, at 12:18 AM, EuanM <euanmee(a)gmail.com> wrote:
>>>
>>> Tudor, the email that you replied to, saying the discussion should be
>>> closed down, was specifically about the impacts on our community and
>>> how to leverage them.
>>>
>>> Welcoming is, as welcoming does.
>>>
>>> On 30 November 2015 at 11:20, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>>>> Hi,
>>>>
>>>> Increasing the community is certainly important, and we welcome any action that anyone would want to undertake in this direction.
>>>>
>>>> However, talking about the future of Java does not fall in this category.
>>>>
>>>> Cheers,
>>>> Doru
>>>>
>>>>
>>>>> On Nov 30, 2015, at 4:44 AM, EuanM <euanmee(a)gmail.com> wrote:
>>>>>
>>>>> We also need to concentrate on building our community.
>>>>>
>>>>> We build a better platform faster if we have more people.
>>>>>
>>>>> We build a more valuable platform if we have a wider range of valuable
>>>>> use cases to target.
>>>>>
>>>>> Unless and until we hit a critical mass of people joining our
>>>>> community, we *need* to spend some of our focus on community-building.
>>>>>
>>>>> Part of great is being able to build things to sufficient completeness
>>>>> *and* keep them in working order over the long haul. This is easier
>>>>> with more contributors.
>>>>>
>>>>> On 27 November 2015 at 21:27, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>>>>>> Hello everyone,
>>>>>>
>>>>>> Please stop this thread on this mailing list. We need to focus on building a great platform.
>>>>>>
>>>>>> Cheers,
>>>>>> Doru
>>>>>>
>>>>>>
>>>>>>> On Nov 27, 2015, at 10:05 PM, EuanM <euanmee(a)gmail.com> wrote:
>>>>>>>
>>>>>>> First of all - is this true? Where can we read about it?
>>>>>>>
>>>>>>> I cannot find anything about this at
>>>>>>> https://www.oracle.com/search/press
>>>>>>>
>>>>>>> =======================================
>>>>>>>
>>>>>>> If Oracle did make this statement, then what people have said so far
>>>>>>> is true. BUT...
>>>>>>>
>>>>>>> Java got about 40% of its initial momentum from IBM dumping VisualAge
>>>>>>> and putting all their resources into Java.
>>>>>>>
>>>>>>> Oracle are targetting this move at IBM more than anyone else.
>>>>>>>
>>>>>>> IBM will start to think about how to migrate from Java - as Oracle are
>>>>>>> telling them they will have to. (It's OUR bat and its OUR ball, and
>>>>>>> no-one else can play with it. Not even the Java Community). And
>>>>>>> IBM's coders do not pay for Java, Eclipse users do not pay for Java. I
>>>>>>> expect the licence-fee income for JREs is small.
>>>>>>>
>>>>>>> Oracle are doing one of two things - announcing that Java is for sale
>>>>>>> to device providers - phones (Google is the obvious buyer) or the
>>>>>>> impending Internet of Things (which was what Java was designed for
>>>>>>> originally) or announcing that no-one making an internet of things
>>>>>>> offering should consider Java.
>>>>>>>
>>>>>>> Yes, things live on and on in a kind of zombie state. So yes, things
>>>>>>> live on as long as their ecosystem does. And they gently wither and
>>>>>>> their ecosystem withers is a long slow drawn out spiral. Which is why
>>>>>>> we still have Cobol.
>>>>>>>
>>>>>>> People and organisations tend to move from one technology to another
>>>>>>> in an incremental fashion. Swapping a little bit here, and a little
>>>>>>> bit there.
>>>>>>>
>>>>>>> The new target platforms are ones which
>>>>>>> 1) look like they have longevity, and
>>>>>>> 2) have a migration pathway that provides incremental steps.
>>>>>>>
>>>>>>> Offering a compelling advantage is good - but only if the steps 1)
>>>>>>> and 2) are catered to.
>>>>>>>
>>>>>>> IBM VisualAge Smalltalk is still robust, commercially available
>>>>>>> software, and VisualStudio and Gemstone continue to represent
>>>>>>> Smalltalk out to the big world of corporate development.
>>>>>>>
>>>>>>> So that's a start.
>>>>>>>
>>>>>>> Say only 5% of the Java world moves away from Java each year, as a
>>>>>>> result of this announcement.
>>>>>>>
>>>>>>> We *should* wish to take advantage of this announcement.
>>>>>>>
>>>>>>> After all, think what difference having even 0.01% of the world's Java
>>>>>>> coders moving to Smalltalk would make. How could we help that
>>>>>>> happen?
>>>>>>>
>>>>>>> Think what it would be like to have thought-leaders like Kent Beck and
>>>>>>> Ward Cunningham back in the Smalltalk fold. How could we help that
>>>>>>> happen?
>>>>>>>
>>>>>>> Think what it would be like to get back all the universities who moved
>>>>>>> from teaching OO concepts using Smalltalk into teaching them via Java.
>>>>>>> We now know almost all the ones using Smalltalk as a teaching language
>>>>>>> by name. Does anyone know even how many universities teach OO via
>>>>>>> Java? What would it be like if 5% of those universities moved to
>>>>>>> Smalltalk each year. How could we help that happen?
>>>>>>>
>>>>>>> Next - do we have any big brained thinkers who can see specific ways
>>>>>>> we can improve interoperation between Java facilities and libraries
>>>>>>> and the Smalltalks? For the next 12 months, we should work on Java
>>>>>>> integration, rather than C++ integration. We should identify the
>>>>>>> three best things for us to do in this regard, and make them polished
>>>>>>> and compelling. Who is in a position to help that happen?
>>>>>>>
>>>>>>> The final way we can take advantage help the maximum number of people
>>>>>>> find their way to us is to present a united community front to the
>>>>>>> outside world. In the same way I am both a European and a Scot, we
>>>>>>> need to be Smalltalkers *and*members of our individual
>>>>>>> Smalltalk-platform communities.
>>>>>>>
>>>>>>> How can we help make that happen?
>>>>>>>
>>>>>>> This is not a silver bullet. It's going to cause a long-term trend in
>>>>>>> events, not a sudden abrupt change. But it will have a real, if
>>>>>>> gradual effect. (assuming that
>>>>>>>
>>>>>>> Equally, it is not something we should ignore. It is something we
>>>>>>> should make use of. We need to put effort into raising our profile
>>>>>>> over the next 6 months.
>>>>>>>
>
--
www.tudorgirba.com
"Live like you mean it."
Dec. 7, 2015
Re: [Pharo-dev] model vs interactionModel in rubric
by Nicolai Hess
2015-12-06 15:28 GMT+01:00 Andrei Chis <chisvasileandrei(a)gmail.com>:
> Hi,
>
> RubScrolledTextModel fails sometimes if the model does not have an
> interaction model set.
> For example in a few places there is a check that verifies if the model
> understands a message and then the message is send to the interaction model.
>
> evaluate: aStream andDo: aBlock
> ....
> (self model respondsTo: #doItReceiver) "check on the model"
> ifTrue: [ rcvr := self model doItReceiver.
> ctxt := self model doItContext]
>
> And then doItReceiver is implemented like:
> doItReceiver
> ^ interactionModel ifNotNil: [ :im | im doItReceiver ] "message send to
> the interaction model"
>
> Also in some cases a condition is checked on the model and then the actual
> result is obtained from the interaction model:
>
> (self model systemNavigation allImplementorsOf: aSelector) isEmpty
> ifTrue: [ self internalCallToBrowse: aSelector ]
> ifFalse: [ self model interactionModel systemNavigation
> browseAllImplementorsOf: aSelector ]
>
> I'll say these are bugs.
> Also should a RubScrolledTextModel always have an interaction model?
>
Yes, I am unsure about this too. (I just asked the same a some days ago).
This makes some problems for RubPluggableTextMorphs, where some actions are
delegated to whatever model is used.
>
> Cheers,
> Andrei
>
Dec. 6, 2015
Re: [Pharo-dev] [squeak-dev] Unicode Support
by Gabriel Cotelli
As far as I know Dart also uses utf-16 for Strings
On Dec 6, 2015 16:33, "Mark Bestley" <st(a)bestley.co.uk> wrote:
> On 06/12/2015 19:08, Sven Van Caekenberghe wrote:
>
>> BTW, does anyone know of any programming language that did go that way or
>> has a library that directly implements 'storing all strings as utf-8' ?
>>
> Java is UTF-16
>
> Python3, Go and Swift are UTF-8 as I suspect are other new languages not
> based on .Net or the JVM
>
> Mark
>
>
>>
>
> On 06 Dec 2015, at 18:45, Sven Van Caekenberghe <sven(a)stfx.eu> wrote:
>>>
>>> Well written, Todd. I agree, the loss of indexing might not be that big
>>> a problem in practice. The only way to find out it to try an experiment I
>>> guess.
>>>
>>> Sven
>>>
>>> On 06 Dec 2015, at 17:37, Todd Blanchard <tblanchard(a)mac.com> wrote:
>>>>
>>>> (Resent because of bounce notification (email handling in osx is really
>>>> beginning to annoy me). Sorry if its a dup)
>>>>
>>>> I used to worry a lot about strings being indexable. And then I
>>>> eventually let go of that and realized that it isn't a particularly
>>>> important property for them to have.
>>>>
>>>> I think you will find that UTF8 is generally the most convenient for a
>>>> lot of things but its a bit like light in that you treat it alternately as
>>>> a wave or particle depending on what you are trying to do.
>>>>
>>>> So goes strings - they can be treated alternately as streams or byte
>>>> arrays (not character arrays - stop thinking in characters). In practice,
>>>> this tends to not be a problem since a lot of the times when you want to
>>>> replace a character or pick out the nth one you are doing something very
>>>> computerish and the characters you are working with are the single byte
>>>> (ASCII legacy) variety. You generally know when you can get away with that
>>>> and when you can't.
>>>>
>>>> Otherwise you are most likely doing things that are best dealt with in
>>>> a streaming paradigm. For most computation, you come to realize you don't
>>>> generally care how many characters but how much space (bytes) you need to
>>>> store your chunk of text. Collation is tricky and complicated in unicode
>>>> in general but it isn't any worse in UTF8 than any other encoding. You are
>>>> still going to scan each sortable item from front to back to determine its
>>>> order, regardless.
>>>>
>>>> Most of the outside world has settled on UTF8 and any ASCII file is
>>>> already UTF8 - which is why it ends up being so convenient. Most of our
>>>> old text handling infrastructure can still handle UTF8 while it tends to
>>>> choke on wider encodings.
>>>>
>>>> -Todd Blanchard
>>>>
>>>> On Dec 6, 2015, at 07:23, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>>>>>
>>>>> We do the same thing, but that doesn't mean it's a good idea to create
>>>>>> a
>>>>>> new String-like class having its content encoded in UTF-8, because
>>>>>> UTF-8-encoded strings can't be modified like regular strings. While it
>>>>>> would be possible to implement all operations, such implementation
>>>>>> would
>>>>>> become the next SortedCollection (bad performance due to misuse).
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>
> --
> Mark
>
>
>
Dec. 6, 2015
Re: [Pharo-dev] [squeak-dev] Unicode Support
by Sven Van Caekenberghe
Ah yes, Go is a good example, thanks Mark.
After reading these two blog articles:
http://blog.golang.org/strings
http://blog.golang.org/normalization
And especially after looking through their libraries/APIs, the conclusion is: this is not simple.
I am also not so sure they managed to offer such an API to their users so that it is easier for them not to make mistakes (given that they leave a lot of things 'open').
Note that they also say that "In practice, 99.98% of the web's HTML page content is in NFC form (not counting markup, in which case it would be more)." I must say that I have never come across anything else myself, let alone something that gave a problem, but that probably depends on the situation.
@Max: you seem to suggest that you do see non-normalised unicode, where does it come from, how does it happen ?
Sven
> On 06 Dec 2015, at 20:27, Mark Bestley <st(a)bestley.co.uk> wrote:
>
> On 06/12/2015 19:08, Sven Van Caekenberghe wrote:
>> BTW, does anyone know of any programming language that did go that way or has a library that directly implements 'storing all strings as utf-8' ?
> Java is UTF-16
>
> Python3, Go and Swift are UTF-8 as I suspect are other new languages not based on .Net or the JVM
>
> Mark
>
>>
>
>
>>> On 06 Dec 2015, at 18:45, Sven Van Caekenberghe <sven(a)stfx.eu> wrote:
>>>
>>> Well written, Todd. I agree, the loss of indexing might not be that big a problem in practice. The only way to find out it to try an experiment I guess.
>>>
>>> Sven
>>>
>>>> On 06 Dec 2015, at 17:37, Todd Blanchard <tblanchard(a)mac.com> wrote:
>>>>
>>>> (Resent because of bounce notification (email handling in osx is really beginning to annoy me). Sorry if its a dup)
>>>>
>>>> I used to worry a lot about strings being indexable. And then I eventually let go of that and realized that it isn't a particularly important property for them to have.
>>>>
>>>> I think you will find that UTF8 is generally the most convenient for a lot of things but its a bit like light in that you treat it alternately as a wave or particle depending on what you are trying to do.
>>>>
>>>> So goes strings - they can be treated alternately as streams or byte arrays (not character arrays - stop thinking in characters). In practice, this tends to not be a problem since a lot of the times when you want to replace a character or pick out the nth one you are doing something very computerish and the characters you are working with are the single byte (ASCII legacy) variety. You generally know when you can get away with that and when you can't.
>>>>
>>>> Otherwise you are most likely doing things that are best dealt with in a streaming paradigm. For most computation, you come to realize you don't generally care how many characters but how much space (bytes) you need to store your chunk of text. Collation is tricky and complicated in unicode in general but it isn't any worse in UTF8 than any other encoding. You are still going to scan each sortable item from front to back to determine its order, regardless.
>>>>
>>>> Most of the outside world has settled on UTF8 and any ASCII file is already UTF8 - which is why it ends up being so convenient. Most of our old text handling infrastructure can still handle UTF8 while it tends to choke on wider encodings.
>>>>
>>>> -Todd Blanchard
>>>>
>>>>> On Dec 6, 2015, at 07:23, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>>>>>
>>>>>> We do the same thing, but that doesn't mean it's a good idea to create a
>>>>>> new String-like class having its content encoded in UTF-8, because
>>>>>> UTF-8-encoded strings can't be modified like regular strings. While it
>>>>>> would be possible to implement all operations, such implementation would
>>>>>> become the next SortedCollection (bad performance due to misuse).
>>>>
>>>
>>
>>
>>
>
>
> --
> Mark
Dec. 6, 2015
Re: [Pharo-dev] displayingProgress on demand
by Sven Van Caekenberghe
There is still #do:displayingProgress:
There is Job.
In general, the collection API should not be concerned with GUI matters, does it ?
We can't have equivalents of all collection methods for displaying progress, nor can it be a (semi-) global setting.
If you look at how HTTPProgress is implemented/used, as a Notification, that might be a part of a solution, but I would not want to pay that performance price in the general API.
I think there is no 'free' or 'easy' solution.
> On 06 Dec 2015, at 21:23, stepharo <stepharo(a)free.fr> wrote:
>
> Probably because it was badly done.
>
>
> Le 6/12/15 20:05, Hernán Morales Durand a écrit :
>> Hello everyone,
>>
>> Is there a reason why #collect:displayingProgress: was removed or never included?
>>
>> And as more general question, is there any pointer to automatically add progress bar to iterator messages?
>>
>> For example doing:
>>
>> SmalltalkImage setDisplayProgressTo: MyClass.
>> SmalltalkImage setDisplayProgressTo: MyPackage.
>>
>> and then having all enumeration messages sent in MyClass or MyPackage with a progress bar
>>
>> collect:
>> collect:as:
>> collect:into:
>> collect:thenDo:
>> select:
>> select:as:
>> select:thenDo:
>> select:thenCollect:as:
>> ...
>>
>> Hernán
>>
>
>
Dec. 6, 2015
Re: [Pharo-dev] displayingProgress on demand
by stepharo
Probably because it was badly done.
Le 6/12/15 20:05, Hernán Morales Durand a écrit :
> Hello everyone,
>
> Is there a reason why #collect:displayingProgress: was removed or
> never included?
>
> And as more general question, is there any pointer to automatically
> add progress bar to iterator messages?
>
> For example doing:
>
> SmalltalkImage setDisplayProgressTo: MyClass.
> SmalltalkImage setDisplayProgressTo: MyPackage.
>
> and then having all enumeration messages sent in MyClass or MyPackage
> with a progress bar
>
> collect:
> collect:as:
> collect:into:
> collect:thenDo:
> select:
> select:as:
> select:thenDo:
> select:thenCollect:as:
> ...
>
> Hernán
>
Dec. 6, 2015
[OT] Microsoft JavaScript engine goes open source
by Torsten Bergmann
https://blogs.windows.com/msedgedev/2015/12/05/open-source-chakra-core/
Dec. 6, 2015
textColor: overrides the color attribute of the Text object
by Andrei Chis
Hi,
Consider the following two code snippet below:
[1]
(RubScrolledTextMorph new
textColor: Smalltalk ui theme textColor;
setText: (Text
string: 'a b c'
attributes: {TextColor green});
yourself) openInWorld.
[2]
(RubScrolledTextMorph new
setText: (Text
string: 'a b c'
attributes: {TextColor green});
textColor: Smalltalk ui theme textColor;
yourself) openInWorld.
In the first case the color of the text is the one from the theme, while in
the second the color is green.
So if set after the text object, the textColor attribute overrides the
actual color of the text.
Is this the expected behaviour? With PluggableTextMorph the color of the
text object always tool priority over the #textColor atribute of the text
morph.
Cheers,
Andrei
Dec. 6, 2015