[squeak-dev] Observer pattern implementations

H. Hirzel hannes.hirzel at gmail.com
Wed Jun 5 10:04:33 UTC 2019


On 6/4/19, David T. Lewis <lewis at mail.msen.com> wrote:
> Hi Brenda,
>
> I can't speak to the various alternatives, but I followed your link to
> Lucas'
> historical repository at https://source.lukas-renggli.ch/announcements, and
> as you say the latest version loads cleanly in Squeak trunk. All the tests
> pass also, which is certainly a good sign.
>
> I do not think that you need to worry about about maintenance of Lucas'
> code.
> After all, it if has survived nearly 10 years with zero maintenance since
> his
> last update, and it still loads cleanly and works in the latest Squeak, then
> it's not likely to need a lot of attention in the next ten years either.
>
> What might make sense is to ask Lucas if he would agree to let someone put a
> full copy of his historical Announcements repository, along with attribution
> and license info and so forth, on squeaksource.com or ss3 so that you or
> other interested people could make updates in the future if needed. I can
> help with this if you and Lucas think it is a good idea.
>
> Dave


Announcements Framework
http://wiki.squeak.org/squeak/5734

has information about other versions including a port by
Levente Uzonyi and Kósi Balázs
which is available at http://www.squeaksource.com/AXAnnouncements.html

--Hannes


>
> On Mon, Jun 03, 2019 at 07:06:08PM -0500, Brenda Larcom wrote:
>> I am reviving some old code that relied heavily on Lukas Renggli's
>> implementation of Announcements (many thanks to Lukas). Announcements
>> still loads in Squeak 5.2, but it is marked as no longer maintained on
>> Lukas' site and I cannot find a repository for it anywhere else, which
>> makes me nervous.
>>
>> Since I am reworking my code, now is the time for me to switch if I'm
>> going to. I searched for alternatives in the Squeak release, in SqueakMap,
>> on the Squeak wiki, and via DuckDuckGo using these search terms:
>>
>> Observer
>> Dependent (& variations)
>> Publish-Subscribe (& variations)
>> Callback
>> Event Dispatch
>> Self-Addressed Stamped Envelope (& variations)
>> I have identified the following generalized options in this space:
>>
>> Object dependencies (update, changed) - in stock image
>> Object events (when:send:to:, trigger:) - in stock image
>> Renditions of VisualWorks' Announcements (events are objects)
>> by Lukas Renggli based on Colin Putney's code from OmniBrowser & Vassili
>> Bykov's blog post - not in SqueakMap; loads in 5.2 & passes its tests; as
>> of 2009, Pharo intended to standardize on this implementation, and they
>> have some (extended) Announcements framework in their stock image now
>> AXAnnouncements by Levente Uzonyi and K??si Bal??zs - not in SqueakMap;
>> loads in 5.2 & has one warning about a deprecated message in its tests;
>> ported from VW, so maybe there are Cincom copyright issues
>> Signals (callbacks with constraints for usability) by Marcus Taeumel - in
>> SqueakMap on the Web, but not in the catalog seen by SqueakMap Package
>> Loader in 5.2; loads in 5.2 & fails one test
>> Bindings by Tobias Pape (this link doesn't work on Chrome on OS X Mojave;
>> looks like maybe a two-way registration for mutual change updates) - not
>> on SqueakMap; loads in 5.2 but fails its tests
>> Visual Smalltalk Events by Tim Jones (looks like a precursor to or
>> alternative implementation of the Object events that are now in the
>> default image) - in Goodies rather than SqueakMap; does not load in 5.2
>> Wandering Announcements by Keith Hodges (an extension to Lukas'
>> Announcements that looks around nearby parts of a model to locate an
>> object to handle an announcement) - not on SqueakMap; couldn't locate code
>> PostOffice by Peter Smet (looks like an alternative implementation of the
>> Object events that are now in the default image) - not on SqueakMap;
>> couldn't locate code
>> And for completeness, I also found other packages that implement [parts
>> of] this pattern, but are specific to a particular domain that doesn't
>> help me:
>>
>> Morphic event handling, for handling user interface events
>> OmniBrowser (now deprecated), for internal OmniBrowser events,
>> MQTT client, for subscribing to updates published by IoT devices
>> MVC, for user interfaces
>> I have questions:
>>
>> Are these all the generalized options for the Observer pattern and the
>> relatives I listed as search terms?
>> Is there anywhere else I should look?
>> Did I describe each option correctly?
>> Does anyone know of a public URL for any of the options whose source or
>> documentation I couldn't find?
>> Are any of these options, to anyone's knowledge, being actively
>> maintained?
>> Is the Squeak community planning to standardize on any of the generalized
>> options?
>> In the absence of additional information, I am leaning towards sticking
>> with Lukas' Announcements, because of the performance comparison chart on
>> the Signals page (which I am assuming is approximately applicable to
>> Lukas' Announcements as well as AXAnnouncements) and Pharo's
>> standardization decision. Is there any reason that is not on the Signals
>> comparision chart for me to prefer some other package?
>> Before you ask, yes, I would definitely like to help the next person by
>> updating the Squeak wiki so that it is easier to find and pick from these
>> alternatives, creating a SqueakMap entry and ConfigurationOf for at least
>> the one I choose, et cetera. I'll post a [DOCS] thread with my specific
>> proposed wiki changes after I get feedback on the accuracy of the data
>> above.
>>
>> Thank you for reading, and for any assistance you can provide!
>>
>> -- Bren
>>
>>
>
>>
>
>
>


More information about the Squeak-dev mailing list