Pharo is Pharo

Pharo is not Smalltalk. Pharo is Smalltalk-inspired.

Certainly, when inspecting the code, one might say that Pharo is Smalltalk. After all, Pharo started from Squeak, and Squeak started from Smalltalk. Pharo does share to a large extent the original Smalltalk syntax and some of the original model and libraries, but much else has changed. To name a few new things: the traits model, the slots model, the flexible compiler, the new debugger, the command line interface, or the vectorial canvas. These issues are not cosmetics, they are essential differences.

Being Smalltalk meant something for four decades. It still does. However, meanwhile many arguments turn into "how this or that construct is not compliant with ANSI or with the original Smalltalk implementation".

For too long have smalltalkers worshiped the mastery of the originators. It is time to grow up and respect what they did without getting trapped into a religious land. First, there are many interesting things happening outside of the Smalltalk world. Second, there are even more interesting things that are not yet happening anywhere.

Pharo is not Smalltalk. Pharo is Smalltalk-inspired.

And what a great inspiration source that is. Smalltalk was a breakthrough. It was so far into the future that it took 2 decades to be understood by a few. It then took 2 more decades to be rediscovered in various forms. And still several of the ideas promoted with Smalltalk are not yet mainstream, the most prominent being the image and the live tooling. But, Smalltalk is not the end of innovation. There is more to do. It is for this reason that we have to transcend it.

We have to respect it, but we have to look towards the future. Pharo honors Smalltalk precisely because the original specs are not important. We look at the ideas behind Smalltalk and take them further both in shape and in content.

But perhaps the largest difference between Pharo and Smalltalk is not to be seen in code, but in the organization of the overall project. Pharo is more than code. Pharo is a project that fuels on the energy of wanting to shape a different future without being driven by the past. It is an open and inclusive project that favors initiative over seniority.

If you want to experience Pharo and only look at the code, you are missing a significant part of it. Give it a try and join us. We want to shape the future together others that want to shape the future. And the future is not the one defined four decades ago.

Pharo is not Smalltalk. Pharo is Smalltalk-inspired.

Pharo is Pharo.

Posted by Tudor Girba at 1 August 2013, 11:25 am with tags pharo link


Good points. Sadly, many of the changes (traits, slots) are very dubious indeed and I think eventually we’re going to have to give up on Pharo as it becomes just another testbed for the developers’s experiments instead of careful design and/or answering practical problems that application developers need addressed. And if there’s one of the latter that stands out above all others it’s the prison of the integrated desktop/world background. Until that’s fixed, Pharo will gain no traction on real computers in real offices with real end-users.

Posted by Robert Long at 1 August 2013, 3:26 pm link

Yes let us reinvent Smalltalk! Thanks for this really inspiring blog post.

Robert I imagine that you are joking because we do real experiments (like first class pointers, secondary memory management, virtualizing complete image and a lot more crazy things and they do not go inside Pharo). Traits got rewritten from scratch after the first implementation. Then the design of Traits was designed to be backwards compatible else they would have been something really different. So it would be good that you know about what you are talking before ranting.

We are steadily improving the system and we pay real attention to provide the best we can. Now to provide a solid environment we should not have to jump over dirty papers all over the place. So this is why we are massively cleaning and improving the system. Look for example at FileSystem, Athens, OPAL.... we do not do that for the sake of doing it but because we want to offer a solid basis for the future. And the future of Pharo is bright.

Posted by Stephane Ducasse at 1 August 2013, 4:30 pm link

BTW about slots, apparently you do not want to have first class instance variables... CLOS got them more than 20 years ago and this is really missing in Smalltalk. We could do really nice object layout optimisation or a much better metamodeling support. But you probably know that.

Posted by stephane ducasse at 1 August 2013, 4:34 pm link

Well said!

Posted by Alexandre Bergel at 1 August 2013, 4:43 pm link

Excellent points. The community is awesome indeed.

Posted by Philippe Back at 2 August 2013, 1:04 am link

I guess that means that I won’t be able to keep maintaining Metacello on Pharo? Metacello is a cross-platform tool. Oh, was fun while it lasted.

Posted by Dale Henrichs at 3 August 2013, 9:20 pm link