Hacker News new | past | comments | ask | show | jobs | submit login
Light Table's Numbers, And What's Happening Next (chris-granger.com)
402 points by zachallaun on Apr 16, 2012 | hide | past | web | favorite | 75 comments

Good luck, and stay strong. I think the demo you created was incredibly impressive, and I suspect a lot of people will therefore expect a lot from this product. This is going to sound overly pessimistic, so please forgive me - but I suspect that, as time goes on - and it will, because to me the goals of this project seem huge, and the problems you're attempting to solve seem hard - you'll probably cop a bit of backlash over the time taken, not living up to expectations, etc.

I hope that if that happens, you're able to ignore it and keep working on it anyway. Regardless of whether you accomplish your goals or not, I'll happily be throwing some money into the kickstarter and crossing my fingers for you guys, because the actual idea behind this is awesome.

Thanks I appreciate the support and it's a good reminder :)

I completely agree with you. There's always good and bad to presenting something like this. On the good side it gets people dreaming - it leaves enough to the imagination for it to seem amazing, for the possibilities to be endless. But unfortunately those things cannot map perfectly to reality, at least not all of them. Having worked on VS, I definitely know I can't build an IDE over night, not by myself, not even with 100's of people. And for some that will take the magic out of it initially. The way to combat that, though, is through transparency I think. I will be very open as the project goes on. I want people to know what we're thinking, what we're working on, and why we're doing it. My hope is that we can sustain a dialog as time goes on about how we as a community of creators go about creating things.

Despite the realities though, I will do my absolute best to deliver some of that magic. :)

I wish you the best of luck.

With that said, most of these ideas have been in one demo or another for quite a while. As soon as you leave toy problems behind and try to visualize loops, objects, and deep recursion it's next to impossible to visualize flow and your back to inspecting breakpoints. But, if you want something you could probably implement and get people to use I would suggest something like XSL-FO. It's a pure functional language so you don't need to worry about loops, objects, or changing state just deep recursion. Unlike Lisp, C#, or even Java there is no great IDE's out there and your rarely dealing with multi megabyte's of code. You can even start with XPath, XSL-FO, and then try and get a more complex functional language working.

I wish the best luck; What about creating an emacs plugin initially?

Transparency is a great idea. May I suggest starting off by releasing your intended feature list for the product? That way, with each release, you can cross things off the feature list, and people can see that you're making progress.

Going to disagree that this is a good idea. One of the worst things you can do is release a product "road map." It makes expectations way too specific, and will put you in the position where if you need to alter or change that roadmap you are going to get pre-emptive backlash for work you have not even done yet.

Yeah I don't think I'll release that either, this is far too uncertain of a territory. Instead, I'd rather be much more present focused.

I'm very interested in how the business side will work out. On the one hand, it's very fair to make some money when you make something great (and it funds ongoing creation).

On the other hand, dev tools are expected to be free and it feeds massive adoption (and if not free, devs have the ability reverse engineer e.g. linux and gcc). The common wisdom is that smalltalk got killed by high prices. There are exceptions: MS VS; some editors. Maybe the older, broader the appeal, and closer to the dev, the greater the pressure for free - so that new, specialized, and close-to-customer tools resist commoditization. Light table is new, but general and close to dev.

The Street_Performer_Protocol http://en.wikipedia.org/wiki/Threshold_pledge_system#Street_... fits perfectly with KS. But personally, I love the idea of making something great and getting rewarded in proportion to its greatness (as in product sales), not a fixed reward. An ideal solution seems to be to charge large customers (e.g. over 10 employees? Over 100?), but I've not seen this explicitly attempted... but I guess it's achieved by "enterprise" versions, with extra features, particularly those needed only by large customers... that may be what is being considered with "some plugins may remain closed source". Then one could create a marketplace for plugins, an app store etc.

Even Microsoft Visual Studio isn't that expensive. Microsoft created it's Express Editions partly as a response to the fact that institutions were choosing Linux for introduction to programming, because of the plethora of free tools available. And even before Visual Studio had free versions, Microsoft was rumored to be turning a blind eye towards piracy of Visual Studio, so that programmer who used a (pirated) copy of Visual Studio at home would ask for a (legitimate) copy of it at work.

My gut feeling is that Microsoft has turned a blind eye toward piracy by individuals for many years. Almost everyone I know who began doing system administration during the late 90's learned NT4 by pirating it.

In a way it's a smart way to differentiate customers. Since the pirates also add value to the platform you don't want to lose them, but you also want to extract the money you can from those willing to pay. By demonizing pirates while allowing the pirate channel to exist they are able to do both.

Another similar case: Photoshop.

Which actually became easier to pirate in the later versions

Microsoft have been giving free versions of their professional range to students for several years with the Dreamspark program :) https://www.dreamspark.com

Also MSDN Academic Alliance. Almost every MS product except Office is there for students, for free. That includes Visual Studio, all Windows version starting at 98 (including Server editions), XNA, and much more.

Edit: Now I see that it's probably the same thing. I'll leavy my comment here though, if anyone else was familiar with MSDNAA.

On the mailing list, it's planned as a local server + browser http://groups.google.com/group/light-table/browse_thread/thr... I was thinking a webapp version would be easy to monetize (monthly), but it only makes sense when you have to store data - which I now realize could be the code itself. :) A front-end for developing hosted projects.

It could be sold to amazon AWS, heroku, google apps, IBM/Oracle etc; and perhaps to github, bitbucket, dropbox when they start hosting apps - or start a new dev cloud. (of course, still provide the local server version).

Maybe problems with network latency + javascript performance... but might work for some divisions of labour, on some platforms (e.g. iPad). Network latency is worth it, if the result is faster than a local server could do... and if roundtrip + server was 100-200ms, that feels pretty much instant. If your app is remotely hosted, the main benefit is orthogonal, being convenient access (100% portable dev environment) - so, as JS and networks improve, it becomes more compelling. Test and integration servers can also be remotely hosted - no need to edit the live app. (This approach, like vim-editing remote files, has appealed to me for a long time).

Please please please support parenscript for customization (this means you write a parenscript API that looks a lot like elisp).

Plenty of editors think "emacs bindings" means C-n, C-p, and C-v, and hardcode C-space to something intellisense-ish. And forget about the kill ring or infinite undo.

These are the heart of emacs. If you don't have them, emacs users will never be able to switch.

As far as I understand, the actual editors are going to be codemirror instances. ( http://codemirror.net/ )

If it doesn't have proper support, perhaps you could help add it?

He said javascript customization, right? That makes it sound like something he would add, so I'm lobbying for parenscript as well.

I get that codemirror is the thing to contribute to, I don't have the time right now but hopefully someone will.

I could not switch away from vim for some kind of meager and broken vim-ish interface. Apparently "vim bindings" just means jklhiI$^0/ support, as if that's in any way able to approach an iota of what makes vim great.

Don't even bother with vim key bindings. I have yet to see even half-hearted support for a decent vim like interface on these new web based editors. The fact of it is that being as powerful as vim requires a decade or two of work more than anyone is willing or able to offer. If these people looking for a new editors all the time are not already using vim I doubt they would have the patience it would take to get it up to vim's speed.

I wholeheartedly agree that there is more to Vim than jkhiI$&0... but berating such a fantastic product is very counter productive.

Instead, think of ways (or contribute ways) to improve the VIM plugins to Code Mirror. Even suggesting which other parts of VIM you find so useful would be of more use than berating them for using VIM plugins instead of VIM itself.

Ignoring OP's harshing, it does seem hopeless. There's little incentive. Probably the easiest way is to compile vim direct to javascript (or java), and ignore/hack the OS integration. Unfortunately, improving the plugin seems to have fundamental limits (see the js for the actual bindings http://codemirror.net/keymap/vim.js - there's a few more than I'd expected):

> Because CodeMirror's internal API is quite different from Vim, they are only a loose approximation of actual vim bindings, though. http://codemirror.net/demo/vim.html

From a theoretical point of view - all text editors offer nearly the same feature set, so all features should be available through a different set of keybindings.

In reality, of course, this can be difficult if the editor doesn't offer reasonable support for accessing all of the keybindings through the API.

Still, CodeMirror does seem to offer better support than most.

Could you switch away from vim for the other features that Light Table might have? Your comment makes me think you didn't read or watch the demo posted earlier. The point of vim bindings would be to make you a bit more at home, nothing more. Same with Emacs bindings.

There are of course serious tradeoffs involved with making Light Table an in-browser or webview based editor, but it's definitely not clear cut. I'm sure you could build Light Table as an Emacs mode, a Vim plugin, or an Eclipse plugin, but then it would be tied up with that platform, and people would have to re-implement it (badly) elsewhere. See the poor Java support outside of the big and bloated IDEs like Eclipse.

Furthermore, before you denigrate web based editors like CodeMirror, consider what a crazy idea they are in the first place, and what it takes to build something as good as CodeMirror: http://codemirror.net/doc/internals.html

If I can't use vim, I'm not "at home". I don't even know the bindings of things I do, they're just muscle memory at this point.

20,000 years from now, if we've survived this far, you'll find Pham Nuwen hacking away at some backdoor program in vim.

I am incredibly excited about this.

One thing that I'm curious about, however: it (seems like it) will be a web-based platform. Can anyone comment on whether or not this is an advantage or disadvantage? I imagine a fully functioning offline mode will be available, and I can see chaching things like documentation locally, etc. But there must be a compelling reason that newer editors are not web-based (or maybe the better term would be browser-based).

it'll use a browser for the UI layer, but that's it. So browser-based is a better term I think. No internets needed. In the end, though, even that will probably be abstracted away into a webview or something. The overall distribution story is something I'm kind of curious about myself at this point. Lots of exploring to do there.

Perhaps a tool similar to [Titanium](http://www.appcelerator.com/products/titanium-desktop-applic...) would suit the needs of this project.

Essentially you write your application in standard html/css/js and are then able to distribute OS-specific applications for all major platforms.

Similar to PhoneGap, but I think the results are a bit better with desktop apps :) (especially something as "simple" as a text editor.

You can also just do this with Qt and QtWebKit. Qt5 is supposed to focus on this usage specifically though I haven't tried it.

I'm pretty sure Rstudio uses this approach. The core app is all HTML/Javascript, but then they make a desktop version by putting a thin Qt wrapper around it and adding a few minor things like a relevant menu bar.

That sounds a neat way to still provides a comfortable user experience whilst working on languages not easily embeddable in the browser.

Indeed, especially with PyQt. The problem is that your binaries can easily be huge on Mac/Win.

Well we can imagine choosing a version statically linked or a dynamically linked one when dowloading ? I agree it isn't a really slick solution, but it's a tool for developers it won't hit too hard the entry barrier.

That story did seem to spend an inordinate amount of time on the front page, but I've been noticing that in general there has been slower turnover on the front page. I wonder if there has been an algorithm tweak or if it is due to some change in community behavior.

I notice that to, figured the community was just piling on more to the current top stories. Diversity is a little down, I assume new submissions are still rising, just less being seen.

N=2. I've noticed the slower turnaround as well.

Super excited about this. Will definitely be looking into CodeMirror's vi key binding support and how I can help there.

Can't wait to see alphas and play with the bindings, as well. I would love to get a chance to see if it would be possible to run an out-of-band process to run some of the same stuff for a compiled language that does have a REPL and stuff that produces nice ASTs from code (e.g., Scala or even Java).

I also get the feeling there's going to be some space here to ease things with regards to testing… Not only because you'll be able to see your tests expanded instead of having to step through, but I think there's potential for just running some test code, seeing the output, checking it's right, and then hitting a key combo to codify that into an automated unit test.

Definitely feels like there's so much awesome lying around the corner. Mad props for putting this together and deciding to carry through with it. I'll be keeping an eye out for the Kickstarter.

In terms of out-of-band, it's being designed that way from the ground up so that we can support as many runtimes as you can imagine. Basically if you can create a service that talks over tcp and can handle JSON, you should be able to add support for it to Light Table. I think that might be the coolest part of the platform. :)

I definitely have thoughts on testing and there's a ton of interesting stuff we can do there.

Yeah, the biggest problem that a language like Scala will run into will be that the instantaneity will have to deal with a compiler hit, particularly if you have to hot swap code (where possible!) as you edit it. Still, wouldn't be fun if it wasn't a challenge ;)

> Will definitely be looking into CodeMirror's vi key binding support and how I can help there.

Me too. One thing that might be helpful is looking at Cloud9 editor, which just recently added a "VIM Mode".

Please make a good product and just charge money for it. Why is it a taboo to charge for dev. tools these days?!

It's not taboo - just observe the success of Visual Studio.

I think charging for tools does limit the potential user base of those tools. After all, why pay for an editor when vim is free? The same applies for a lot of development tools.

Another potential reason is that charging for something creates an expectation of quality and support. This attracts certain classes of user, but not everyone wants to provide this expectation. Giving the tool away for free helps absolve the developer of responsibility at a later date.

There's another caveat. Just look at what happened to textmate, it was closed source many of us paid for it. The author decided to rebuild everything and we didn't get any real update for like three or four years. And yet we couldn't do anything about it. And yet it didn't met the community expectations.

Seriously, building a code editor is a massive amount of work, having it open means you'll find someone to help if you don't have a massive company like microsoft behind you.

Frankly TextMate met my expectations just fine and I don't regret paying for it.

> we didn't get any real update for like three or four years

Call me old-fashioned but I can't keep up with updating all my tools every few month. Maybe three four years is a bit too long but it's nice to have some period of stability. Despite not having major updates TextMate remained very popular. It must have gotten many things right from the very first release. I wish there were more products like that.

Well, there are things you can expect from a code editor, like not crashing or getting sluggish because you opened your logs. At least this issue was present when I left Textmate.

Besides that kind of details, Textmate is indeed a very well made product, that go t a lot of things right from the beginning as you said. But it's just sad to see it just "froze" as it is.

Anyway it's not really about an update frenzy, it's basically as it's not an open product but one we paid for, I expect them to polish it over time.

Agree with your comment. To elaborate a little bit:

> After all, why pay for an editor when vim is free?

Why develop a new editor if it's not gonna be better than vim?

Why not open source now? There's clearly a bunch of people that would like to help and some (me included) have more free time than money to offer.

Id like to see a pricing model similar to SublimeText - full functionality with very occasional prompts, in Sublimes case when you save.

Since the prompts are user invoked they're discrete enough to allow an unlicensed SublimeText to function as a main editor without making the user feel nagged, it's inexpensive and with its indie developer engaged in the community & active in improving the editor licensing has a feel good factor attached.

Not to sure if anyone has mentioned this yet. If you run light table as client(browser)/server model, then effectively your sever could run in a cloud and your session would be reachable from any browser no matter where and what computer or smart phone/tablet you are on.

With things like ClojureScript and Meteor, this is very achievable today and a definite game changer. Exiting times we live in.

[edit] Oh and good luck Chris and the team.

What Light Table represents to me is the possibility to easily create domain-specific tools for editing "source code." Create a Clojure DSL for web pages, and render HTML while you edit. Create a Clojure DSL for audio, and render the audio in the browser. Create a Clojure DSL for business users to use to modify business rules, and let them see and interact with their changes right there in the editor. Seamlessly integrated with SVM and your system, the editor becomes more than an editor but a tool for evolving the capabilities of a system by a group of people that include far more than just programmers.

It's long been the dream to have an interface like this to do language oriented programming. Some attempts (JetBrains MPS, Intentional Software) seem to fall into the trap of being too holistic (invent everything from scratch) or too complicated. This is a great way forward since it uses just the right cutting edge tech (ClojureScript) with well understood tech (the browser.)

If it were me, here is how I would look at this project. This shouldn't be an IP/tool play. Make the tool free. What you are doing here is inventing a new way to build software. You want the world to shift to your vision. You want everyone to have it and not be willing to give it up. The posters in this thread lamenting they will have to abandon vi should be forced to look back years from now and laugh at themselves since a purely textual, console-based editor should look downright silly if you pull this off. (Yes, I am a hardcore vim user, but even I can see this is the beginning of a generational shift.)

Build facilities into the tool to let people mold it into an environment everyone in an organization can use to develop software collaboratively and in a domain-driven way. Make it so it will become an integrated part of any software development project. Make it so people can develop and iterate things in a startup-like way 10x faster than they can do now. Make it so the tool helps break down communication barriers that have existed since we started building software.

In the end, if this approach wins, you will be the authority on it. Once this has come together, you will easily make a killing on consulting and building custom domain-specific modules for high paying customers. Use the knowledge you learn from those experiences to improve the general purpose product. Write books on how to develop software this way. Get people to pay for training sessions. Spread the word.

The end game for this is wider in scope than you can probably imagine, if done right. It's not a matter of if but when. This is an important project and you will surely not be the only one trying to solve it. A good way to ensure the next person who works on this is able to overtake you is if theirs is the one that you can get for free.

FWIW, you described a good part of the overall vision I have (we just haven't really talked about it yet). Our goal is to build the platform used to create things and our plans for the business side ensure that anyone who wants to use it will be able to. There's much more than just an IDE here, I wholeheartedly believe that.

In any case, it's going to be a wild ride.. just gotta take it one step at a time :D

Good move.

Could you briefly explain your decision of using CodeMirror instead of Ace editor?

Originally I started using it when I was building a platform to teach coding and it had the best Clojure support :) I remember getting annoyed by ACE's setup, whereas I just dropped CodeMirror in and it worked. The code definitely seemed easier to approach to me too.

We use Ace at work and this weekend I was looking for something else for a weekend project. I happened to pick CodeMirror and got the same results as you. It just worked. Plus, the docs were really well done. +1 for CodeMirror!

I hope that you incorporate some of the ideas Bret Victor has been advocating. He might even be interested in helping directly.

If you're not familiar with him or his work, here's a good start: http://vimeo.com/36579366 http://worrydream.com/#!/KillMath

Light Table was actually heavily inspired by BV's work by his own admission

Javascript and Clojure? Seems like, a'hem, Python support might be of interest to some of us ;)


(...but imagine it's probably just a matter of time.)

depending on how we do on the funding route, python and ruby would be my next choices. JS is the next easiest one to build this for I think (though it's far more difficult than Clojure).

Either way, even if we don't end up building it, I certainly believe it will materialize :)

Do you plan on launching with Clojure support, and then later on add JS support? Since JS is far more difficult, do you worry that the project will morph into a quagmire as you try to fit all of the features in? Do you have a plan to mitigate that risk?

This is what I envisioned for the Scala IDE when I started that project 6 or so years ago. But I got frustrated when it started turning in a Java-Frankenstein monster that was trying to embody all of what I thought was wrong with Java ecosystem. Eclipse just wasn't the right platform, and the Eclipse IDE metaphors are just clunky and outdated. My ScalaLive proposal was perhaps 6 years too early, while I never really figured out to package up my live programming work as well as Bret and Chris have.

I'm glad that this project exists and is being pursued. Its about time!

Someone should take the nice interface ideas and add them on top of Emacs :). I like a lot of parts of the look.

As excited as I am about this concept, I was worried that a Kickstarter-backed project would result in a closed-source deliverable; thankfully it sounds like he's interested in releasing the source at launch. I'll definitely be contributing to this.

I could only imagine how awesome developing .NET apps would be like with Light Table using Project Roslyn or Mono's CSharp compiler-as-a-service.

Congratulations for the awesome response to Light Table. I look forward to using the final version. Good luck going forward!

Can anyone shed light onto the type of machanisms that would go into making a real-time code executor like we see here?

Could this not start as a Sublime text 2 plugin? Much of what I see should be possible there

Entirely unrelated, but I'm really hoping linen goes the way of pinstripes.

Wow this is really cool! I would love to an editor like this for nodejs!

Just in case you didn't know, and for others that don't, nide[1] is a web-based IDE for Node.js. And no, I'm not comparing it to Light Table.

[1] http://github.com/coreh/nide

How could you make closed-source javascript plugins ?

This is going to be really hard to do browser based... Why not harness the power of native?

which native?

anyone here knows if the kickstarter is already online?

I'm sorry, this is off-topic, but why did no one tell me how impressive Code Mirror is. Every limitation I can think of in a browser-based text editor is accommodated in the usage examples. Honestly, I couldn't believe he was going browser-based with this. Will be cool to see.

A comparison chart would be nice. I watched the demo and and couldn't what Light Table does that IntelliJ doesn't do.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact