![]() |
|
![]() |
|
I agree with you. I've worked for a while at a company using it in production [1]. For learning Pharo (while not working at a company), I've learned that going to ESUG [1] and Pharo Days [2] (2 conferences) is the best way to actually learn. On ESUG there are many professional Smalltalkers, including people that write Pharo. And on Pharo Days there are many OG Pharo devs. They can teach you certain things much quicker than any course can. For example, on ESUG, I was shown how to write a debugger extension on the spot for a particular debugging case (with animations) that had no good working debugging support yet. It was amazing to see how quick people can develop it when they have strong knowledge on it. The fact that the language is inspectable helps a ton. Another way to learn is by asking many questions on their Discord channel [4]. The community seems really active there and I found them to be really friendly. The Pharo website [5] sort of understates how active their spun off communities are as they simply mention that they exist, but the site doesn't really convey the vibe of how lively the communities are. I'm not sure how one would go about that, but it's a shame you can't directly see that from a website. [2] https://esug.org |
![]() |
|
I think Pharo would benefit a lot from having lots and lots of screen casts, since so much stuff is visual. I don't think something like ESUG is a sustainable way to spread techniques. A lot of stuff that is well documented in the Pharo ecosystem is old. A lot of the new stuff doesn't have great docs. Just reference docs and code is not enough. There has to be a coherent narrative around an API to put it together. Also, I'm all onboard having a UI environment for programming, but it needs to have great keybindings that follow platform HIGs, and at least my Pharo 10 experience of the window management was really bad. I wrote about this some https://nikhilism.com/post/2021/experiencing-smalltalk/ |
![]() |
|
why would it be considered harassment? it's not like your comment is any more critical than many of the others here. as for the million windows, if you go that from my videos, then i'd like to point out that the interface has indeed improved since. for one it added the ability to group windows with tabs: https://youtu.be/GGJZeajjWGU?list=PLqbtQ7OkSta0ULYAd7Qdxof85... (interestingly, that video is older than mine, so it seems that i just hadn't discovered this feature yet) |
![]() |
|
I would like to disagree with you, but I can’t. Pharo, and Squeak that it is derivative from, is an odd development experience. A long time ago I experimented with making web apps with Pharo, fun, but I wouldn’t use it in production. When I saw this announcement I was motivated to update my Pharo NLP library https://github.com/mark-watson/nlp_smalltalk but I may not. Many NLP tasks are now done infinitely better using deep learning and LLMs. I just looked for OpenAI API support and found 2 year old Pharo project library https://github.com/pharo-ai/open-ai and maybe more promising 1 year old project by Bracken https://github.com/brackendev/OpenAI-Pharo EDIT: to be fair to Pharo, I am not really a Smalltalk person. In 1983 someone at Xerox arranged for me to get a trial Smalltalk system on My Xerox 1108 Lisp Machine, and I removed it within a few weeks. |
![]() |
|
that's not the question. we are looking for examples that come with source that can be studied. the success page lists 53 projects. only one of them came with a direct link to the source. one included an un-clickable link. one linked to a non-english website where i could figure out that it was licensed under the LGPL, but i could not find the link to the source. a surprise was that DrGeo which is known to be Free Software links to a dead website. grafoscopio which i also believe to be FOSS as well has a dead download link on its website. several other projects had dead links too. the only source i found was for HoneyGinger: https://github.com/tomooda/HoneyGinger OpenPonk https://github.com/OpenPonk and record: https://github.com/estebanlm/record (7 years old) btw, DrGeo is here: https://github.com/hilaire/drgeo that is three source examples under active development for a project as old and as large as pharo is that is surprisingly little. more accessible source examples are needed to attract developers. especially given the difficulty to get used to the pharo developer tools. i have actively explored working with pharo. i just could not find any useful apps that i could use and contribute to. and i had no ideas for an app that i'd be interested enough to create from scratch. for a while i even tried to use it as a desktop and used an app that provides a commandline inside pharo. the primary problem was that upgrading to a new version of pharo each year was difficult. given the image based development you tend to start with a current version of pharo and then keep to that version until you are done. |
![]() |
|
> i have actively explored working with pharo. Then you must already know more than me, about what's available now. Too much? https://github.com/feenkcom/gtoolkit > … given the image based development you tend to start with a current version of pharo and then keep to that version until you are done. I think of it as image based development: not image based version control. |
![]() |
|
> there is no tool that would just take every change i made to the original pharo image and apply it to the new one. What about Smalltalk? All your interaction with the IDE is implemented in Smalltalk. For each of the changes you want to preserve, figure out which UI class is used and browse the code to figure out how the UI class makes those changes. Then copy what the UI class does into a workspace script, save the script, and file-in to a clean distro image to check that it works. Here's an example of a little script being filed-in to load a program, do clean-up and save the image: https://benchmarksgame-team.pages.debian.net/benchmarksgame/... |
![]() |
|
Syntax is the easy part. The real difficulty is in trying to make sense of the whole ecosystem, including the strange runtime-IDE-hybrid approach. |
![]() |
|
In the beginning source code in text files :-) "Within each project, a set of changes you make to class descriptions is maintained. … Using a browser view of this set of changes, you can find out what you have been doing. Also, you can use the set of changes to create an external file containing descriptions of the modifications you have made to the system so that you can share your work with other users." 1984 "Smalltalk-80 The Interactive Programming Environment" page 46 "At the outset of a project involving two or more programmers: Do assign a member of the team to be the version manager. … The responsibilities of the version manager consist of collecting and cataloging code files submitted by all members of the team, periodically building a new system image incorporating all submitted code files, and releasing the image for use by the team. The version manager stores the current release and all code files for that release in a central place, allowing team members read access, and disallowing write access for anyone except the version manager." 1984 "Smalltalk-80 The Interactive Programming Environment" page 500 https://rmod-files.lille.inria.fr/FreeBooks/TheInteractivePr... |
![]() |
|
How does Pharo compare to Squeak? I'm interested in doing more with Smalltalks but Pharo just does not play nice on Fedora 40 with Wayland right now
|
![]() |
|
Cuis [1] is a simplified fork of Squeak, trying to make it more closely resemble the original Smalltalk-80 (while using a custom version of Morphic). Squeak itself initially tried to not be bound by Smalltalk-80 heritage. Now, it focuses on preserving of the experiments that Alan Kay, Dan Ingalls, and others did, being very conservative in this regard. Pharo forked to have a system that can actually evolve. Pharo should generally work on Wayland, so there will be more things going on, probably. [1] https://cuis.st/ |
![]() |
|
Is not calling it a Smalltalk implementation still a marketing decision, or has Pharo diverged sufficiently from Smalltalk-80 to become incompatible?
|
![]() |
|
I think incompatible Smalltalk implementations were one of the bigger barriers to Smalltalk adoption. In contrast, Java standard libraries have been a huge benefit.
|
![]() |
|
https://github.com/smarr/RoarVM is the main thing that comes up when trying to learn about this, and it hasn't been touched in over 10 years. I have also seen people working on spawning child VMs to handle parallelism, though unfortunately I don't have links to those discussions immediately at hand. It seems like perhaps an unnecessarily heavyweight approach, too, not a canonical solution that you would want to use in production. I assume that step 1 towards parallelism, at least on the image side, would be going through the class library and making sure everything is thread-safe. I'd love to know where one would even get started with that effort. The Roar project claims to support Pharo 1.2, which doesn't seem to be very far after they forked from Squeak, but obviously a lot has changed since then. And the challenge is that Pharo is still rapidly developing all the overhauled classes that distinguish it from Smalltalk-80. Meanwhile, if I want to play with parallel image/REPL-based programming, I can go over to Common Lisp and, while lacking an equally coherent GUI, be able to load up bordeaux-threads and off I go. |
![]() |
|
In what way is it not pragmatic? I don't know Pharo at all, but "not pragmatic" often means just "too different from what I'm used to"... |
Honestly my experience at work was mostly with Visualworks. But I've been using Pharo in two side projects and I'm loving it. It became one of my top 3 programming languages I've ever used (together with Scheme and CL). It's impressive how much this rather small community achieved, thanks for the awesome work and this new release!