If we hit $300k, Python will be the third language to be supported out of the gate.
RE: Open source / FAQ, scroll to the bottom.
Here's a much higher quality video: https://vimeo.com/40281991
Despite the dramatic shift toward simplification in software interfaces, the world of development tools continues to shrink our workspace with feature after feature in every release. Even with all of these things at our disposal, we're stuck in a world of files and forced organization - why are we still looking all over the place for the things we need when we're coding? Why is everything just static text?
Bret Victor hinted at the idea that we can do much better than we are now - we can provide instant feedback, we can show you how your changes affect a system.
We can do better, and to that end, light table is the redefinition of how we develop.
Light Table is based on a very simple idea: we need a real work surface to code on, not just an editor and a project explorer. We need to be able to move things around, keep clutter down, and bring information to the foreground in the places we need it most. Here's what the default mode looks like:
Light table is based on a few guiding principles:
- You should never have to look for documentation
- Files are not the best representation of code, just a convenient serialization.
- Editors can be anywhere and show you anything - not just text.
- Trying is encouraged - changes produce instantaneous results
- We can shine some light on related bits of code
Let's take a look at how these things manifest themselves in Light Table.
When you're looking at new code it's extremely valuable to be able to quickly see documentation left behind by the author. Normally to do so you'd have to navigate to the definition of the function, but lightable ghosts this information in to the side. Want to know what partial does? Just put your cursor on top of it. This makes sure you never have to worry about forgetting things like argument order ever again.
We work with new code all the time and it's easy to forget what that function that adds a link on to a page is - we should be able to search all our documentation in place to quickly see what it is. Don't remember what was in the noir.core namespace? It's one ctrl-f away.
This is especially handy for finding functions you may not even know exist and seeing their docs right there. No need to look at some other generated documentation.
In Inventing on Principle, Bret showed us that we could live-edit games and write binary search in an editor that is constantly evaluating and showing you what's going on. The lispers among us are used to using the REPL to have an environment where we can try things out. But we can do better - we can do it in place and instantaneously. For example here I type the code (+ 3 4) and we immediately see that it evaluates to 7 - no ctrl-enter or anything else.
Light Table takes this idea as far as it can and doesn't just show you variables to the side, but actually shows you how the code is filled in. This lets you see how values flow through arbitrarily complex groups of functions.
This level of real-time evaluation and visualization basically creates a real-time debugger, allowing you to quickly try various inputs and watch it flow through your code. There's no faster way to catch bugs than to watch your program work.
We built drafting tables for a reason
Towards the end of my time on the Visual Studio team, I came to the conclusion that windows aren't a good abstraction for what we do. Other engineers have large tables where they can scatter drawings, tools, and other information around. A drafting table is a much better abstraction for us. We shouldn't need to limit ourselves to a world where the smallest moveable unit is a file - our code has much more complex interactions that we can better see when we can organize things conceptually.
We saw an example of this with Code Bubbles, but it doesn't take it far enough - why can't we embed a running game on our work surface? Then we can interrogate it, ask it questions and have our environment answer them for us.
Code with a little illumination
There's no reason our tools can't help us understand how things are organized in our programs. In light mode, Light Table lets you see what functions are used inside of the one you're currently working on, not just by highlighting ones in your code, but by also showing you their code to the side.
We shouldn't have to constantly navigate back and forth to see how the various bits of our code work with one another.
Finally, all of this culminates in the ability to see not just how things I type into a scratch editor evaluate, but how values flow through our entire codebase. Here I find a bug where I wasn't passing x correctly. I type (greetings ["chris"]) and immediately see all the values filled in not just for the current function but all the functions that it uses as well.
What languages will it support?
Will it be open source?
I'm a firm believer in open source software and open source technologies. I can guarantee you that Light Table will be built on top of the technologies that are freely available to us today. As such, I believe it only fair that the core of Light Table be open sourced once it is launched. At some level, this is an experiment in how open source and business can mix - it will be educational for us all.
What's a license then?
In order to download packaged distributions, you'll need a license. Preliminarily, we're thinking licenses will be based on a "pay what you can/what you believe it is worth" model for individuals. This gives everyone access to the tools to help shape our future, but also helps us stick around to continue making the platform awesome. We think what we build will be worth at least $50, and so that's what we've used for our rewards.
While I can put together a prototype on my own, I certainly can't build an entire IDE in any reasonable amount of time by myself. The more money we get, the larger the team I can put together to turn this thing into a reality. The 200k, after taxes and rewards, will help us at least assemble a small team and keep us clothed, fed and housed.
Another thing to keep in mind is that the rewards shouldn't be viewed as a way to "buy" Light Table. Instead they are a way for you to help make the project a reality. I will definitely be needing help from people to build the project and without your support and donations, there isn't really a way for us to make that happen.
How long will it take?
Does more funding mean more stuff?
Absolutely! I can hire a bigger and more diverse team so that we can add support for more languages and potentially even cooler things than I've shown in the video. We'll have to think more about what those tiers might be.
Is it a standalone app?
Yes. The fact that there's an instance of webkit as the UI layer is completely an implementation detail. It will be packaged like a normal app and it will run locally just like any other editor you're used to. This means that it can run on virtually any platform and will support the big three (linux/mac/windows) out of the gate.
Can I script/extend it?
What about key bindings?
I'm a VIM guy myself, but since we'll be using the awesome CodeMirror editor, this is something that is easily adapted. If you're looking for a way to contribute, help improve CodeMirror and its emacs/vim plugins!
How can I help in the meantime?
Like I said above, help improve CodeMirror. The better that editor is, the better all editors on the internet can be! Past that, help us spread the word. The more money we get the more people I can involve in the project, the more languages we can support, and the more powerful we can make the entire platform. There's tremendous potential that we haven't even scratched the surface of yet!
And why should we believe you can deliver?
I've been programming professionally for 8 years, during which I've built websites large and small (puma.com, newbalance.com, etc), helped design the future of Visual Studio, and released numerous open source libraries and frameworks. While at Microsoft I was the Program Manager for the C# and VB IDE where I spent countless hours behind a one way mirror learning how people develop things. Since then I've steeped myself in the world of startups and OSS. I worked with the guys at ReadyForZero to build readyforzero.com, created the Noir web framework, built the SQL abstraction layer Korma, and released a host of ClojureScript libraries to make client side development a breeze - many of which are now featured in the canonical books for Clojure. Even more recently, I built Bret Victor's live game editor after watching his inspiring "Inventing on Principle" talk. I have a history of building useful software and a hunger for making developers more efficient, as well as experience leading and shaping the the future of a billion dollar product.
Why aren't t-shirts included for all rewards?
I've heard nothing but horror stories about the logistics of trying to deal with a mass amount of physical products to distribute. Dealing with that would take away valuable time and resources from the real reason we're here; to build Light Table. :)
- (45 days)