Slightly different take on the previous thread: Fo...
# thinking-together
m
Slightly different take on the previous thread: Fortnite itself actually is the future of programming! (Well, sorta.) Shared-virtual-world games like Fortnite (and Minecraft before it) are successful primarily due to their status as digital social environments. In fact, these sorts of games are increasingly taking over the role of “third places”, or semi-public community hangout spaces (https://medium.com/s/greatescape/fortnite-is-so-much-more-than-a-game-3ca829f389f4). One of the big problems with these new digital third places is that they’re not open to improvement or modification by the people who spend their time there. The rules of Fortnite, and the map you play on, are determined by some distant corporation; even if everyone in a given player community would favor a certain adjustment to the rules, there’s no way for that community to implement their desired change short of petitioning the developers to implement it globally. Making digital third places approachably programmable from within would change this dynamic, while simultaneously giving a whole bunch of people both a motive and a means to learn to program. We can look to MUDs as a key source of inspiration here. MUDs embody a tradition of allowing players to shape their shared digital world – including, in some cases, by scripting dynamic behaviors for NPCs and objects. Getting approachable scripting tools embedded in a widely used modern digital social environment would be a major coup in terms of giving users back some control over the digital spaces they inhabit. Situating a “future of programming” vision in this context also suggests a particular focus on building tools that enable communities of novice user-programmers to collaborate, self-govern, and learn together. Empowering individual users to shape the environment is necessary but not sufficient; the real leverage will come from empowering small communities of people with varying levels of skill and interest. You can maybe think of the end goal here as something like a community code-garden, where most users know just enough about how to program the environment that they can chip in to help improve it in small ways here and there. Meanwhile, a few informally designated “local experts” will sometimes step up to take the lead on larger-scale changes or improvements. I keep meaning to write about this at greater length, but here’s a related Twitter thread I wrote when some of this stuff first clicked for me: https://twitter.com/maxkreminski/status/1030838313429528576
❤️ 6
i
[Riffing] How might Second Life or MySpace factor in to this vision? Both were communities that allowed people to create their own personally representative spaces, via some measure of programming. I never tried Second Life myself, but I customized the fuck out of my MySpace page.
☝️ 1
What's definitely lacking from MySpace (and personal web pages in general) is that they aren't truly shared spaces, in that two people aren't going to be independently working on the same exact spot in the community.
But, the structure imposed by MySpace and MUDs (and, I presume, Second Life) meant that you'd be inspired by seeing what other folks had done within the same creative constraints. That led to a lot of friendly competition and one-upping, which was fantastic.
So even though two people weren't working on the same thing, they were working within the same tight confines. That's a sort of P2P interaction that I don't see nearly as much of when the possibility space is much wider (eg: games and software and the web, in the large).
You could also make an argument that DeviantArt was a social network game with gardening mechanics. I certainly grew a lot of artwork because of the collaboration and friendly competition on DA, that I wouldn't have made without it. If we're looking for something like that, but for programmers, ShaderToy and CodePen spring to mind. But they don't seem to have quite the same emphasis on socialization that DA, MySpace, Second Life, and MUDs had. Bummer!
d
Came to this thread to bring up both those examples, so 👏 (and sick myspace @Ivan Reese) Great post @Max Kreminski. While you’re writing about novice users, I think a shared space is valuable for experts too. I’m thinking of something like VSCode live share (https://code.visualstudio.com/blogs/2017/11/15/live-share) which tries to provide a Google docs-like editing experience. My hunch is this is an underexplored space (its still pretty much the exact same textual experience, just with another person in there). But I’m not sure what a more advanced version would look like!
s
We're already in a 'shared virtual world' of sorts. All of the software I run is written by others and open source, and so are open to modification. In reality this world is so fractured and forking/versioning/packaging so tedious that it doesn't feel like a shared world at all. How much work is needed just figure out where the 'source code' of an app is, what version I'm running, how to modify it, test it, send a PR or publish a new version and so on? Why is this necessary in a computer capable of creating virtual hypermedia worlds that can be vast and distributed? Ideally the provenance of all software artifacts should be maintained - I should be able to just click on an app, modify it in place and publish my tweaked version, discoverable by my friends and followers.
y
Sorry to come to this thread so late, but I’m glad someone else mentioned Second Life. I worked at Linden Lab (the creators of SL) for over 5 years; what brought me there was the potential for a shared, programmable, persistent virtual space. I’d already spent many years playing with LambdaMOO (which I’m surprised that nobody’s mentioned yet).
If you’re interested in exploring programmable shared worlds, I’d look at SL for its potential (I think it’s easily the largest such single-architecture system) and some amazing creations, but developing for SL is still hellish in many ways. Linden’s newer world, Sansar, improves on most things but I’ve not tried it. However, for a simple start, I would still recommend LambdaMOO (by which I mean either running the server & core DB locally, or getting an account on lambda.moo.mud.org or any other MOO). The core design is nearly 30 years old and it’s still a beautiful balance of simplicity and power. Once you’ve explored the basic help docs, go find some programming tutorials, learn about player & feature classes, then imagine how to apply some of those models to a modern architecture. (There have been several attempts to make a web-based world on the MOO model, and some got quite far, but none really took off AFAIK.)