6 ms·
"Text editors should take a lesson from video games."
- silentbicycle 18y agoEmacs already does something like this, albeit to a much lesser extent: Some useful commands, such as set-goal-column (C-x C-n) or narrow-to-region (C-x n n) are disabled by default and will ask if you actually intended to use them - otherwise, bumping C-x C-n would be really confusing, for example. (It makes the cursor jump to a specific column whenever you move up/down a line.) Of course, its interface could be better structured for gradual learning - while the documentation is certainly there (info pages, C-h t), there's a lot to learn upfront. Advanced features for difficult stuff shouldn't get in the way of basic tasks.
- defunkt 18y agoPart of the idea behind this post is that the keys (such as C-x C-n) aren't even bound - that way describe-bindings and friends are kept relatively spartan until the features (power-ups?) are unlocked. As it is, the help functions are pretty intimidating with the amount of information available to you. The Emacs tutorial starts this way, too. "Here's how you move a letter. Here's how you move a word. Here's how you move a page." It would be great (but probably too much to ask) for the same instructional style to continue through more advanced usage.
- mechanical_fish 18y agoThe problem is: when do you unlock C-x C-n? I am sad to admit that I still never remember that set-goal-column exists. So the right time to unlock it for me seems to be "about ten years into the emacs experience". OTOH, I've been using the rectangle commands (e.g. rectangle-open, rectangle-delete) since nearly the beginning. I like them and often find them handy. So for me the right time to unlock rectangles is "on the third week". And so it goes. Everybody's use case is different. Everybody explores a different subset first. Everyone's idea of the most important emacs feature is different. This is quite unlike a game. One major reason that games use the gradual-unlocking strategy is to keep you interested in following their linear plot. But, after the first few days, emacs doesn't have a linear plot, and we probably don't really want it to.
- defunkt 18y agoBut don't you agree there are probably basic, useful editing commands you missed along the way?
- mechanical_fish 18y agoSure. I just don't think that disabling all the other commands is necessarily going to help me find them. And I think that, while a walkthrough is a good idea, a video-game-style walkthrough is more trouble to create than it's worth. I could be wrong, and anyone is welcome to build such a thing. But I'd recommend more screencasts first -- I sense that there's more bang for the buck there.
- defunkt 18y agoYeah, I think you're right about the screencasts. (Still, the idea of a little 'ding' when you level up and unlock new commands excites the former Diablo-addict in me.)
- silentbicycle 18y agoAlso, what is basic will vary from user to user. Grouping functionality by task in a way that would be simple to navigate would probably be a good start, though elisp doesn't really have a same namespacing system anyway. (Does XEmacs? I know it has a packaging system, but I use GNU Emacs.) Something like adding an alist or hash-table of symbols for task descriptions -> relevant functions, such as 'file, 'rectangle, 'email, 'basic wouldn't be too hard to retrofit onto the existing system. A bunch of redundancy wouldn't hurt, and a navigation system as in iswitchb or anything would probably work. I'm busy with projects ATM, but I'd be interested in doing this...and aside from tagging existing stuff, it would be fairly quick. It could potentially be a newbie-friendlier version of apropos, because part of the problem with apropos is that you have to know general terminology in the first place. If this already exists and I don't know about it...that might just prove my point.
- mechanical_fish 18y ago
- almost 18y agoThat wouldn't by such a great idea in my opinion, it's not such an advanced thing in Emacs to be rebinding keys, it's almost essential for normal use in fact. When you're binding your own keys you need to know what that key already does so you can decide if it's something you use now or might use in the future. If it is then you probably don't want to use that key. It would be a pretty bad situation to get to a "you've unlocked new feature X"! But then find that the key for new feature X is the same one you're fingers know to do something else. Not that you couldn't just rebind it to something else but that would just lead to a huge amount of differences from the norm with no good reason (on top of the the already huge amount of differences from the norm for a good reason that most peoples Emacs already carry around).
- mechanical_fish 18y agoI just don't think there's a market for yet another Simplified Emacs. Isn't that what jove and joe and nano are for? Isn't that what every other editor on the market is for? The problem with learning emacs is that there are two phases. There's the stuff that you have to know or you can't do much of anything. Some of that is inevitably complicated, because it's slightly different from anything that a Mac or Windows user has seen before -- keyboard navigation, multiple modifier keys that can be used consecutively, keymaps and keybindings, major and minor modes, kill-and-yank instead of cut-and-paste, buffers, Emacs "windows" versus OS "windows", panes, prefix arguments). The idea of having a gradual reveal of these features is a good one. But isn't that called the "emacs tutorial" and hasn't it been built into the editor for twenty years? ("C-h t"). Other people have argued that some of these features should be altered or compromised or disabled for new users -- it has been tried many times. I'm of the camp that hates this: You shouldn't screw up the carefully-designed semantics of emacs by installing Mac-style copy-and-paste. If you want to just visit the emacs world but aren't yet prepared to live there you should just go use TextMate or something in the meantime. It's not as if there are no alternatives. The other, much larger portion of the learning curve is all the nonessential but incredibly powerful stuff that emacs can do: macros, customization, Dired-mode, shell-mode, hippie-expand, dabbrev, yasnippet, magit, Lisp interactive mode, gnus, org-mode, ido, Icicles, Zippy the Pinhead, Towers of Hanoi, blah blah blah. But it would take freaking forever to design a video-game-style walkthrough of all of that stuff, and the result would take forever to play through, and it would bore a lot of people because everyone's favorite 10% of the emacs universe is different. I do think the emacs world would benefit from a lot more screencasts, but I'm not sure that going beyond that to game design is worth the trouble.
- silentbicycle 18y agoUnless it's radically different. There's a lot of cruft in Emacs (I mean, it has enough mass to pull things into orbit...), but little of that has anything to do with what makes Emacs fundamentally powerful: it's an emulated Lisp machine. I know I have a fierce minimalist streak, but I wonder what could be done with a new Emacs with a clean break - all of the mini-Emacsen I've seen (e.g. mg) have preserved the default keybindings (C-x C-f, C-n, etc.) but dropped the core extensibility. Perhaps the reverse would be more fruitful? We haven't reached a dead end for editor (or interface!) innovation yet - look at ACME (http://doc.cat-v.org/plan_9/4th_edition/papers/acme/ http://doc.cat-v.org/plan_9/4th_edition/papers/acme/), for example. I don't like it (it's too mouse-centric for my taste), but it has quite a few interesting ideas, as does plan9. Probably, Emacs will absorb most interesting features from other editors instead ("worse is better" and all that), but good may come of questioning its assumptions. I'm just trying to start some interesting discussion. Slow news because of the holidays, and all.
- foulmouthboy 18y agoAny complex system that is useful when only provided the most basic functionality could "take a lesson from video games". It's essentially building the learning curve of the system into the functionality. It's really not unlike HN's system of disabling downvoting until certain karma is reached. IT professionals I've worked with do this kind of stuff all the time to keep employees from breaking stuff until it's shown that the employees can handle the added functionality.
- teej 18y agoProgressive learning for apps in general is definitely an improvement. That being said, I don't agree that roping off functionaltiy is the best way for advanced text editors to lower the learning curve. Contextual hints are a better way to introduce shortcuts for those sort of apps. I also disagree that HN's downvoting feature is an example of progressive learning. It's more about controlling trolls and setting expectations in the community. You have to earn your keep before you can negatively affect change. It's a feature of the meritocracy, not of the usability.
- foulmouthboy 18y agoI agree with you that the downvoting is a meritocracy, but that's my point. A user has to earn the right to use that particular function. The difference in learning how a piece of functionality is used and why or in when it should be used is two sides of the same coin.
- andreyf 18y agoA user has to earn the right to use that particular function Not to detract from the discussion, but this isn't an actual feature on YC. AFAIK, nobody can down-vote (although editors can [dead]).
- arockwell 18y agoYou have to reach a certain karma score to be able to downvote individual comments. I can't remember what the score is, but its fairly low.
- russell 18y agoA couple of decades ago, a couple of us wrote a word processor. We thought a lot about the issues of novices and usability and came to the conclusion that users are novices for only a short time and spend most of their time as intermediates. True power users are few. So basic operations should be intuitive even if not strictly consistent. Everything else should be easily discoverable. Really esoteric things could be left to the manual, but still discoverable. A novice friendly interface should not impede an experienced user, and there should not be experience based modes. You don't see much of these days. MS Word is an example of a crappy interface. Some non-esoteric functions are hidden away in non-discoverable corners and it does magical things as a default. Eclipse is another program with a crappy interface, because of different modes and views. I have finally accommodated my self because it eases the intense pain of Java programming, but on the whole I would rather use UltraEdit. Of course none of this applies to emacs users. They are are a secret society unto, themselves, kind of like the Masons.
- silentbicycle 18y ago> Of course none of this applies to emacs users. They are are a secret society unto, themselves, kind of like the Masons. Dude. Using Emacs really isn't that hard, and mystifying it doesn't do anybody any favors. (I can understand if it's not your cup of tea, though.) It just does a bad job of "creating the illusion of simplicity" (as Grady Booch once put it).
- arockwell 18y agoI love emacs, but it is anything but inuitive. None of its features are discoverable and to learn how to use it you have to read a bunch of info pages.
- pivo 18y agoUm.. most of Emacs' features are discoverable: M-x describe-bindings - List of all keybindings for the current mode M-x describe-mode - Information about the current major mode M-x apropos - Search for info on subject Emacs is the self describing editor!
- ken 18y agoMirror's Edge (the only game in recent memory that looked interesting to me) seems to brag that it doesn't have you "unlock" features as you go along -- your character can always do everything, but you seem to gain skills simply because you come across geometry that allows it. They liken this to Prince of Persia, which I have not played but apparently was similar. Many other classic games (and most of my favorites) follow the same pattern. I do not think Tetris or Pac-Man would be better if you "unlocked" features on higher levels. I do wish my text editor was better, but I want to make programming more like other successful cooperative creative activities. Maybe a Brooks surgical team, or an orchestra, would be more appropriate inspiration. Part of me is sad that our craft seems to be losing its "take 10 years to really learn your tools". Just because "Rock Band" is a hit doesn't mean the Seattle Symphony is struggling to find musicians.
- GrandMasterBirt 18y agoWhen you get to the last boss of a video game you dont stop and think: "What was that command that was used to whip out my stape gun so I can staple his tentacles to the wall since I havent used that gun since level 1?" Then go though 10 manuals, google, and a buch of other crap and find out the command was: ^x+' obvious right? Just like copy-paste in vim.
- KevBurnsJr 18y agoMicrosoft did this with the Paperclip in Microsoft Word. Progressive disclosure works well in computer games, which are relatively linear. Shortcuts in text editors are just that - shortcuts. Perhaps it might be more appropriate to ambiently detect when someone is going the long way about a task, and recommend a shorter route. Ex sequence: End, Shift + Home, Del Recommends: Ctrl + Shift + Del (Scintilla line delete shortcut)
- jmtame 18y agoI think the next killer apps will consist of software that is gradually opened up as the user becomes more familiar with it. You can take this approach with anything, but I love the fact that the writer referenced to video games. Heck, there is a LOT from video games we can learn like a point system. If you want a great example, look at www.thesixtyone.com (I am not behind that, but I am familiar with who created it, former guys who worked at Electronic Arts). You can make the most complex software work for the simplest every day person if you open it up gradually. Why do I have all of the crap that currently exists in Microsoft Word if I don't even need it? Arguably, this is why there is so much hype around products such as Basecamp that are a world simpler than the current products that exist. We're trying to build 1 product to accomodate 100% of its users.
- thwarted 18y agoUnfortunately, the goals of a video game are not similar to the goals of learning to use and using an editor. The only thing you gain from not having all tools immediately available at your disposal/discoverable is frustration because you're still in the editor and not done editing. Game playing is a task unto itself, editing is a means to an end.
- 12ren 18y agoAn editor is more like a "toy" than a "game" (http://news.ycombinator.com/item?id=407816 http://news.ycombinator.com/item?id=407816), because it lacks goals. This “toy” should be the core mechanic of the game minus any goals or decisions. There is no win or lose state, just a fun thing to play with. I liked ken's comment about Mirror's Edge not unlocking abilities, but you can't use them til you encounter the appropriate geometry in the environment (or I think, maybe you could use them before, but you didn't need to, as there were simpler more obvious ways to complete the task using abilities that you already knew about). For example: movement in an editor. The cursor keys will allow you to do anything; but the word-movement keys can often do what you need more efficiently. Then, in vim (using it as an example because I know it), you can search to the right using "f<somechar>", and there's also F, t, T, ; and ,. Interestingly, I've only really started to use the latter ones after years, because I'm having a touch of RSI, and I have a need for fewer keystrokes. One could convert vim (for example) from a toy into a game by adding goals. These goals would have progressively greater difficulty such that they need the more sophisticated controls to accomplish them. Having a need for something gives you a motivation for learning it; but it also makes it cognitively easier to learn. When you have a gap or lack in your mind crying out for a solution, acquiring the solution that fits that gap makes you feel "ah, that's better!". This makes it more memorable; and creates a strong link from the problem to the solution, making the solution accessible to you the next time you need it - making it useful to you, in practice.
- KevBurnsJr 18y agoToy vs Game, an interesting distinction in this context.