I've been working hard on the Sleep 2.1 manual. My promise to the world has essentially been finish the code, redo the docs on the language, and then write a short primer on integration. Following those actions Sleep 2.1 will be completed.
One of the challenging aspects of writing this documentation is writing good examples. When writing this documentation I realize I'm not just capturing the syntax and basic use cases within the language. I'm also trying to capture the paradigms and ways of thinking in the language. This is important because it is the difference between an academic example and something people can use.
One example is fork. Fork is Sleep's abstraction for asynchronous computing. I say this because I don't want to call them threads. For the most part, Sleep's forks are completely isolated from each other. Of course they can share explicitly specified variables and then we get into locks and all that ugly mucky muck. But in any case I was trying to capture--how do I write an example of a multi-threaded tcp/ip client app? Something that users can cut and paste and begin using right away.
I learned Java in this cut and paste and begin using right away mentality. (Thanks Mr. David Flanagan for your Java Examples in a Nutshell Book--I'm quoting your name and book from memory, that shows what I really think of you).
Fortunately Sleep has had a strong ally in this type of development. I have a few coworkers and the incredibly, ah, vocal jIRCii user community who use Sleep. There feedback, endless support requests, and hunger for a solution have really driven the project. They have helped me identify holes in my functionality, real problems to solve, and of course what to document.
Case in point with fork. This weekend someone was trying to write a connection bouncer in Sleep. I think he actually is close to finishing it. He keeps adding a lot of stuff to it. But in any case he was trying to wrap his brain around fork and how to do computing in an asynchronous manner.
I managed an example that made it into the Sleep manual. If it weren't for him the technique I documented probably would not have been documented. Meaning ever user with a situation similar to his would be stuck trying to figure something out.
So I'm thankful for the users. They are really helping this come together.
The documentation is almost in a distributable state. So Sleep 2.1 should be coming soon. I will probably be ready to call it official in January 2008.