[squeak-dev] [ANN] Squeak Inbox Talk - bringing squeak-dev into your image

David T. Lewis lewis at mail.msen.com
Sat Jul 17 16:23:10 UTC 2021


Christoph,

This is really great. I just got around to loading Inbox Talk and
I think I'm really going to enjoy using it.

Thanks for doing this. I encourage all of us to load this and give
it a try. The installation is painless, and the tool is quite
intuitive to use.

Installion note is here for anyone who may have missed it:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-July/216008.html

Dave


On Sat, Jul 17, 2021 at 03:13:50PM +0000, Thiede, Christoph wrote:
> Hi Bernhard,
> 
> 
> Thanks a lot for your feedback! :-)
> 
> 
> > I clicked on the Beta version button as well. Not sure if this did install a newer version, though.
> 
> 
> Actually, this button only opens an app menu. If you want to install the latest updates, click "self-update" in this menu.
> 
> 
> > What is the best way to find this out, by the way.
> 
> At the moment, there isn't one, I'm afraid. But if you hit the "send feedback" button in the app menu, you can see the change date of the current version. You could then compare this date to the latest commit date in the GitHub repository. But yes, it would be nice to have an easier way for this. Maybe a contemporary package manager for Squeak that supports Metacello ...
> 
> > I ran into a MNU when trying to filter conversions by myself.
> 
> Ouch, sorry for that! I have just commited a fix for that, if you choose the self-update option, you should be able to use these filters now.
> 
> > This e-mail is a test if replying works for me.
> 
> It works! :-)
> 
> If there are any other bugs or inconveniences, please report back. Otherwise, I'll also accept success experience reports. :D
> 
> Best,
> Christoph
> 
> ________________________________
> Von: bernhard at pieber.com <bernhard at pieber.com>
> Gesendet: Samstag, 17. Juli 2021 10:26:59
> An: squeak-dev at lists.squeakfoundation.org; Thiede, Christoph
> Betreff: Re: [ANN] Squeak Inbox Talk - bringing squeak-dev into your image
> 
> Hi Christoph,
> 
> Congratulations on Squeak Inbox Talk. Impressive work!
> 
> I have yet to use it more to give more extensive feedback. However, the first impression is great.
> 
> Installation went smoothly. I clicked on the Beta version button as well. Not sure if this did install a newer version, though. What is the best way to find this out, by the way.
> 
> I ran into a MNU when trying to filter conversions by myself.
> 
> This e-mail is a test if replying works for me.
> 
> Cheers,
> Bernhard
> 
> 17 July 2021 9:59:48.332407 am
> 
> VM: Mac OS - Smalltalk
> Image: Squeak6.0alpha [latest update: #20587]
> 
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /Users/bernhard/Entwicklung/Squeak/new-trunk
> Trusted Dir /Users/bernhard/Entwicklung/Squeak/new-trunk/secure
> Untrusted Dir /Users/bernhard/Entwicklung/Squeak/new-trunk/My Squeak
> 
> MorphicUIManager(Object)>>doesNotUnderstand: #multiLineRequest:initialAnswer:
>         Receiver: a MorphicUIManager
>         Arguments and temporary variables:
>                 aMessage:        multiLineRequest: 'What e-mail adresses do you use on the inbox?
> Ente...etc...
>                 exception:       MessageNotUnderstood: MorphicUIManager>>multiLineRequest:initialAnsw...etc...
>                 resumeValue:     nil
>         Receiver's instance variables:
>                 builderClass:    MorphicToolBuilder
> 
> TalkPerson>>requestLines:initialAnswer:ifAccepted:
>         Receiver: a TalkPerson
>         Arguments and temporary variables:
>                 queryString:     'What e-mail adresses do you use on the inbox?
> Enter one per line....etc...
>                 initialLines:    an OrderedCollection()
>                 acceptBlock:     [closure] in TalkPerson>>initializeInteractively
>                 answer:  nil
>                 newLines:        nil
>         Receiver's instance variables:
>                 names:   an OrderedCollection()
>                 mailAddresses:   an OrderedCollection()
>                 allAuthorInitials:       an OrderedCollection()
> 
> TalkPerson>>initializeInteractively
>         Receiver: a TalkPerson
>         Arguments and temporary variables:
> 
>         Receiver's instance variables:
>                 names:   an OrderedCollection()
>                 mailAddresses:   an OrderedCollection()
>                 allAuthorInitials:       an OrderedCollection()
> 
> TalkPerson class>>current
>         Receiver: TalkPerson
>         Arguments and temporary variables:
> 
>         Receiver's instance variables:
>                 superclass:      TalkDataView
>                 methodDict:      a MethodDictionary(#allAuthorInitials->(TalkPerson>>#allAuthorIniti...etc...
>                 format:  65539
>                 instanceVariables:       #('names' 'mailAddresses' 'allAuthorInitials')
>                 organization:    ('accessing' allAuthorInitials allAuthorInitials: mailAddresses mailAddresses:...etc...
>                 subclasses:      nil
>                 name:    #TalkPerson
>                 classPool:       a Dictionary(#Current->nil )
>                 sharedPools:     nil
>                 environment:     Smalltalk
>                 category:        #'SqueakInboxTalk-Core'
> 
> TalkInvolvementFilter>>assurePerson
>         Receiver: a TalkInvolvementFilter
>         Arguments and temporary variables:
> 
>         Receiver's instance variables:
>                 involvements:    a Set()
> 
> TalkInvolvementFilter>>setInvolvement:to:
>         Receiver: a TalkInvolvementFilter
>         Arguments and temporary variables:
>                 aSymbol:         #author
>                 aBoolean:        true
>         Receiver's instance variables:
>                 involvements:    a Set()
> 
> [] in [] in TalkInvolvementFilter>>filterMenu:for:
>         Receiver: a TalkInvolvementFilter
>         Arguments and temporary variables:
>                 menu:    nil
>                 aModel:  nil
>                 label:   'conversations by myself'
>                 involvement:     #author
>                 boolean:         true
>         Receiver's instance variables:
>                 involvements:    a Set()
> 
> [] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>         Receiver: a TalkInboxBrowser
>         Arguments and temporary variables:
>                 menu:    a MenuMorph(1191274)
>                 label:   'conversations by myself'
>                 getter:  [closure] in [] in TalkInvolvementFilter>>filterMenu:for:
>                 setter:  [closure] in [] in TalkInvolvementFilter>>filterMenu:for:
>                 target:  nil
>         Receiver's instance variables:
>                 dependents:      a DependentsArray(a PluggableSystemWindow<Squeak Inbox Talk - squea...etc...
>                 backgroundWorkers:       a WeakValueDictionary(#contents->nil #conversations->a Process...etc...
>                 backgroundWorkerUpdateMessages:  a SharedQueue(1)
>                 inbox:   a TalkInbox<squeak-dev>
>                 searchModel:     a TalkTextSearchModel
>                 selectedConversation:    a TalkConversation ('[squeak-dev] The Inbox: System-ct.12...etc...
>                 allConversations:        {a TalkConversation ('[squeak-dev] Documenting the system') ....etc...
>                 numberOfConversations:   nil
>                 conversations:   an OrderedCollection(a TalkConversation ('[squeak-dev] Documenti...etc...
>                 menuFilter:      a TalkFilterSet
>                 contents:        'Name: System-ct.1241 (pending)
> Author: ct
> Time: 15 July 2021, 1:11:0...etc...
> 
> FullBlockClosure(Object)>>perform:orSendTo:
>         Receiver: [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>         Arguments and temporary variables:
>                 selector:        #value
>                 otherTarget:     a PluggableMultiColumnListMorph(2530911)
>         Receiver's instance variables:
>                 outerContext:    TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>                 startpcOrMethod:         ([] in TalkModel>>#menu:add:getState:setState: "a CompiledBlock...etc...
>                 numArgs:         0
>                 receiver:        a TalkInboxBrowser
> 
> [] in UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>         Receiver: an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Arguments and temporary variables:
>                 evt:     [1208 at 413 mouseUp ( red ) 2069153]
>                 world:   a PasteUpMorph(2434915) [world]
>         Receiver's instance variables:
>                 bounds:  1100 at 407 corner: 1370 at 423
>                 owner:   a MenuMorph(1191274)
>                 submorphs:       {an ImageMorph(2514698)}
>                 fullBounds:      1100 at 407 corner: 1370 at 423
>                 color:   Color black
>                 extension:       a MorphExtension (2733736) [other:  (layoutProperties -> (LayoutProp...etc...
>                 font:    a StrikeFont(Bitmap DejaVu Sans 9 14)
>                 emphasis:        0
>                 contents:        'conversations by myself'
>                 hasFocus:        false
>                 isEnabled:       true
>                 subMenu:         nil
>                 isSelected:      false
>                 target:  [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>                 selector:        #perform:orSendTo:
>                 arguments:       {#value . a PluggableMultiColumnListMorph(2530911)}
>                 icon:    nil
>                 wordingProvider:         [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:...etc...
>                 wordingSelector:         #value
>                 enablementSelector:      nil
>                 wordingArgument:         nil
> 
> FullBlockClosure(BlockClosure)>>ensure:
>         Receiver: [closure] in UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>         Arguments and temporary variables:
>                 aBlock:  [closure] in CursorWithMask(Cursor)>>showWhile:
>                 complete:        nil
>                 returnValue:     nil
>         Receiver's instance variables:
>                 outerContext:    UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>                 startpcOrMethod:         ([] in MenuItemMorph>>#invokeWithEvent: "a CompiledBlock(28284...etc...
>                 numArgs:         0
>                 receiver:        an UpdatingMenuItemMorph(1010122)'conversations by myself'
> 
> CursorWithMask(Cursor)>>showWhile:
>         Receiver: ((CursorWithMask
>         extent: 16 at 16
>         depth: 1
>         fromArray: #(
>                 2r0
>                 2r10000000000000000000000...etc...
>         Arguments and temporary variables:
>                 aBlock:  [closure] in UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>                 oldcursor:       ((CursorWithMask
>         extent: 16 at 16
>         depth: 1
>         fromArray: #(
>                 2r0
>                 2r1...etc...
>         Receiver's instance variables:
>                 bits:    a Bitmap of length 16
>                 width:   16
>                 height:  16
>                 depth:   1
>                 offset:  -1@ -1
>                 maskForm:        Form(16x16x1)
> 
> UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>         Receiver: an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Arguments and temporary variables:
>                 evt:     [1208 at 413 mouseUp ( red ) 2069153]
>                 world:   a PasteUpMorph(2434915) [world]
>         Receiver's instance variables:
>                 bounds:  1100 at 407 corner: 1370 at 423
>                 owner:   a MenuMorph(1191274)
>                 submorphs:       {an ImageMorph(2514698)}
>                 fullBounds:      1100 at 407 corner: 1370 at 423
>                 color:   Color black
>                 extension:       a MorphExtension (2733736) [other:  (layoutProperties -> (LayoutProp...etc...
>                 font:    a StrikeFont(Bitmap DejaVu Sans 9 14)
>                 emphasis:        0
>                 contents:        'conversations by myself'
>                 hasFocus:        false
>                 isEnabled:       true
>                 subMenu:         nil
>                 isSelected:      false
>                 target:  [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>                 selector:        #perform:orSendTo:
>                 arguments:       {#value . a PluggableMultiColumnListMorph(2530911)}
>                 icon:    nil
>                 wordingProvider:         [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:...etc...
>                 wordingSelector:         #value
>                 enablementSelector:      nil
>                 wordingArgument:         nil
> 
> UpdatingMenuItemMorph(MenuItemMorph)>>mouseUp:
>         Receiver: an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Arguments and temporary variables:
>                 evt:     [1208 at 413 mouseUp ( red ) 2069153]
>         Receiver's instance variables:
>                 bounds:  1100 at 407 corner: 1370 at 423
>                 owner:   a MenuMorph(1191274)
>                 submorphs:       {an ImageMorph(2514698)}
>                 fullBounds:      1100 at 407 corner: 1370 at 423
>                 color:   Color black
>                 extension:       a MorphExtension (2733736) [other:  (layoutProperties -> (LayoutProp...etc...
>                 font:    a StrikeFont(Bitmap DejaVu Sans 9 14)
>                 emphasis:        0
>                 contents:        'conversations by myself'
>                 hasFocus:        false
>                 isEnabled:       true
>                 subMenu:         nil
>                 isSelected:      false
>                 target:  [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>                 selector:        #perform:orSendTo:
>                 arguments:       {#value . a PluggableMultiColumnListMorph(2530911)}
>                 icon:    nil
>                 wordingProvider:         [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:...etc...
>                 wordingSelector:         #value
>                 enablementSelector:      nil
>                 wordingArgument:         nil
> 
> UpdatingMenuItemMorph(MenuItemMorph)>>handleMouseUp:
>         Receiver: an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Arguments and temporary variables:
>                 anEvent:         [1208 at 413 mouseUp ( red ) 2069153]
>         Receiver's instance variables:
>                 bounds:  1100 at 407 corner: 1370 at 423
>                 owner:   a MenuMorph(1191274)
>                 submorphs:       {an ImageMorph(2514698)}
>                 fullBounds:      1100 at 407 corner: 1370 at 423
>                 color:   Color black
>                 extension:       a MorphExtension (2733736) [other:  (layoutProperties -> (LayoutProp...etc...
>                 font:    a StrikeFont(Bitmap DejaVu Sans 9 14)
>                 emphasis:        0
>                 contents:        'conversations by myself'
>                 hasFocus:        false
>                 isEnabled:       true
>                 subMenu:         nil
>                 isSelected:      false
>                 target:  [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>                 selector:        #perform:orSendTo:
>                 arguments:       {#value . a PluggableMultiColumnListMorph(2530911)}
>                 icon:    nil
>                 wordingProvider:         [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:...etc...
>                 wordingSelector:         #value
>                 enablementSelector:      nil
>                 wordingArgument:         nil
> 
> MouseButtonEvent>>sentTo:
>         Receiver: [1208 at 413 mouseUp ( red ) 2069153]
>         Arguments and temporary variables:
>                 anObject:        an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Receiver's instance variables:
>                 timeStamp:       2069153
>                 source:  a HandMorph(2614111)
>                 type:    #mouseUp
>                 buttons:         0
>                 position:        1208 at 413
>                 handler:         nil
>                 wasHandled:      true
>                 wasIgnored:      false
>                 whichButton:     4
>                 nClicks:         0
> 
> UpdatingMenuItemMorph(Morph)>>handleEvent:
>         Receiver: an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Arguments and temporary variables:
>                 anEvent:         [1208 at 413 mouseUp ( red ) 2069153]
>                 filteredEvent:   [1208 at 413 mouseUp ( red ) 2069153]
>         Receiver's instance variables:
>                 bounds:  1100 at 407 corner: 1370 at 423
>                 owner:   a MenuMorph(1191274)
>                 submorphs:       {an ImageMorph(2514698)}
>                 fullBounds:      1100 at 407 corner: 1370 at 423
>                 color:   Color black
>                 extension:       a MorphExtension (2733736) [other:  (layoutProperties -> (LayoutProp...etc...
>                 font:    a StrikeFont(Bitmap DejaVu Sans 9 14)
>                 emphasis:        0
>                 contents:        'conversations by myself'
>                 hasFocus:        false
>                 isEnabled:       true
>                 subMenu:         nil
>                 isSelected:      false
>                 target:  [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
>                 selector:        #perform:orSendTo:
>                 arguments:       {#value . a PluggableMultiColumnListMorph(2530911)}
>                 icon:    nil
>                 wordingProvider:         [closure] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:...etc...
>                 wordingSelector:         #value
>                 enablementSelector:      nil
>                 wordingArgument:         nil
> 
> MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
>         Receiver: a MorphicEventDispatcher
>         Arguments and temporary variables:
>                 anEvent:         [1208 at 413 mouseUp ( red ) 2069153]
>                 aHandler:        an UpdatingMenuItemMorph(1010122)'conversations by myself'
>                 aMorph:  an UpdatingMenuItemMorph(1010122)'conversations by myself'
>                 result:  #rejected
>                 filteredEvent:   [1208 at 413 mouseUp ( red ) 2069153]
>         Receiver's instance variables:
>                 lastType:        #mouseUp
>                 lastDispatch:    #dispatchDefault:with:
> 
> MorphicEventDispatcher>>dispatchDefault:with:
>         Receiver: a MorphicEventDispatcher
>         Arguments and temporary variables:
>                 anEvent:         [1208 at 413 mouseUp ( red ) 2069153]
>                 aMorph:  an UpdatingMenuItemMorph(1010122)'conversations by myself'
>         Receiver's instance variables:
>                 lastType:        #mouseUp
>                 lastDispatch:    #dispatchDefault:with:
> 
> 
> --- The full stack ---
> MorphicUIManager(Object)>>doesNotUnderstand: #multiLineRequest:initialAnswer:
> TalkPerson>>requestLines:initialAnswer:ifAccepted:
> TalkPerson>>initializeInteractively
> TalkPerson class>>current
> TalkInvolvementFilter>>assurePerson
> TalkInvolvementFilter>>setInvolvement:to:
> [] in [] in TalkInvolvementFilter>>filterMenu:for:
> [] in TalkInboxBrowser(TalkModel)>>menu:add:getState:setState:
> FullBlockClosure(Object)>>perform:orSendTo:
> [] in UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> FullBlockClosure(BlockClosure)>>ensure:
> CursorWithMask(Cursor)>>showWhile:
> UpdatingMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> UpdatingMenuItemMorph(MenuItemMorph)>>mouseUp:
> UpdatingMenuItemMorph(MenuItemMorph)>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> UpdatingMenuItemMorph(Morph)>>handleEvent:
> MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> MorphicEventDispatcher>>dispatchDefault:with:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> MorphicEventDispatcher>>dispatchEvent:with:
> UpdatingMenuItemMorph(Morph)>>processEvent:using:
> UpdatingMenuItemMorph(Morph)>>processEvent:
> [] in MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> Array(SequenceableCollection)>>do:
> MenuMorph(Morph)>>submorphsDo:
> MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> MenuMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>doProcessingForFocusEvent:with:
> MorphicEventDispatcher>>dispatchFocusEventFully:with:
> MenuMorph>>processFocusEvent:using:
> MenuMorph(Morph)>>processFocusEvent:
> [] in [] in [] in HandMorph>>sendFocusEvent:to:clear:
> [] in ActiveEventVariable class(DynamicVariable class)>>value:during:
> FullBlockClosure(BlockClosure)>>ensure:
> ActiveEventVariable class(DynamicVariable class)>>value:during:
> [] in ActiveEventVariable class>>value:during:
> FullBlockClosure(BlockClosure)>>ensure:
> ActiveEventVariable class>>value:during:
> MouseButtonEvent(MorphicEvent)>>becomeActiveDuring:
> [] in [] in HandMorph>>sendFocusEvent:to:clear:
> [] in ActiveHandVariable class(DynamicVariable class)>>value:during:
> FullBlockClosure(BlockClosure)>>ensure:
> ActiveHandVariable class(DynamicVariable class)>>value:during:
> [] in ActiveHandVariable class>>value:during:
> FullBlockClosure(BlockClosure)>>ensure:
> ActiveHandVariable class>>value:during:
> HandMorph>>becomeActiveDuring:
> [] in HandMorph>>sendFocusEvent:to:clear:
> [] in ActiveWorldVariable class(DynamicVariable class)>>value:during:
> FullBlockClosure(BlockClosure)>>ensure:
> ActiveWorldVariable class(DynamicVariable class)>>value:during:
> [] in ActiveWorldVariable class>>value:during:
> FullBlockClosure(BlockClosure)>>ensure:
> ActiveWorldVariable class>>value:during:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
> -- and more not shown --
> 
> > An HTML attachment was scrubbed...
> > URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210709/c7619efa/attachment-0001.html>
> > -------------- next part --------------
> > Hi all! :-)
> >
> > I'm very excited to announce a new tool to you today that aims to make the Squeak development cycle a bit easier for all of us. Introducing Squeak Inbox Talk, which allows you as Squeak contributors and maintainers to review and discuss new features for Squeak directly in your image!
> >
> > Installation:
> >        Install the latest Trunk updates first.
> >        Metacello new
> >                  baseline: 'SqueakInboxTalk';
> >                  repository: 'github://hpi-swa-lab/squeak-inbox-talk:main';
> >                  load.
> > After the installation, in the main docking bar, choose "Squeak Inbox Talk" from the Apps menu, click Refresh, and there you go!
> > Alternatively, you can download a ready-to-use image here: https://github.com/hpi-swa-lab/squeak-inbox-talk/releases
> > In [1] you can find the open-source GitHub repository, including a project board and some theoretical background.
> > Your feedback is especially helpful for my research before 2021-07-19 (but still appreciated later very much).
> >
> > Maybe you have already experienced at least one of the following troubles in the past:
> > 1. Tedious navigation on the list: Where has this patch gone? Can someone remember where we were discussing this funky thing recently?
> > 2. High entry barrier for new contributors: You need to sign up on the mailing list to follow discussions.
> > 3. Hard review process: Notifications and discussions appear in your email client, but if you want to check out some code, you will switch to your image, of course.
> >
> > In the last months, I have been trying to solve these and other issues. Now I'm inviting you to figure out whether I have been successful! Squeak Inbox Talk allows you to interact with all relevant artifacts right in Squeak, including emails as well as Monticello contributions. It comes with a free-text search and several powerful filters for aspects such as packages, review state of a contribution, and your personal involvement. These filters should make it easier to survey certain domains, gain a better understanding of the connection between inbox versions, or keep track of your own proposals.
> >
> > Please give it a try and return feedback! As one possible starting point, you could search for "terminate" to recapitulate Jaromir's recent efforts on Process. I had the great opportunity to run this project in the course of a seminar at HPI, and the luck to be guided by Marcel while doing so. In a few weeks, I will present the project internally, and your thoughts and feedback will of course be very helpful for my evaluation. Needless to say, I'm also looking forward to making the tool even more convenient for you. :-)
> >
> > Thank you so much in advance!
> >
> > Best,
> > Christoph
> >
> > ---
> >
> > APPENDIX: How does it work?
> >
> > Basically, Squeak Inbox Talk is implemented by reusing and assembling together the following existing solutions: Squeak History [2], a project originally developed by Marcel (mt) that scrapes and processes all mailing list conversations from the pipermail archives [3]; the SMTPClient in Squeak [5] for sending messages; and the Monticello infrastructure, which remains the heart of our development workflow. Optionally, further components such as IMAPClient [4] might follow later. On top of this, Squeak Inbox Talk adds a convenient layer for exploring and filtering conversations and contributions.
> >
> > [1] https://github.com/hpi-swa-lab/squeak-inbox-talk
> > [2] https://github.com/hpi-swa/squeak-history
> > [3] http://lists.squeakfoundation.org/pipermail/squeak-dev/
> > [4] https://github.com/hpi-swa-teaching/IMAPClient
> > [5] This mail was sent from Squeak Inbox Talk using the latest version of the SMTPClient. Yeah, it's actually still alive and doing well! =D
> > -------------- next part --------------
> > A non-text attachment was scrubbed...
> > Name: SqueakInboxTalk.png
> > Type: application/octet-stream
> > Size: 184000 bytes
> > Desc: not available
> > URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210709/c7619efa/attachment-0001.obj>
> 

> 



More information about the Squeak-dev mailing list