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.
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. :)
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.
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.
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).
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.
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.
> 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
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
20,000 years from now, if we've survived this far, you'll find Pham Nuwen hacking away at some backdoor program in vim.
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.
I definitely have thoughts on testing and there's a ton of interesting stuff we can do there.
Me too. One thing that might be helpful is looking at Cloud9 editor, which just recently added a "VIM Mode".
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.
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.
> 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?
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.
If it doesn't have proper support, perhaps you could help add it?
I get that codemirror is the thing to contribute to, I don't have the time right now but hopefully someone will.
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).
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.
Could you briefly explain your decision of using CodeMirror instead of Ace editor?
http://news.ycombinator.com/item?id=3746692
(...but imagine it's probably just a matter of time.)
Either way, even if we don't end up building it, I certainly believe it will materialize :)
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.
In any case, it's going to be a wild ride.. just gotta take it one step at a time :D
If you're not familiar with him or his work, here's a good start: http://vimeo.com/36579366 http://worrydream.com/#!/KillMath
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.
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.
I'm glad that this project exists and is being pursued. Its about time!