[squeak-dev] The Inbox: Help-Squeak-Project-ct.94.mcz

Eliot Miranda eliot.miranda at gmail.com
Tue Jun 28 22:48:41 UTC 2022


On Tue, Jun 28, 2022 at 4:50 AM Thiede, Christoph <
Christoph.Thiede at student.hpi.uni-potsdam.de> wrote:

> Hi Eliot, could you please confirm that you would like me to push these -
> yet unreviewed - documentation contents to the Trunk while we are in Code
> Freeze? :-)
>

perhaps not :-)  But can you email me the text?


> Best,
>
> Christoph
> ------------------------------
> *Von:* Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im
> Auftrag von Eliot Miranda <eliot.miranda at gmail.com>
> *Gesendet:* Donnerstag, 23. Juni 2022 19:25:31
> *An:* The general-purpose Squeak developers list
> *Betreff:* Re: [squeak-dev] The Inbox: Help-Squeak-Project-ct.94.mcz
>
>
>
> On Thu, Jun 23, 2022 at 10:25 AM Eliot Miranda <eliot.miranda at gmail.com>
> wrote:
>
>> +100 for pushing this to trunk
>>
>
> Easier to review & edit there.
>
>>
>> On Tue, Jun 21, 2022 at 2:14 PM <
>> christoph.thiede at student.hpi.uni-potsdam.de> wrote:
>>
>>> Community service: Read the HTML-rendered copy of the proposed book
>>> below:
>>>
>>>
>>>
>>>
>>> *Contributing To Squeak *
>>>
>>> As you might have noticed, Squeak is a *completely open system*, which
>>> makes it very easy not only to explore every interesting detail in the
>>> image but also to customize everything at your will. Whether you would like
>>> to
>>> adjust some colors
>>> , fix a
>>> bug
>>> you have stumbled upon, or
>>> add a new feature
>>> , everything is flexible and under your control.
>>>
>>>
>>> *Squeak lives from your contributions!* Squeak is powered to 100% by
>>> volunteer open-source contributions. Whenever you make an adjustment to the
>>> base system, you might ask yourself: *could others benefit from this
>>> change, too?*, and if the answer is yes, we invite you to consider
>>> contributing back to the community. Also, if you just discovered a bug,
>>> have a question, or would like to discuss an idea, our forums are open!
>>>
>>>
>>>
>>> *The Squeak Community Model*
>>>
>>>
>>> The majority of communication about the Squeak development takes place
>>> on the
>>> squeak-dev mailing list
>>> <http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev>
>>> . There is a public
>>> mailing list archive
>>> <http://lists.squeakfoundation.org/pipermail/squeak-dev/>
>>> , but to engage in any discussion, you have to
>>> sign up
>>> <http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev#:~:text=Subscribing%20to%20Squeak%2Ddev>
>>> to the list. Alternatively, you can report issues on our
>>> GitHub issue tracker
>>> <https://github.com/squeak-smalltalk/squeak-object-memory/issues>
>>> .
>>>
>>>
>>> On the mailing list, ideas, bug reports, and patches are exchanged.
>>> Version control for all Squeak packages is run via
>>> Monticello. All versions that are uploaded to any Squeak package will
>>> automatically be forwarded to the list for further discussion. There are
>>> three package repositories:
>>>
>>>     * The *Trunk repository* contains the latest integrated patches.
>>> Only core developers have write access.
>>>     * The *Inbox repository* is the place for all new suggestions and
>>> requests for review. Everyone can upload proposals here without the need to
>>> create an account. (You can still create an account on
>>> https://source.squeak.org/ and *edit the repository info* of the inbox
>>> repository with your credentials.)
>>>     * The *Treated Inbox* repository is the sidetrack for versions that
>>> have been dealt with or that have been superseded.
>>>
>>>
>>>
>>> The usual workflow for a new contribution is to upload it to the inbox,
>>> where others will discuss and review it on squeak-dev, and from where it
>>> usually will be merged into the Trunk eventually. Here you can learn more
>>> about the development process:
>>> https://squeak.org/development_process/
>>>
>>>     <squeakDevelopmentProcess.png>
>>>
>>>
>>> *Making your first contribution*
>>>
>>>
>>> *
>>> Install the latest Trunk updates
>>>
>>>
>>> * Make your change, preferably from a clean image (to avoid
>>> configuration drift)
>>>
>>> *
>>> Open the Monticello Browser:
>>>         *
>>> *On the left,* select the *package* you have changed (denoted with a
>>> **star*).
>>>
>>>     * *On the right,* select the *inbox* repository.
>>>
>>>     * On the top, press *save.*
>>>
>>> * Review your changes, enter a meaningful version message, and * accept*
>>> the new version to upload it.
>>>
>>> * *That's it!* Your contribution has arrived in the inbox and soon you
>>> will receive feedback from the community through the mailing list. Keep an
>>> eye on your mailbox!
>>>
>>>
>>>
>>> *Squeak Inbox Talk*
>>>
>>>
>>> Squeak Inbox Talk is a third-party tool that attempts to simplify the
>>> development process by bringing together all the different artifacts that
>>> belong to the development process - mailing list, archives, and Monticello
>>> versions - and allowing you to interact with them directly from your image.
>>> You can access it
>>> from the Tools menu
>>> or install it via:
>>>
>>>         Installer installSqueakInboxTalk.
>>>
>>>     <
>>> https://raw.githubusercontent.com/hpi-swa-lab/squeak-inbox-talk/main/assets/SqueakInboxTalk.png
>>> >
>>>
>>>     Further information can be found on GitHub:
>>> https://github.com/hpi-swa-lab/squeak-inbox-talk
>>>
>>>
>>> *Further Concepts*
>>>
>>>
>>> * *Change sets:* Usually, new proposals are best exchanged through an
>>> inbox version. However, some ideas consist of changes to multiple packages,
>>> when it becomes tricky to work with multiple inbox versions. In this case,
>>> a change set is a good alternative. You can open a *dual change sorter*
>>> from the
>>> Tools
>>> and
>>> Changes
>>> menus in the docking bar and make a yellow click on the change set list
>>> on the left to bring up some options. *Create a new change set* and
>>> *copy* or *move* all relevant changes to it. *Add a preamble* to the
>>> change set to add an explaining message and finally * file out* or *mail
>>> to list* it directly. To install a change set, you can *file in* it
>>> from the
>>> file list
>>> or by dragging it into the image.
>>>
>>> * *Preambles and postscripts:* Some changes make it necessary to run
>>> some scripts before or after loading the new code to perform any migrations
>>> or changes to the object graph. This is possible through preambles and
>>> postscripts. To add or edit a script for a Monticello package, select it in
>>> the
>>> Monticello browser
>>> and press the *Scripts* button. Add your logic to the code, test it,
>>> accept it, and include it in your next inbox version. Note that preambles
>>> and postscripts in Trunk packages are required to be idempotent and may be
>>> evaluated multiple times. For changesets, you can add a preamble and a
>>> postscript as well from the yellow-button menu of the change set list in
>>> the change sorter.
>>>
>>> * If you identify any other contribution-related concepts that should be
>>> mentioned or explained in greater detail here, please feel free to add them
>>> here. This would make an ideal first contribution. :-)
>>>
>>>
>>> Open to all your feedback. But, please, let's not prolong the review
>>> process too much to not hinder this from going into the RC. :-)
>>>
>>> Best,
>>> Christoph
>>>
>>> ---
>>> *Sent from **Squeak Inbox Talk
>>> <https://github.com/hpi-swa-lab/squeak-inbox-talk>*
>>>
>>> On 2022-06-21T20:59:48+00:00, commits at source.squeak.org wrote:
>>>
>>> > A new version of Help-Squeak-Project was added to project The Inbox:
>>> > http://source.squeak.org/inbox/Help-Squeak-Project-ct.94.mcz
>>> >
>>> > ==================== Summary ====================
>>> >
>>> > Name: Help-Squeak-Project-ct.94
>>> > Author: ct
>>> > Time: 21 June 2022, 10:59:45.096176 pm
>>> > UUID: e922e850-4074-764e-bb2d-a7754075a639
>>> > Ancestors: Help-Squeak-Project-ct.93
>>> >
>>> > Proposal: Adds help on how to contribute to Squeak. Short description
>>> of the community model, the development process, and some
>>> required/recommended tools. Updates the URLs in the page 'Squeak Resources
>>> Online' and adds a link to the new tutorial. Reorders project pages. Adds a
>>> very simple way to include figures to the new help book.
>>> >
>>> > =============== Diff against Help-Squeak-Project-ct.93 ===============
>>> >
>>> > Item was added:
>>> > + SqueakProjectHelp subclass: #SqueakContributionHelp
>>> > +     instanceVariableNames: ''
>>> > +     classVariableNames: ''
>>> > +     poolDictionaries: ''
>>> > +     category: 'Help-Squeak-Project'!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>bookBlurb (in category
>>> 'accessing') -----
>>> > + bookBlurb
>>> > +
>>> > +     self flag: #moveUpstream.
>>> > +     ^ (self perform: self defaultPage) contents!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>bookName (in category
>>> 'accessing') -----
>>> > + bookName
>>> > +
>>> > +     ^ 'Contributing to Squeak'!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>communityModel (in
>>> category 'pages') -----
>>> > (excessive size, no diff calculated)
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>contributingToSqueak (in
>>> category 'pages') -----
>>> > + contributingToSqueak
>>> > +     "This method was automatically generated. Edit it using:"
>>> > +     "SqueakContributionHelp edit: #contributingToSqueak"
>>> > +     <generated>
>>> > +     ^(HelpTopic
>>> > +         title: 'Contributing'
>>> > +         contents:
>>> > + 'Contributing To Squeak
>>> > +
>>> > + As you might have noticed, Squeak is a completely open system, which
>>> makes it very easy not only to explore every interesting detail in the
>>> image but also to customize everything at your will. Whether you would like
>>> to adjust some colors, fix a bug you have stumbled upon, or add a new
>>> feature, everything is flexible and under your control.
>>> > +
>>> > + Squeak lives from your contributions!!!! Squeak is powered to 100%
>>> by volunteer open-source contributions. Whenever you make an adjustment to
>>> the base system, you might ask yourself: could others benefit from this
>>> change, too?, and if the answer is yes, we invite you to consider
>>> contributing back to the community. Also, if you just discovered a bug,
>>> have a question, or would like to discuss an idea, our forums are open!!!!!!
>>> > + ]style[(24 39 22 158 18 8 3 28 17 50 37 143 43
>>> 197)a0b,a0,a0i,a0,Rcode:// SqueakTheme
>>> class>>#addSyntaxHighlighting:;,a0,Rcode://
>>> > + self systemNavigation browseAllImplementorsOf:
>>> #expectedFailures;,a0,,a0,a0i,a0,a0i,a0!!' readStream nextChunkText)
>>> > +             key: #contributingToSqueak;
>>> > +             shouldStyle: false;
>>> > +             yourself!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>defaultPage (in category
>>> 'accessing') -----
>>> > + defaultPage
>>> > +
>>> > +     ^ #contributingToSqueak!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>firstContribution (in
>>> category 'pages') -----
>>> > + firstContribution
>>> > +     "This method was automatically generated. Edit it using:"
>>> > +     "SqueakContributionHelp edit: #firstContribution"
>>> > +     <generated>
>>> > +     ^(HelpTopic
>>> > +         title: 'First Contribution'
>>> > +         contents:
>>> > + 'Making your first contribution
>>> > +
>>> > + * Install the latest Trunk updates
>>> > + * Make your change, preferably from a clean image (to avoid
>>> configuration drift)
>>> > + * Open the Monticello Browser:
>>> > +     * On the left, select the package you have changed (denoted with
>>> a *star).
>>> > +     * On the right, select the inbox repository.
>>> > +     * On the top, press save.
>>> > + * Review your changes, enter a meaningful version message, and
>>> accept the new version to upload it.
>>> > + * That''s it!!!! Your contribution has arrived in the inbox and soon
>>> you will receive feedback from the community through the mailing list. Keep
>>> an eye on your mailbox!!!!!!
>>> > + ]style[(30 4 32 84 27 5 12 12 7 34 5 6 13 12 5 34 5 64 6 33 10
>>> 152)a0b,a0,Rcode://
>>> > + SqueakContributionHelp
>>> > +     openDockingBarMenuThat: [:m | (m owner submorphIndexOf: m) = 1]
>>> > +     filterItem: ''Update'';,a0,Rcode://
>>> > + SqueakContributionHelp
>>> > +     openDockingBarMenuThat: [:m | m contents = ''Tools'']
>>> > +     filterItem: ''Monticello
>>> Browser'';,,a0b,a0,a0b,a0,a0i,a0,a0b,a0,a0b,a0,a0b,a0,a0b,a0,a0i,a0!!'
>>> readStream nextChunkText)
>>> > +             key: #firstContribution;
>>> > +             shouldStyle: false;
>>> > +             yourself!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>furtherConcepts (in
>>> category 'pages') -----
>>> > + furtherConcepts
>>> > +     "This method was automatically generated. Edit it using:"
>>> > +     "SqueakContributionHelp edit: #furtherConcepts"
>>> > +     <generated>
>>> > +     ^(HelpTopic
>>> > +         title: 'Further Concepts'
>>> > +         contents:
>>> > + 'Further Concepts
>>> > +
>>> > + * Change sets: Usually, new proposals are best exchanged through an
>>> inbox version. However, some ideas consist of changes to multiple packages,
>>> when it becomes tricky to work with multiple inbox versions. In this case,
>>> a change set is a good alternative. You can open a dual change sorter from
>>> the Tools and Changes menus in the docking bar and make a yellow click on
>>> the change set list on the left to bring up some options. Create a new
>>> change set and copy or move all relevant changes to it. Add a preamble to
>>> the change set to add an explaining message and finally file out or mail to
>>> list it directly. To install a change set, you can file in it from the file
>>> list or by dragging it into the image.
>>> > + * Preambles and postscripts: Some changes make it necessary to run
>>> some scripts before or after loading the new code to perform any migrations
>>> or changes to the object graph. This is possible through preambles and
>>> postscripts. To add or edit a script for a Monticello package, select it in
>>> the Monticello browser and press the Scripts button. Add your logic to the
>>> code, test it, accept it, and include it in your next inbox version. Note
>>> that preambles and postscripts in Trunk packages are required to be
>>> idempotent and may be evaluated multiple times. For changesets, you can add
>>> a preamble and a postscript as well from the yellow-button menu of the
>>> change set list in the change sorter.
>>> > + * If you identify any other contribution-related concepts that
>>> should be mentioned or explained in greater detail here, please feel free
>>> to add them here. This would make an ideal first contribution. :-)!!
>>> > + ]style[(16 4 12 256 18 10 5 5 7 111 23 5 4 4 4 29 14 60 8 4 12 47 7
>>> 13 9 37 26 266 18 15 7 561)a0b,a0,a0b,a0,a0i,a0,Rcode://
>>> > + SqueakContributionHelp
>>> > +     openDockingBarMenuThat: [:m | m contents = ''Tools'']
>>> > +     filterItem: ''Dual Change Sorter'';,a0,Rcode://
>>> > + SqueakContributionHelp
>>> > +     openDockingBarMenuThat: [:item | (item respondsTo:
>>> #updateContents) and: [(item instVarNamed: ''wordingSelector'') =
>>> #browseChangesLabel]]
>>> > +     filterItem: ''Dual Change
>>> Sorter'';,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,Rcode://
>>> > + SqueakContributionHelp
>>> > +     openDockingBarMenuThat: [:m | m contents = ''Tools'']
>>> > +     filterItem: ''File List'';,a0,a0b,a0,Rcode://
>>> > + SqueakContributionHelp
>>> > +     openDockingBarMenuThat: [:m | m contents = ''Tools'']
>>> > +     filterItem: ''Monticello Browser'';,a0,a0i,a0!!' readStream
>>> nextChunkText)
>>> > +             key: #furtherConcepts;
>>> > +             shouldStyle: false;
>>> > +             yourself!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp
>>> class>>openDockingBarMenuThat:filterItem: (in category 'support') -----
>>> > + openDockingBarMenuThat: menuBlock filterItem: filterString
>>> > +
>>> > +     | dockingBar menu |
>>> > +     dockingBar := (self currentWorld mainDockingBars ifEmpty: [^
>>> self]) first.
>>> > +     menu := (dockingBar submorphs select: #isMenuItemMorph) detect:
>>> menuBlock ifNone: [^ self].
>>> > +     dockingBar selectItem: menu event: self currentEvent.
>>> > +     menu subMenu setProperty: #matchString toValue: filterString.
>>> > +     menu subMenu displayFiltered: self currentEvent.
>>> > +     ^ nil "do not answer a Behavior here, which would trigger
>>> another browser when sending this message from a TextURL"!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>pages (in category
>>> 'accessing') -----
>>> > + pages
>>> > +
>>> > +     ^ #(contributingToSqueak communityModel firstContribution
>>> squeakInboxTalk furtherConcepts)!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakContributionHelp class>>squeakInboxTalk (in
>>> category 'pages') -----
>>> > (excessive size, no diff calculated)
>>> >
>>> > Item was added:
>>> > + TextAnchor subclass: #SqueakHelpTextImage
>>> > +     instanceVariableNames: ''
>>> > +     classVariableNames: ''
>>> > +     poolDictionaries: ''
>>> > +     category: 'Help-Squeak-Project'!
>>> > +
>>> > + !SqueakHelpTextImage commentStamp: 'ct 6/21/2022 22:54' prior: 0!
>>> > + I embed a form into a text as a text anchor. I add support for
>>> fileIn/fileOut by storing the form as a base64 string. In the future, I'd
>>> like to make a great carrier and be moved "upstream" to a real Trunk
>>> package. For now, I still provide my humble service to some pages in the
>>> Squeak help.!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage class>>forForm: (in category
>>> 'instance creation') -----
>>> > + forForm: aForm
>>> > +
>>> > +     ^ self new
>>> > +         form: aForm;
>>> > +         yourself!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage class>>scanCharacter (in category
>>> 'fileIn/Out') -----
>>> > + scanCharacter
>>> > +
>>> > +     ^ $m!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage class>>scanFrom: (in category
>>> 'fileIn/Out') -----
>>> > + scanFrom: aStream
>>> > +
>>> > +     | base64 data form |
>>> > +     base64 := aStream upTo: $;.
>>> > +     data := Base64MimeConverter mimeDecodeToBytes: base64 readStream.
>>> > +     form := ImageReadWriter formFromStream: data.
>>> > +     ^ self forForm: form!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage>>exportBase64 (in category
>>> 'fileIn/fileOut') -----
>>> > + exportBase64
>>> > +
>>> > +     ^ (ByteArray streamContents: [:stream |
>>> > +         PNGReadWriter putForm: self form onStream: stream])
>>> > +             base64Encoded
>>> > + !
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage>>form (in category 'accessing')
>>> -----
>>> > + form
>>> > +
>>> > +     ^ self anchoredMorph image!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage>>form: (in category 'accessing')
>>> -----
>>> > + form: aForm
>>> > +
>>> > +     self anchoredMorph: aForm asMorph.!
>>> >
>>> > Item was added:
>>> > + ----- Method: SqueakHelpTextImage>>writeScanOn: (in category
>>> 'fileIn/fileOut') -----
>>> > + writeScanOn: aStream
>>> > +
>>> > +     aStream
>>> > +         nextPut: self class scanCharacter;
>>> > +         nextPutAll: self exportBase64;
>>> > +         nextPut: $;.!
>>> >
>>> > Item was changed:
>>> > ----- Method: SqueakProjectHelp class>>pages (in category 'accessing')
>>> -----
>>> > pages
>>> > +     ^#(workingWithSqueak squeakUserInterface extendingTheSystem
>>> squeakResourcesOnline)!
>>> > -     ^#(extendingTheSystem squeakResourcesOnline squeakUserInterface
>>> workingWithSqueak)!
>>> >
>>> > Item was changed:
>>> > ----- Method: SqueakProjectHelp class>>squeakResourcesOnline (in
>>> category 'pages') -----
>>> > squeakResourcesOnline
>>> >     "This method was automatically generated. Edit it using:"
>>> >     "SqueakProjectHelp edit: #squeakResourcesOnline"
>>> > +     <generated>
>>> >     ^(HelpTopic
>>> >         title: 'Squeak Resources Online'
>>> >         contents:
>>> > 'Web sites
>>> >
>>> > Main site of Squeak
>>> >     http://www.squeak.org
>>> > Weekly Squeak
>>> >     http://news.squeak.org
>>> > Downloads for many versions
>>> >     http://www.squeak.org/downloads
>>> > Main site of OpenSmalltalk VM
>>> >     https://github.com/OpenSmalltalk/opensmalltalk-vm
>>> > + GitHub Issue Tracker
>>> > +     https://github.com/squeak-smalltalk/squeak-object-memory/issues
>>> >
>>> > Mailing lists
>>> >
>>> > beginners
>>> >     This is the place to ask even the most basic questions. Don''t be
>>> afraid. Just ask. The community will help you get started with Squeak.
>>> >     http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>> > +     http://forum.world.st/Squeak-Beginners-f107673.html (currently
>>> defect)
>>> > -     http://forum.world.st/Squeak-Beginners-f107673.html
>>> >
>>> > squeak-dev
>>> >     This is the main Squeak mailing list. Join that list to be part in
>>> the community. Subscribe to the mail server or read on a forum.
>>> > +     For more information on the community and the contribution
>>> process, check out the tutorial Contributing to Squeak in the following
>>> pages.
>>> >     http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
>>> > +     http://forum.world.st/Squeak-Dev-f45488.html (currently defect)
>>> > -     http://forum.world.st/Squeak-Dev-f45488.html
>>> >
>>> > vm-beginners
>>> >     This is the entry point for people who want to learn more about
>>> how Squeak runs on your operating system. You may ask even basic questions.
>>> :-)
>>> >     http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
>>> > +     http://forum.world.st/Smalltalk-VM-Beginners-f3068605.html
>>> (currently defect)
>>> > -     http://forum.world.st/Smalltalk-VM-Beginners-f3068605.html
>>> >
>>> > vm-dev
>>> >     This is the place where discussions about the OpenSmalltalk
>>> virtual machine happen. Join that list the be a part of the community.
>>> >     http://lists.squeakfoundation.org/mailman/listinfo/vm-dev
>>> > +     http://forum.world.st/Squeak-VM-f104410.html (currently defect)
>>> > -     http://forum.world.st/Squeak-VM-f104410.html
>>> >
>>> > Books
>>> >
>>> > Squeak By Example
>>> >     A beginners textbook, based on Squeak 3.9 and so a little out of
>>> date in some visual aspects and some details. Still a valuable resource.
>>> The content is maintained in github at
>>> > https://github.com/SquareBracketAssociates/SqueakByExample-english
>>> > but a prepared and ready to read pdf version can be found at
>>> >
>>> https://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac
>>> >
>>> > Other books
>>> >     Many books about Squeak and Smalltalk in general have been made
>>> available and are hosted at
>>> > http://stephane.ducasse.free.fr/FreeBooks.html!!
>>> > + ]style[(11 19 2 21 1 15 22 1 27 2 31 1 29 2 49 1 20 2 63 2 13 1 1 11
>>> 135 2 60 2 51 21 10 2 223 22 26 61 2 44 21 14 145 63 2 58 21 6 134 57 2 44
>>> 21 5 2 17 2 177 66 62 87 2 11 94 46)b,I0i,I0,Rhttp://www.squeak.org
>>> ;,I0,I0i,Rhttp://news.squeak.org;,I0,I0i,I0,Rhttp://
>>> www.squeak.org/downloads;,I0,I0i,I0,Rhttps://
>>> github.com/OpenSmalltalk/opensmalltalk-vm;,I0,I0i,I0,Rhttps://
>>> github.com/squeak-smalltalk/squeak-object-memory/issues
>>> ;,I0,I0b,I0,,i,,b,Rhttp://
>>> lists.squeakfoundation.org/mailman/listinfo/beginners;,,Rhttp://
>>> forum.world.st/Squeak-Beginners-f107673.html;=,,i,b,,Rcode://
>>> HelpBrowser openOn: SqueakContributionHelp;,,Rhttp://
>>> lists.squeakfoundation.org/mailman/listinfo/squeak-dev;,,Rhttp://
>>> forum.world.st/Squeak-Dev-f45488.html;=,,i,,Rhttp://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
>>> ;,,Rhttp://
>>> forum.world.st/Smalltalk-VM-Beginners-f3068605.html;=,,i,,Rhttp://lists.squeakfoundation.org/mailman/listinfo/vm-dev
>>> ;,,Rhttp://forum.world.st/Squeak-VM-f104410.html;=,,b,,i,b,,Rhttps
>>> > ://
>>> github.com/SquareBracketAssociates/SqueakByExample-english;I1,,Rhttps://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac;I1,,i,,Rhttp://stephane.ducasse.free.fr/FreeBooks.html;I1!!'
>>> readStream nextChunkText)
>>> > - ]style[(11 19 2 21 1 15 22 1 27 2 31 32 49 2 13 1 1 11 135 2 60 2 51
>>> 2 10 2 132 61 2 44 2 14 145 63 2 58 2 6 134 57 2 44 2 5 2 17 2 177 66 62 87
>>> 2 11 94 46)b,I0i,I0,Rhttp://www.squeak.org;,I0,I0i,Rhttp://
>>> news.squeak.org;,I0,I0i,I0,Rhttp://www.squeak.org/downloads
>>> ;,I0,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm
>>> ;,I0,I0b,I0,,i,,b,Rhttp://
>>> lists.squeakfoundation.org/mailman/listinfo/beginners;,,Rhttp://
>>> forum.world.st/Squeak-Beginners-f107673.html;,,i,b,,Rhttp://
>>> lists.squeakfoundation.org/mailman/listinfo/squeak-dev;,,Rhttp://
>>> forum.world.st/Squeak-Dev-f45488.html;,,i,,Rhttp://
>>> lists.squeakfoundation.org/mailman/listinfo/vm-beginners;,,Rhttp://
>>> forum.world.st/Smalltalk-VM-Beginners-f3068605.html;,,i,,Rhttp://
>>> lists.squeakfoundation.org/mailman/listinfo/vm-dev;,,Rhttp://
>>> forum.world.st/Squeak-VM-f104410.html;,,b,,i,b,,Rhttps://
>>> github.com/SquareBracketAssociates/SqueakByExample-english;I1,,Rhttps://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac;I1,,i,,Rht
>>> > tp://stephane.ducasse.free.fr/FreeBooks.html;I1!!' readStream
>>> nextChunkText)
>>> >             key: #squeakResourcesOnline;
>>> >             shouldStyle: false;
>>> >             yourself!
>>> >
>>> >
>>>
>>
>>
>> --
>> _,,,^..^,,,_
>> best, Eliot
>>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
>

-- 
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220628/4674b433/attachment-0001.html>


More information about the Squeak-dev mailing list