Jared Thirsk
From SlateWiki
My interest in Slate
I'm interested in where Slate is going, but I haven't decided yet if I will use or contribute to it. Here are the three things I am seeking. Whether Slate or something else, like my hypothetical project (at http://daf.melsib.net) accomplishes this, I don't really care:
- The ultimate and final programming paradigm
Envision the year 2100... computers will not just have a object-oriented definition language like C++ or Java (note: I'm a newbie to smalltalk), but they will live and breathe objects. They won't just be objects, they will have evolved into concepts, similar to how humans store concepts in their mind. If you ask the computer what a certain object is, it will be able to give you a description. If you ask for documentation, it will give it to you. You can ask for a list of capabilities and it will give it to you, with descriptions of the interfaces. For a single object, documentation for the object and code for the object may not be stored in the same place (perhaps one is in an html/xml file, while the other is in a cpp file somewhere else on the filesystem, or on a remote CVS host). However, instead of forcing the computer user to carry the burden of conceptually uniting the locations of resources pertaining to a single concept, the computer will know these things. Instead of just being object-centric, the computer will become concept-centric. Integration (CVS access, code documentation, implementation, development tools, runtime introspection and dynamicity, backups, etc.) should eventually reach an ideal and final point. I want that point.
The final computer object framework will be a generic way of accessing objects by interfaces, and the back end that implements them. The objects will be alive and malleable. Ask the computer to make an object accessible by multiple threads, and the object will be decorated (see http://www.dofactory.com/Patterns/PatternDecorator.aspx) with with a synchronization module. The object's interfaces will be implemented by a chain of command (http://www.dofactory.com/Patterns/PatternChain.aspx) that can be dynamically modified to do any necessary locking and unlocking of an object.
The same principle can be applied to caching of objects that access information remotely (eg: via DB or internet or even local disk) -- the accessors will be wrapped with a cache decorator that accesses the remote resource only as needed. Other examples of decorators include security handling (to block unauthorized access), implementing the notifier end of the observer pattern, profiling (with potential for automatic algorithm self-readjustment).
- This object framework will be language neutral, and the best language for the job will always be available. Implementation should be available by interpreted or runtime compilable languages (python, lua, etc), as well as by natively compiled shared libraries (existing DLLs, .so's).
- While the framework offers more dynamic and introspective runtime capabilities, this extra capability should not be required, and the framework should include tools that removes these dynamic capabilities, compiles hardcoded versions, for the sake of speed, memory, and proprietary opacity.
The other main 2 things I want are applications that could benefit from something like the above:
- A framework for a multiplayer internet game
- a free, intelligent, network-transparent object framework.
- ideally should allow for user-created content - submit AI for user-created objects which can be distributed to other clients dynamically. There must be safety of sandboxing, as well as nontrivial permissions on objects and their interfaces.
- ideally transparently allow for different network topologies, such as client/server, server clustering with dynamic load balancing, and grid peer-to-peer architecture potentially with some redundancy for peer security checking.</li
- must be able to interface with C++ libs (for 3D, physics, sound, and low-level network libraries)
- A conceptual framework for building a computer-aware AI
- the AI will eventually understand things about the host computer, such as how the filesystem works, how applications work (perhaps interfacing with KDE's DCOP), how networking works (facilitating adaptive firewall, intrustion detection, etc.) I want to be able to write a sort of AI aid that monitors user tasks and system logs, automates certain kinds tasks that are presently unautomatable, and effectively make a Clippy that is very different and doesn't suck.
- eventually, the AI should be able to aid in application design, and self-repairing apps, code structures, etc.
- I also do freelance research in cognitive science, personality, and emotion, and want a experimental environment that is concept-centric.
Frameworks that have caught my eye so far (May 13, 2004):
- DAF (http://daf.melsib.net - my own thoughts on a minimalistic, language neutral object framework, as described above)
- Io (as a sort of lightweight glue/scripting language for my game)
- Mozart-Oz (distributed object capabilities)
- Slate (early stages of development)
- Smallscript (early stages of development)
- Mica (has same or similar goals I do for the networked game, but this may not be developed to maturity)
- Squeak (toy language? Maybe I can strip it of its GUI, runtime environment and do my own thing)
- Squeak-E (distributed objects with security capabilities of E, whatever that is. Squeak-E is currently only in early discussion stages?)
Summary
Well, those are my ideas. I'm open to comments regarding what options are best for me, how well-suited Slate is (or will be) to my goals, or how crazy/stupid/naive/ignorant my ideas are. One thing I don't need to hear is that these goals are overambitious, because like the Slate devs seem to be, I'm highly determined.
Contact info: my spam email account (that I check every 3-12 days) is jaredthirsk@yahoo.com, and I just joined the Slate mailing list. If you find me on the darksleep MUD or MOO whatever it is, my alias is Sean.
