Some more small thoughts on Io.
I’ve been using Io again, just to rediscover the sense of enjoyment I felt when I first started using it. I’ve been working on and off on a small project called Boid, which is very much inspired by Rip. Boid is basically an environment and package manager, and each environment is it’s own isolated set of packages and dependencies. Setting things up that way allows the developer to sandbox each setup to ensure that everything is working correctly, and allows him to have multiple versions of a package running at the same time.
While working on Boid, I started missing things I take for granted in other languages: literal lists and dictionaries, and keyword arguments. Having these would make working with Io even more of a pleasure, as if it wasn’t a dream already. Ioke has all of these things, but not nearly as big a community as Io. Or at least I don’t think so, both communities are stagnant.
Another thing I’m not sure of in Io is building larger than single-file projects. How should namespacing work? Do I even need to namespace? I ended up doing something like this for Boid:Boid := Object clone
Boid Environment := Object clone
That has the Environment object as a slot of the top-level Boid object, which works somewhat like Ruby, without explicit module syntax. There’s not much example code to go on though, so I’m still not entirely sure that was the right decision.
I almost feel a sense of guilt for preferring Ioke to Io at the moment.