
Zed: The Next Phase - softmodeling
http://zedapp.org/2014/04/zed-the-next-phase
======
jlongster
It's worth mentioning that Emacs operates on files the exact way you want Zed
to work (on your philosophy page). I'm not trying to be one of those "Emacs
already does this" guys, but you seem to legitimately think it's a new
concept, when most people using Emacs use it like that.

"Like that" being that we don't care if a file is open or closed. If I'm
swapping between 2 files a lot, I will just swap buffers, but usually I just
navigate straight to whatever file I need and open it. If it's already open,
the buffer will come up; otherwise a buffer will be created. ido-mode makes it
trivial to query files/buffers:
[https://www.youtube.com/watch?v=lsgPNVIMkIE](https://www.youtube.com/watch?v=lsgPNVIMkIE)

(edit: inversely, ido-mode actually saves a history of opened files so if you
try to switch to a buffer of a file that isn't open, but you've opened before,
it will transparently open it for you and it feels like it was never closed)

Also, same thing with file creation. I'll just navigate to the file I want to
create and hit enter.

------
electrograv
Thanks for posting, and great work so far! Unfortunately, I encountered a few
deal-breaker issues with Zed. So here are a few criticisms, if this helps you
improve the project (but by no means let this detract from the current success
of a great project!):

1\. IMO you're using the wrong text matching algorithm for file search. This
is pretty critical, considering it's the main interface for opening files.

Zed seems to search for simple text substrings only, whereas both Sublime Text
2 and Xcode look for the longest common subsequence. This is _huge_ , for me
at least; in Xcode or ST2 I can type the first few letters of one of my files,
followed by a few more letters from different words in it, followed by ".cpp"
and it finds the file.

Zed (as is) is completely unusable to me, because my project folder contains
many similarly named files (.h, .cpp) as well as a ton of other source files
from external libraries/modules with similar sub-words with what I'm searching
for which for some reason always show up first and saturate the search
results. With Zed there's no way to narrow down to what I'm looking for
besides typing in the full name of the file. With ST2 or Xcode this is not a
problem due to LCS.

2\. This is not your fault necessarily, but it's a big deal to me: Text
rendering is slow in Zed (and in every other web-technology-based code editor
I've tried, e.g. Light Table).

For example, scrolling is even choppier than Xcode. The primary (if not sole)
reason I moved away from Xcode to ST2 was because Xcode's horribly laggy UI
was driving me crazy.

This is a bit of a personal rant, but we're living in an age with multi-
gigaflop CPUs and multi-terraflop GPUs, yet we have somehow regressed to a
point where scrolling (of all things) is laggy? IMO this is absurd, as an
industry trend in general. For this reason, I generally dislike the trend to
write everything (including local apps) in HTML/CSS/JS. These technologies
really weren't designed to support this sort of complex dynamic UI. While it's
quite impressive what's possible despite this, the stress of forcibly warping
HTML/CSS/JS to accomplish some of these UI feats shows through as horrible
inefficiency.

~~~
Edmond
>This is a bit of a personal rant, but we're living in an age with multi-
gigaflop CPUs and multi-terraflop GPUs, and we have somehow regressed to a
point where scrolling is laggy again? IMO this is absurd, as an industry trend
in general. For this reason, I generally dislike the trend to write everything
(including local apps) in HTML/CSS/JS. These technologies really weren't
designed to support this sort of complex dynamic UI. While it's quite
impressive what's possible despite this, the stress of forcibly warping
HTML/CSS/JS to accomplish some of these UI feats shows through as horrible
inefficiency.

I doubt the issue is simply the use of web technologies...the fact is the more
powerful our computers become the more demand is placed on them. Your web
browser is just one more thing running on your computer, there are a bunch of
other things influencing overall performance. You could replace the entire web
stack of technologies and you would probably end up in the same place
performance-wise.

I envision a future where we have even faster computers but then maybe your OS
would have integrated a bunch of AI that'll bring performance to a crawl :)

~~~
chipotle_coyote
_I doubt the issue is simply the use of web technologies...the fact is the
more powerful our computers become the more demand is placed on them._

It's probably not _simply_ the use of web technologies, but I'm quite sure it
makes a difference. There's a lot of buzz about how slow Github's Atom is
compared to Sublime Text, for instance. And BBEdit -- an old Mac text editor
which often gets ignored these days as an unfashionable relic -- just loaded
up a 24M, 181,000-line MySQL dump and is having no perceptible speed issues
either scrolling the file or letting me insert new text on its first screen,
even with syntax coloring enabled. The same was also true of Vim and Emacs
(despite Emacs kvetching about the file's size when it loaded it).

It's my suspicion that the age of these warhorses may help them here rather
than hurt them: serious editors twenty years ago required serious optimization
work. While I do most of my programming in Sublime Text, there are certain
times BBEdit is just the fastest tool for the job. If I was starting a new
text editor, which I wouldn't, I'd be much more concerned about editing speed
than it appears the developers of the current batch are.

~~~
mikestew
> It's my suspicion that the age of these warhorses may help them here rather
> than hurt them:

Of course it does. Back in the day one couldn't take a megabyte file and say,
"I'll just load it all into memory." When I worked in Visual Studio, it
annoyed me to no end that VS had trouble loading large text files when ancient
FoxPro (another MSFT dev product whose origins are from the 80s) would load
them just fine. FoxPro didn't try to cram the whole thing in memory, just the
parts it needed. I'm guessing vim and Emacs work in a similar manner. Don't
use VS anymore, so I don't know if they ever fixed that or not. Particularly
annoying is that it ever needed to be fixed, rather than being designed
correctly (for which there was plenty of prior art) from the start.

~~~
coolsunglasses
>didn't try to cram the whole thing in memory, just the parts it needed. I'm
guessing vim and Emacs work in a similar manner.

Yes, but with the caveat that it's line based (1 dimensional) not 2
dimensional so a VERY long line can still choke vim and Emacs.

\--- long time primary Emacs, secondary vim user

~~~
mikestew
> it's line based (1 dimensional) not 2 dimensional so a VERY long line can
> still choke vim and Emacs.

Have an upvote because (to quote Johnny Carson) I _did not_ know that.

------
tbirdz
>Can’t some random person fork the project and attempt same thing? Yep. Worse,
they can fork the project, and create a proprietary version and start selling
it.

If you released it under the GPL, then they would not legally be allowed to
make a proprietary version and start selling it. Also, the GPL does not
prevent you from selling your software:
[https://www.gnu.org/philosophy/selling.html](https://www.gnu.org/philosophy/selling.html)

~~~
e12e
Seeing as how this beverages web technologies (although it installs locally
right now), AGPL might be a better choice. As long as he retains copyright,
he'll be free to also sell commercial licenses if that becomes
interesting/viable.

That said, having the legal right to something, and being able to enforce it,
isn't the same thing (just ask Adobe).

~~~
psykovsky
That's only because Adobe isn't in the movies business.

~~~
e12e
Yeah, that's right. Movies aren't subject to illegal downloads. /s

(On a more serious note, while I'm not a supporter of the draconian DRM
schemes that have been enacted into law -- and while the studios make
completely ridiculous claims for damages -- implying that films aren't being
copied in a way that conflicts with their licensing terms is clearly wrong)

------
drdaeman
Sorry for negativity, but is it really a code editor or yet another notepad
clone with syntax highlighting? There are too many of the latter and almost
none of the former.

I believe code editor to be called one must be designed to work with the code
and provide standard facilities to manipulate upon it. The rest is for
particular language support module that'd recognize semantics and do the
transformations.

For example, the very core must have option to bind language module-provided
semantics data to text fragments, so, say, highlighter (a proper one, not a
TextMate-like mess of regexps) would base its work upon knowing not only
"syntax regexp says this is a variable" but "semantic analyzer says this is a
variable `foo`, and it's also used here and there, too (but not there, it's
another scope), if that matters", while remaining generic.

(Edited: minor re-formatting)

~~~
simias
This rant is a bit unfair, by your definition the only true code editors are
big IDEs like Eclipse, Visual Studio or slim for emacs, and then only for a
tiny subset of languages.

Most of us right now are probably writing code in "notepad clones" by your
standards. I'm sure there is room for one more.

That being said, while reading the "Why Zed?" page[1] I kept thinking "emacs
can already do that" all the way.

Well at least kudos for going open source, I wouldn't even consider investing
time learning to use a closed source text editor, it's too important a tool to
depend on the whims of the devs.

[1] [http://zedapp.org/vision](http://zedapp.org/vision)

~~~
borplk

      That being said, while reading the "Why Zed?" page[1] I   kept thinking "emacs can already do that" all the way.
    

IMHO people who think "emacs can already do that" will think that regardless
of what the topic being discussed is.

"Oh here ... I have made a plane that flies"

"emacs can already do that"

classic.

~~~
ertdfgcb
That's because emacs can already do anything, if you're willing to learn how.
Still though, it's not a very useful thing to say.

~~~
simias
That wasn't my point really. Of course emacs lisp is turing complete so yeah,
you could probably pilot an airplaine using an emacs AI, it's still pretty far
fetched though.

On the other hand the features described in the page I linked are mostly
already built into emacs, at most you need to flip a couple customization
switches to get the same idea.

Basically: remove the toolbars, enable ido-mode, use tramp for remote editing.
The splitting thing is built in although you'll need to redefine a couple
functions to get the exact behaviour shown in the gif (nothing very fancy
though).

------
lauriswtf
Congrats on launching, this looks like an interesting project.

Sorry if I missed this from the post, but is there any particular reason why
Zed is tied to Chrome? Are there any technical benefits?

P.S. I am asking because I am currently involved in a project of similar type
- a web based GUI for databases (MySQL, Postgres, MSSQL, Oracle) -
Datazenit[0], but we decided against shipping it as a packaged Chrome app,
because it would narrow potential user base.

[0] - [http://datazenit.com/](http://datazenit.com/)

P.P.S. Just to let you know - link to your twitter account is broken
([https://twitter.com/zed_editor](https://twitter.com/zed_editor)).

~~~
krat0sprakhar
The author mentions the benefits of sticking with chrome -

* Cross platform: Zed runs on any platforms that desktop Chrome runs on (including Chromebooks)

* Installation is easy with just a few clicks

* Upgrades are automatic

* Settings are automatically synchronized between all computers logged into with the same Google account.

* Special “Notes” space is stored in Google Drive and synchronized between computers automatically as well.

Link - [http://zedapp.org/](http://zedapp.org/)

------
iElectric2
I'm using it for a few months after 10 years of Vim.

It's very similar to Vim, with proper defaults and JavaScript as approachable
language compared to vimscript.

I believe the most innovative thing Zed introduces is hackability.
Configuration is basically just another project inside the editor.

Other cool features/defaults are presented on
[http://zedapp.org/features/](http://zedapp.org/features/)

------
Bootvis
I read that you're not sure how you will earn an income but basically, you
will depend on the generosity of your users. If I might try one tip:

Who are you? What drives you? Tell us a bit about yourself on your website. I
think it will help with income.

~~~
6cxs2hd6
Apologies if this is OT, but does anyone have link(s) to a "Making Money From
Open Source for Dummies" guide? The only options I'm aware of:

1\. Donations.

2\. "Open core" or "freemium" model.

3\. Paid books/lectures about it.

4\. Get hired as a consultant to teach, trouble-shoot, and/or customize.

5\. Get hired as an employee to work more on it or something else.

However other than 1, none truly consist of getting paid for the open source
per se. Which maybe works out OK, anyway.

To clarify, this is _not_ a rhetorical question where I'm trying to slag on
open source. I'm already doing a number of open source projects, and enjoy it.
I'm genuinely interested, if I wanted to support myself doing open source,
realistically what are the options? And I genuinely don't fully understand
how.

~~~
smacktoward
There's lots of approaches (as you note), but if I had to boil them down to a
rule of thumb it would be this: _give away functionality, charge for
convenience._

You love our app, but want an MSI installer so you can deploy it on your
network more easily? You can roll your own by checking out our source code
here... _or_ you can pay us $X for this already-made-and-thoroughly-tested
installer.

You love our app, but want to learn more about how it works? You can browse
this repository of 15,000 Doxygen-generated API pages... _or_ you can pay us
$Y for this beautiful book that explains everything in plain English.

You love our app, but want someone who can support it if something goes wrong?
You can spend ten years turning someone on your staff into an expert on it...
_or_ you can pay us $Z for this support contract, and get access to _our_
experts.

This approach can feel counter-intuitive to geeks, because we value
functionality more than convenience, so it feels "wrong" to charge for the
things we see as needless frills. But in general, people put a _lot_ of value
on convenience, and they are more than willing to pay for it if you're willing
to provide it.

Sometimes people try the opposite approach -- charging for functionality.
(i.e. "Try the open source edition of our app, or pay $X for the Premium
Edition and get custom fields!") This rarely works.

~~~
6cxs2hd6
Thanks, that's really helpful advice. I'm going to call this The Dead Kennedys
principle of monetizing open source.

------
bsimpson
On ChromeOS, I got stuck on the very first screen:

I can either enter a Project or a URL to edit. Typing text in either place
does nothing interesting. "Enter" does nothing.

Clicking around, I can't find any way to make a new window. All I want to do
is see your editor and start playing with it. I don't even really want to edit
a file yet. No obvious way to make any of that happen.

The first window is too small. The note about how to edit remotely requires
scrolling, but it isn't obvious that the page needs to be scrolled.

~~~
zef_hemel
You can edit a local project (click "Open Local Folder"), a Dropbox folder
("Open Dropbox Folder") or the built-in Notes, Configuration and Manual
projects. None of those work? Works fine my my Chromebook.

~~~
bsimpson
Even after making the window big enough so I don't have to scroll, this is all
I see:

[http://imgur.com/9WWEFmz](http://imgur.com/9WWEFmz)

------
ebbv
I really want to suggest rewriting it in native code. A web based editor is a
fine side project but if you want it to be a business people pay for, it needs
to have native performance.

It's popular to claim that the web is near native performance, but honestly,
it's a load of horseshit. Web performance is better than it's ever been but it
still has a long way to go before it's anywhere near native.

~~~
chr1
But then he will spend a huge amount of time replicating functionality that
browsers provide, functionality which is hard to implement and hard to
maintain. Also will loose advantage of being easy to extend.

But on what kind of computer did you test this? On my windows desktop it is as
fast as sublime. On mac scrolling isn't smooth, but from chrome timeline i see
that it is choppy because it doesn't handle scroll events correctly, not
because of performance.

------
Edmond
I hope it works out for you.

I'll be hesitant about the productivity pitch though...a lot of developers
don't truly care about productivity in the way that one would expect. Often
what opinionated developers want is something that conforms to their opinions,
productivity just becomes a convenient excuse for the choice of a particular
tool.

At least as someone who's spent a lot of time pitching productivity to
developers I have become skeptical that developers value it as much as one
would ordinarily expect. I am the developer of HiveMind (crudzilla.com), a web
app platform that literally allows you to get a whole bunch of things done
with writing little to no code. I find this pitch simply doesn't fly with a
lot of developers :)

The open source pitch for instance is something I am sure will get you some
followers, though how big a following is not certain.

Welcome aboard the entrepreneurial train!

~~~
_pmf_
> a lot of developers don't truly care about productivity in the way that one
> would expect

A lot of developers are also mature enough not to think that the choice of the
developing environment matters (above a reasonable base level, of course).

All serious environments are configurable and programmable. It's a plain
matter of taste what you use.

~~~
Edmond
I agree that productivity is more than dev environments.

However productivity to me means something very simple, how quickly can you go
from "I want x" to having a functional x.

The more a tool is helpful in this regard the more productive it makes me.

Maybe someone should start a service that actually measures various dev
products in terms of how quickly they allow you to complete various dev tasks.

For instance most web apps are just CRUD apps, it should be possible to
benchmark various frameworks/tool to see how quickly they facilitate
development....it should make for an exciting exercise :)

------
213424355352255
Biggest issues with Zed:

1) Chrome extension (I understand the stand-alone application is coming)

2) Vim-style modality missing (exact keybinding replication is not necessary,
just the principle of remaining on the home row)

3) Excess editor chrome - the top of the editor takes up 2 lines when it could
be compacted to 1

~~~
wazoox
Yes, I'm a Firefox user, and when I install extensions I don't expect being
asked to provide a login and password. I'm definitely NOT comfortable with
Google knowing what extensions I use, when I use them, etc. A nice reminder of
one of the reasons I can't seriously consider Chrome as my main browser.

------
Zelphyr
Zed highlights the always forgotten necessity of documentation. The app looks
great. Has a few quirks but seems otherwise stable and I LOVE being able to
edit remote files with a local editor.

But I don't care how good your app is; if you didn't write documentation then
you're just not done. And don't go giving me that adage "its open source!
contribute the docs yourself." The fact is, its YOUR project that YOU wrote
and it is simply incomplete with little/poor documentation.

So, to the Zed author: before adding anymore features please take some time
and write good quality docs. The community will thank you.

------
pekk
There are too many editors named Zed, please get a different name to reduce
the confusion (and it can't be Xed)

------
zimbatm
Yes ! I get excited because the author lists "Reduce cognitive load" at the
editor's first goal. It's not an absolute and easy to measure metric but is
worth having having as a first class citizen. Plus he already proves that he's
moving in that direction by removing the concept of open/closed files.

For funding: how hard would it be to create a "shared hire" subscription model
where participants get a vote into what the author is doing ?

------
crashandburn4
Hi, first off, love that you've decided to keep it open source (lack of open-
source code is what pushed me away from sublime into the arms of my current
mistress, emacs), keep up the good work!

Can I digress into a feature suggestion? This is no small one and I don't
really know where it lies on a feasibility scale. One thing I'd really like
would be the ability to turn whatever text-box I'm writing in into a frame of
my current editor (I currently use edit-with-emacs). I looked into writing a
chrome-extension (which is the only way I can think of to accomplish it) with
ACE editor to do this but I didn't have enough time.

My thoughts are, since you use a web based editor, you can use javascript to
replace the input box with a resized frame of your editor, the next
requirement is importing your personal user settings from your chrome packaged
app into the frame to have it working there (I currently don't know how you'd
accomplish this, maybe some integration with google drive which you already
have for your notes?).

The main reason I think this would be a useful feature is vim keybindings, I
use them for everything and feel less productive editing text without them.
Being able to integrate the IDE that I use and am used to into every text box
ubiquitously on the web seems like a huge win to me.

Sorry about the digression, it's just I liked the sound of your application
and wanted to share the one thing I've been missing online (which is a web-
based editor where it's extensible, and can be used on any site, I do realise
that there is a big gap between your project and my feature suggestion, just
wanted to make it.)

~~~
dangoor
We actually talked about that feature a good bit when working on Bespin (in
2009). I haven't used it in years, but you may find this bookmarklet helpful:

[http://ajaxorg.github.io/ace/build/textarea/editor.html](http://ajaxorg.github.io/ace/build/textarea/editor.html)

------
rcarmo
Interesting, but needs a few tweaks:

\- I simply cannot resize the windows on a Mac using the Accessibility API
(I'm using Moom to tile my windows via keyboard bindings, and Zed is invisible
to it) \- Needs a few more docs on how to set up a theme (I tried three times
before I managed to set Solarized on) \- As much as it may seem counter its
philosophy, I need vim bindings :)

And yes, it's a tad slow. So is LightTable, which is why I am still using vim
inside a terminal...

------
tsewlliw
> I’m making Zed my day-time job

I'm super excited for you! Passion & Dedication! Bravo

------
bashcoder
Much success and wisdom to you in your efforts - love the courage, and your
eagerness to take feedback.

As to the app, my recommendation is to avoid putting .zedstate files inside
the project directories themselves. Instead, keep them in a ~/.zed/ directory.
Keeps folks from having to make special .gitignore commits for all of their
projects.

------
ishansharma
FYI, BitDefender shows site as infected:
[http://trafficlight.bitdefender.com/info?url=http%3A//zedapp...](http://trafficlight.bitdefender.com/info?url=http%3A//zedapp.org/2014/04/zed-
the-next-phase&language=en_US)

Might want to check it out, I got a bit red alert before I could visit the
page.

------
habosa
Thanks for making this a Chrome App! This will fill a big gap for me on my
Chromebook, especially the ability to edit Dropbox files. You should add
Google Drive support as well if possible, since you're already in the Chrome
ecosystem.

------
agumonkey
I like Zed author's choices. I don't think there's anything new in them per
se, but a different combination of small existing principles may breed an
interesting culture. Good luck.

------
tsax
At first glance, it appeared to be a Zed Shaw thing to me.

~~~
userbinator
I'm glad to not be the only one who thought "he's writing an editor now?"

------
beat
I'll give this a try. I've been knocking around looking for a new OSX editor,
and haven't been completely happy with any of them. Current editor-of-choice
is Light Table, but I'm not in love with it.

It's really interesting to try all these new, modern editors and see the
subtle tradeoffs the creators made.

------
p4bl0
Do you have plan on making the Zed server described in
[http://zedapp.org/features/edit-remote-
files/](http://zedapp.org/features/edit-remote-files/) to allow concurrent
edit of the same file by different clients to enable collaborative work?

------
thetwentyone
I would love to use a chromebook as my main development machine, but the main
thing is that I would like to be able to use Git offline. Has anybody moved to
a chromebook as their main machine and been able to use version control while
not connected to the internet?

~~~
6cxs2hd6
One option is to put the Chromebook in dev mode and use Crouton[^1] to install
Ubuntu as a chroot. It's easy to do and works well. You can use ChromeOS as
usual side by side.

[1]:
[https://github.com/dnschneid/crouton](https://github.com/dnschneid/crouton)

------
MetaCosm
Reading some of the ideas made me update my .vimrc a bit. The point that
buffers versus files is mostly useless now is on point. The rest of the points
about minimal UI I already use. Create files same way you find them, sure!

------
gcb0
I can't avoid thinking it is a sweet attack vector for being a browser
extension... I would probably use it if i have to edit on a chromebook, but
then again, i prefer to avoid touching chromebooks even with a 10ft pole.

------
Datsundere
He should also take donations, not just letting people buy the software.

~~~
drachenstern
[https://www.gittip.com/zefhemel/](https://www.gittip.com/zefhemel/)

------
spacesword
You say: "Worse, they can fork the project, and create a proprietary version
and start selling it"

So why not release the source code under GPL or even MPL or EPL?

------
AbhishekBiswal
It's nice, simple, usable. But whenever I maximize the app window, it just
goes fullscreen. Is it supposed to be like that? Or is it a bug?

------
quchen
Does "Chrome packed" mean I need to have Chrome installed to run it? Does it
run in the browser? Do certain libs suffice to run it?

~~~
zef_hemel
Right now you need Chrome to install it, the standalone version I mention will
embed the parts of Chrome in the binary.

------
badloginagain
I would like the ability to highlight all instances of a highlighted word,
like in Notepad++

~~~
chr1
Yeah this is the most important feature in editor. But did you try zed? it
already has this feature.

------
pyrrhotech
I believe his math forgets that we pay 40+% taxes out here in SV :)

Nice job all around. Will check it out

------
sciguy77
Can someone give me their opinion of Zed vs Sublime? I'm curious.

------
baby
node-webkit is amazing, but is it really suited for an IDE? I don't see how
you could launch a node-webkit application as fast as Sublime Text for
example.

------
Dorian-Marie
Amazing, that really close to what I thought Atom was going to be, "just" a
webapp.

------
Dewie
Mac OS X seems to be incredibly widely used by programmers now. Because every
time I see a screen shot to illustrate some GUI, it was taken on a Mac. :)

------
zz1
> Zed currently is only available as a Chrome packaged app

Sorry: this is not the kind of OSS that I want to support. Best of luck,
though.

~~~
SlashmanX
Next paragraph:

> The stand-alone version will be built on top of node-webkit and be available
> for Mac, Windows and Linux. Once the initial work there is done, both
> version should continue working from the same code base, so I should be able
> to support two versions (Chrome App and standalone) without much effort.

------
guelo
I wonder if this guy's success so far is based on Zed Shaw's tech fame. There
should be a trademark on tech personalities.

