I am waiting for #FOSDEM videos to come up, so in the meantime I am looking at booth videos and holy Saint Alan Kay this presentation of Pharo just blows my mind. Twice.

There's all the usual wow, Smalltalk allows you to edit everything and you're really living inside the IDE and it's part of your editable environment etc, and that's really cool and unparalleled really, but well-known since decades, and then he goes into:

- "Extreme TDD": Write the test, see it fail because a method is missing, *generate that method from the debugger* and then *continue the test to its conclusion*

That was awesome, and then it's strike two and I'm down, gasping for air:

- They have a deprecation mechanism that *rewrites your calling code* when you call the deprecated method, so that it will never call that method again, but call the new one in the proper way.
- Pharo has Extreme TDD with live coding in the debugger while running the test.
- It has a deprecation mechanism that rewrites and upgrades your calling code.

<mindblownguyinspace.gif>

I'm convinced that image-based development is what enables both of these, and I find it hard to see how it could reliably be done any other way, but I still wonder; How does one, with image-based coding:

- Collaborate with strangers across the internet on a moving code base
- Do code review, branching, code archaeology, etc, within a team?

I'm sure the Pharo developers must be doing both, but how? Do they do source dumps after live editing, and do rebootstrapping of the image after merging? Or are there special Pharo image-based review and versioning tools that work with images directly?

How do libraries and dependencies work?

@pharo #pharo @smalltalk #smalltalk
I think I vaguely recall that Smalltalkers generally just vendor their deps?

That sounds like it would make it hard to share your local changes upstream. But maybe they're so used to editing everything all the time that the dependency quickly becomes unrecognizable anyway?
Follow

@shapr @clacke reminds me of claims that caffeine.js.org (live-coding Squeak on JS) had support for broadcasting changes thiscontext.com/2019/12/02/nai

Sign in to participate in the conversation
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.