DAVE'S LIFE ON HOLD

Shared Objects

Today's grand advancement in the Phosphor Development Environment was the inclusion of a simple private/public object storage mechanism. Your inventory is always stored locally, and occasionally refreshed from the shared store in the webapp. Copies of all of the shared code are automatically saved to your local store so that you can continue to work offline, without fear of losing access to someone else's code. There is currently no way to delete public code other than editing it. There is also no way to protect your edits, as all code is globally editable. In the current incarnation, the Phosphor environment assumes everyone is working on the honor system.


Collaborative Programming


Programming is generally a social activity. With the exception of a few loners who write code entirely for their own amusement, most programs have some form of social life of their own. In commercial software, an entire socio-economic ecosystem exists around the software involving developers, customers, marketers, reviewers, and sales guys. In the realm of community produced software, you have the exact same factors, however it is the social bonds between the developers that most influence the success of the product. And even for the lone hacker, it is rare that he or she won't end up reading their code many years from now and marvel at how inept they used to be.


For collaborative programming to work best, all of the developers need to share a common language. But beyond basic vocabulary, they must also understand each other's idioms and other idiosyncratic quirks in how they use language. Good programmers develop their writing style. Code can eventually cease to read like a staccato style laundry listing of commands, and begins to form heavily nuanced well rounded sentences. But this only happens if the community of programmers values both style and form as integral components as both design and function. And as with individuals, groups too can succumb to bad habits.


The Real Motivation


Ultimately, my goal of providing an environment like Phosphor is to provide both novice and experienced programmers with a better sense of what programming can be. Rather than assuming that Javascript is a toy language, or that web browsers are a 3rd rate platform, this environment allows these tools to live up to a potential far greater than is apparent in most web programming. If we are ever to reverse the trend towards ever worsening code standards, ever more complex and bloated applications, and ever less legible code, we need break ourselves of our bad habits, and develop some good ones in their stead.


In Safari 4, there is a small core of functionality which has the potential to replace all existing web technologies. The Canvas finally provides a simple cross platform implementation of BitBlit. The audio, video, and image tags of HTML5 finally provide a uniform way of processing multimedia data files across the web. New javascript engines like SquirelFish and V8 provide greatly improved performance, with the next generation of native JITs approach 'low level language' speeds. Effectively, we are seeing the piecemeal accidental compilation of a bastard offspring of the Self Programming Language and environment on everyone's desktop. Phosphor merely makes that more readily apparent.