Hearing a disturbance, the master programmer went into the novice's cubicle.
"Curse these personal computers!" cried the novice in anger, "To make them do anything I must use three or even four editing programs. Sometimes I get so confused that I erase entire files. This is truly intolerable!"
The master programmer stared at the novice. "And what would you do to remedy this state of affairs?" he asked.
The novice thought for a moment. "I will design a new editing program," he said, "a program that will replace all these others."
Suddenly the master struck the novice on the side of his head. It was not a heavy blow, but the novice was nonetheless surprised. "What did you do that for?" exclaimed the novice.
"I have no wish to learn another editing program," said the master.
> Sometimes I get so confused that I erase entire files
OT, but just this week my wife did something that really got me thinking about how far computers haven't come in terms of usability.
I heard her say "O crap" from behind her macbook, and out of habit I came to assist.
For some reason unknown to both of us, she had pasted the text of an email into a document called "thesis.docx", and then saved it.
The text was completely unrelated to "thesis.docx", which of course was not backed up.
Now, I love my wife deeply. And she is no fool. On the contrary, she is a graduate student.
Moreover, I completely understand how something like this can happen. We have two small children, and it was the end of the day. It is just too much to expect of the human mind that one should not say something one doesn't mean.
I felt guilty on behalf of my profession that this was the best we had to offer. Microsoft word on a macbook, and your penultimate version of a file is not backed up. It truly is intolerable.
So, while I have had some of my greatest highs using emacs macros, I somehow feel that the brilliant tooling made by developers for developers never quite percolates into userland.
Sometimes I am boiling a stew, and while I am preparing another dish on the side, for some unknown reason I put the raw eggs on the stew instead of the fry pan.
Pans have been there for centuries, and there is nothing preventing me from throwing stuff in the wrong place, nor undo the eggs in the stew. It's so intolerable, and I feel so ashamed and guilty on behalf of all the pan makers.
Not. We are in a field where we can prevent a lot more stuff to happen than in the real world (and the real world is soooo broken...). We should try our best to make the state of usability and fool-proofness advance as much as we can, and surely there must already be something that would help your wife's case. But we should also be more realistic when voicing expectations.
No, no, no. This is why reasoning by analogy can lead you astray. We have enough control over the world of software that the problem described above should not exist. This control does not exist in the real world, but it does in software.
Do we have enough control over software to make it impossible for someone to delete something and make it unrecoverable when they will later realize they should not have done so?
Not impossible, no. But we absolutely have enough control over software to make it highly improbable for someone to accidentally delete something important and make it unrecoverable.
His problem (or his wife's) is solvable, even right now. She could use time machine, dropbox works as well, using a versionning system would also work, she could switch to an editor that supports infinte undos, dozens of other solutions exist.
But all these require preparation, settings and some care. It could get better, even 'magical', but it would be an achievement that should not be taken for granted.
Btw we could make a pan for stew that checks if you are adding eggs to it, but no one would want the tradeoffs IMO.
> "thesis.docx", which of course was not backed up.
Something I find hard to belive from a woman whose husband is reading hacker news.
'thesis' and 'not backed up' are forbidden to appear in the same sentense by "the Universe(tm)". This law is enforced by _always_ deleting the contents of 'thesis'.
Clipboard manager. Set to record X selections too. That does it for me. Every bit of text I select is copied to clipboard, just below the value currently held there. In this case I'd have the full content of the docx file as a second item in my clipboard manager list with an email as a first one. I set the size of the clipboard items list to 500, just in case.
I couldn't live without some kind of clipboard manager. It was Ditto on Windows and klipper now on Linux. Dunno about Mac OS, but I bet there is something with similar functionality. It adds another layer of protection to Ctrl-Z everywhere and undo-tree-mode in Emacs. As a programmer I deal with text all the time and I need to be able to recover as much as possible if I make a mistake and this (clipboard manager + undo-tree + version control + normal undo) is the most robust system I could find.
For this purpose I set very large history in tmux and I almost never use terminal outside tmux anyway. The panes and windows in my tmux are very long-lived, but when I decide to close one I need to go through it's history and manually extract interesting/important bits. It's annoying and automating this would be really nice though.
Time Machine is perhaps the most elegant, least intrusive backup software ever. And it's free with OS X. I can't recommend it highly enough, especially for someone in your wife's position.
I'm a loyal unix guy but as a millenial without much actual hands-on experience with VMS I always love to hear anecdotes like that :) The first time I read about it was in Clifford Stoll's Cuckoo's Egg where it seemed as if there was constant competition between UNIX/VMS folks over which was the more sophisticated/elegant operating system - mostly good hearted competition of a more civilized age of course ;)
I vividly remember the one encounter I had with it's weird shell where I had to re-configure an application running on an Alpha machine which had a consecutive uptime of something like 12 years...
One of humanity's biggest enemies to progress are "Not invented here" and the cult of youth. It's often better to start with a blank slate ("being ignorant") because amongst other things like simply having a different perspective (worth 100 IQ points ~Alan Key) it helps with actually starting to build something. Eventually though we should still be aware of what we as a collective have learned already.
To be fair I think Github folks should know their history so this project might be one of the exceptions - looking forward to it! <3
Only in the same sense that public-key cryptography in the 1990s solved the problem of secure electronic communication between two parties. Creating the technology is on big hurdle; getting enough people to adopt it so that it's actually useful is sometimes a bigger hurdle.
I wouldn't say "solved", as it's still pretty easy to accidentally overwrite old versions, but it was a step in the right direction. VMS is full of good ideas that never went anywhere.
It's not her fault. One should be able to undo file system changes. Bell Labs solved this long ago by storing every file version forever http://en.wikipedia.org/wiki/Fossil_(file_system)
Storage is cheap
No, storage is not cheap! It may be if you're only counting files like "thesis.docx" that involves directly the user, but in reality we have a lot of programs that do automatic file operations and that would be nothing but storage trashing not to count the performance handicap.
But then considering that the unfortunate loss of data happened after an already lengthy sequence of manual actions, I wouldn't be surprised if the "o crap" would come after a longer sequence that involves disabling whatever should have been prevented the unpleasant events. I'm sorry for the loss, but I don't find my profession responsible more than I would find a car designer/engineer responsible for a car accident caused by driver's deficient attention.
Although really software should be idiot friendly and default to not letting you delete stuff by accident. As an aside I've managed to delete my code more than once in a similar manner in PyScripter which makes me feel rather silly but is quite easily done.
As mentioned time machine is a great feature, but doesn't OS X auto save files you're working on with its versions? You might want to double check that it hasn't got past versions saved.
Except that Microsoft Mac software neither follows OS X conventions (e.g. putting Office system files in the user's doc dir) nor implements many of the important features (e.g. leveraging the automatic file versioning introduced three years ago in OS X Lion).
The file revision history is - to the best of my knowledge - an OS X API that applications have to use (opt in). I don't think it comes "for free" with an OS upgrade, unless you mean Time Machine.
It's easy. Right there in the File menu near the Save command is Revert To, which leads to a submenu with Previous Save and Browse All Versions... options. The latter uses the slick Time Machine UI (http://support.apple.com/kb/ht4753).
Except, per my other comment, Microsoft doesn't bother writing Mac software that works like Mac software. It's kind of like running Java desktop software (actually worse)... neither native feel nor integrated with the OS like other Mac apps.
As you say "Microsoft doesn't bother writing" and his girlfriend uses MS Word on OS X if I understood. Can she then use that feature to recover her work after she had done the "Save" from the MS Word or not?
No, she's probably not going to be able to recover her lost work. What OP and others are trying to point out is that OS X has support for saving revisions to documents if application developers (like Microsoft) would just take advantage of it.
Why even give users control of the data? No, that should rest squarely with the file system and ait should never delete things unless it is running out of space.
Even worse, Mac apps are trending towars the "save as you go" model of Google Docs, which has the one advantage of you don't lose your work if an app crashes but if you started editing the wrong document, or make some changes and then change your mind and want to revert back to the last saved version you are tearing your hair out. The latter happens to me much more often.
As evident from the comments above, one of OS X's biggest weak points is feature discoverability.
I love how OS X stays out of your way, but most regular users never get to take advantage of greater complexity. You have to be in the mindset of one of 'us' (reading every update to Apple's PR) to get a handle on everything OS X can do.
My 6-year old version of Word 2008 has an option to always make a backup of the previous version when saving, which (unfortunately in this case) is off by default.
When I started working on my thesis, I immediately set up my entire document directory for it to be in Dropbox. At the time I paid extra for versioning but now I think it'd built into even the basic model. This also saved my friend when she was in writeup and someone stole her Macbook.
Then this really isn't a usability issue, if you replace the entire contents of a document with the clipboard, then click or shortcut to save, then click or shortcut to quit the application, that's really a human issue. It's too many steps to be labelled as a usability problem.
> "that's really a human issue ... ⌘-Z should have been adequate."
I hope you don't work in usability.
I've made exactly the mistake described, several times. When making small changes to a bunch of files, it's common to go through the whole open-edit-save-close sequence in a few seconds, and if you've got a few things open and someone's talking to you, it's easy to fuck up.
> I get it, but the convenience of things like ZFS and Time Machine have a cost. It takes time to implement such things and they take resources. And even then a failure is possible.
You need to weigh the development cost of a feature against the cost to the user of not having it times the number of users. It is usually cheaper to make the software do the tricky stuff than to make your users do it.
I get it, but the convenience of things like ZFS and Time Machine have a cost. It takes time to implement such things and they take resources. And even then a failure is possible.
E.g. you decide to do some kind of Garbage Collect on a HD, because you lack disk space and you don't want to buy a disk, but you forgot to backup a file you deleted a month ago.
I'd break it into two categories. There's software that expects you to be an expert.
Then there's software that's designed to allow lay-people to get stuff done with the promise that it will hide the nasty things of the world from them.
Microsoft Word really is the perfect example of this. The main use-case it's built around is being a lovely place for a new user to write and print a small document. It captures users from this simple use-case, and then tries to upsell them to large document and multi-user scenarios with madness like mail-merge wizards and sharepoint.
The promise of Microsoft Word is to bring functionality to users while shielding them from the nasty realities of the world. It's reasonable to be vicious about it when it fails to protect the user from themselves.
What about when they accidently release private information because the information was at some point in the software. I'd rather a single backup system like time machine than every application reinventing the wheel with all the bugs that entails.
That's why it should be the file system storing backups, not the document itself.
One should also consider a logarithmic decrease in backups: while I'm writing, a backup of the state a few seconds ago is useful, but I don't need every second from weeks ago. Say the system keeps a backup of every few seconds for the last few minutes, every few minutes for the last few hours, every few hours for the last few days, every few days for the last few weeks, every few weeks for the last few months, every few months for the last few years--the odds are then pretty good that I'd be able to revert to a version I find useful, but not requiring an awful lot of versions.
Back of the envelope: 5 versions/minute for 5 minutes = 25 versions; 4 versions/hour for 8 hours = 24 versions; 3 versions/day for seven days = 21 versions; 4 versions/week for four weeks = 16 versions; 1 version/month for 4 years = 48 versions, so a grand total of 134 previous versions of a document, which really isn't that much space, particularly assuming efficient differencing algorithms.
Doesn't Word store old data in the .docx, for things like revision diffs and to make saving quicker? Unless the filesize is really small, there might be a way to extract the previous data... Maybe that was only in the old .doc format, though.
I think the first assertion is simply untrue, and without it the rest is nonsense. You don't need to learn how to use multiple editors to do anything.
I suppose there are some languages/environments that are somewhat tied to certain editors (java and eclipse, C# and visual studio, objective-C and xcode), but that's not what is proposed here. It's a general purpose programmer's editor that anyone can use for anything. Are you really upset that it's being written? Why do you think you'll have to learn it?
I think it's also worth mentioning that Atom, like Sublime, looks straight-forward out of the box. You don't need to learn much to be productive. It doesn't have the learning curve of vim/emacs, but it's more powerful than Sublime/Notepad++/Gedit etc.
Also, I don't think anyone needs more than one general purpose text editor like vim or Sublime or Notepad++, and possibly a full-featured IDE like IntelliJ or Visual Studio. If there's a counter-argument, I'd like to read it.
If the master thinks that the human race has reached the absolute pinnacle of human/machine interfacing for text editing after just a few short decades of trying then he needs to go away and have a little sit down and a think about where he went wrong in life.
Nah man, you're not enlightened. He's not saying don't build a new editor, just that you had better think long and hard before you decide to foist another learning curve on the world, and act like you're doing it a favor.
Nobody foists a text editor on anybody, they live or die on their merits as a text editor. And besides, where would the world be know without people trying to make things better? The master's wisdom is weak in this case! I strike him on the side of his head! Slap!
It's a fair point, but by this rationale no new DBs or PLs should be made. Most of these die off or become niche, the ones that really become fundamental are few and far between. This idea that we have to drop everything and go "learn" this new thing is bogus. Folks in tech often seem to buy into the hype of some new technology all too easily, riding the wave of excitement. So their shouldn't be any concerns, of "yet another editor”.
BTW, I'm not saying this won't be successful! It looks interesting and I am excited, GitHub does great work, but you keep it in perspective.
It's interesting that people keep using the word "better" when it comes to new editors/languages/frameworks/etc, yet as an industry we have very little evidence to proof it.
I've been doing this programming thing since the 80's, and the only thing I've seen that has really made software development better have been better practices.
Maybe we should first review our definition of "better" before we label something with it. Too often it's used as a synonym for "ooh, shiny!".
Maybe not, but I'd take pass-the-floppy over AccuRev or Perforce any day.
Yeah, git and its kin are really nice, but the expensive version control systems I've been required to use in enterprise settings are awful. So awful that many people actually just email source files back and forth so they don't have to deal with it.
So, version control has made things better in some areas. But enterprise version control feels more like a step back to me. AccuRev has literally stolen entire mornings from me because what should have been a simple two-minute check-in took almost 3 hours to complete and was interactive! Yay!
we all have far less time than it would require to learn all of the interesting things. Once you get good with an editor your time is much better spent learning a new data structure, algorithm, language paradigm, etc than learning a new editor.
Thats maybe true for the vims and emacses of the world, but these new editors come with a fancy pants thing called a GUI. These GUI thingys adhere to certain standards and customs that are set by the OS. I do some web development work from time to time and therefore I have multiple browsers installed on my machine. I can switch between them without having to dig through a manual! I have to learn hardly anything!
I don't know how long Emacs has had a GUI, but it's at least 20 years.
I don't remember what the graphical capabilities of GNU Emacs are like, as I only use the command line version, but XEmacs at least also has extensive support for bitmaps graphics in buffers that far exceeds most of these "new editors".
It's hard to track down when it was introduced, but it looks like there was at least some bitmap support as far back as Emacs 18, which predates the XEmacs split and indicates that at least basic support may date back to 1986.
As others have pointed out, Emacs has a GUI. But the fact that you didn't know this might suggest that the GUI part of Emacs isn't integrally linked to the killer features of Emacs.
Learning tools like Emacs is for many a matter of productivity. If you want productivity, you want to streamline your most commonly used actions. Streamlining things in an editor will probably mean to use keybindings, since you're using the keyboard to input text anyway. Then you have to memorize the keybindings (or: your fingers have to), and you have to practice using it to the point that it actually becomes more productive than whatever previous routine you had - you have to fight your old habits.
Building these habits is what takes time. The fact that Emacs has a GUI helps with feedback and discoverability, not that much with building habits. When you have finally built these habits, only then can you know if you are more productive. If you aren't you might have to unlearn a lot of your habits (for example by learning modal text editing).
I was all ready to be skeptical and everything... but this could actually be amazing.
I currently use Chocolat for code editing, which is beautifully elegant and I love it, but there are 25 little tiny things that I really wish I could fix. I file issues, but the developers rightly have their own priorities. It's closed-source, but even if it were open source, I'm not about to learn how to use XCode and Objective C and figure out how to compile and whatnot.
But if Atom is ultimately just a big collection of straight-up node.js files, and anyone can go in at any time to change a line here or there -- and it's in JavaScript, so it couldn't be easier for programmers in general -- and there's no compilation step or anything -- then it's almost a fundamental paradigm shift for what desktop software could be.
It already makes me dream of a word processor I could hack like that, or a music player. Just by opening up a text editor. It's an inspiring thought.
> and there's no compilation step or anything -- then it's almost a fundamental paradigm shift for what desktop software could be.
> It already makes me dream of a word processor I could hack like that, or a music player. Just by opening up a text editor. It's an inspiring thought.
Not to rain on your parade or anything, but you can already do this with Emacs, not to mention that Emacs is free, open source software. Atom is not only not open source but their readme says it won't even be free after the beta.
Emacs has been around for almost 40 years, and because it's FOSS it will be around for at least another 40. Editors like Atom come and go.
Oh what, it's not open source? The little interest I had in this just evaporated. I would definitely be interested in something like Emacs built on modern technologies, but Emacs is already there and quite good. I feel like something like this could be neat, just because far more people know HTML/JS than Elisp, but if it's not open source that kills my enthusiasm for the project.
Far more people can program in JavaScript than Lisp, and far more people use GUI desktop software that follows traditional GUI user-interface paradigms, than do things inside their terminal. (Edit: or terminal-style buffers/frames.)
So that's why my statement was limited to what "desktop software" could be. :) I mean, I use LibreOffice, which is FOSS, but I am never going to touch its code in a million years. The cost-to-benefit ratio is too high. But Atom makes doing that sound almost trivial. That's the paradigm shift.
You can make desktop apps in Python, Ruby, Tcl, hell even PHP for a long time now. No compilation needed.
Whether this works effectively or not comes rests almost entirely on how good their architecture is. "Hackable" doesn't mean anything if the codebase is a coupled mess. Given GH's pedigree, I don't expect that this is the case; which means there will be some ramp-up time learning the various subsystems.
Desktop apps aren't things that you can cram into this week's hipster JS framework.
Yes, Redcar is pretty cool!
This is an inspiring talk on how to hack on it - even though I'm still mostly using vim/sublime it was pretty eye opening to me, rubies all the way down:
Crafting iOS Dev Tools in Redcar - Delisa Mason (#inspect 2013)
I don't follow. These hipster JS frameworks have to work well on phones and various inconsistent browsers. Targeting the desktop and one JS environment seems feasible.
I'm sure the emacs GUI runs great on your macbook, but for people who live on remove linux servers day in and day out, trust me they are using emacs in the terminal.
I mostly agree with that although I think it's also kind of irrelevant in a practical sense because many programmers already have to know javascript for their work so you get a lot more people who can contribute right away.
Aside from that -- lisp or javascript as the extension language, I'd love to see a brand-new extensible editor like emacs just to have a shot at changing terminology and some of the APIs. Emacs terminology is a little off-putting because it was invented before the GUIs were widely adopted so it doesn't map that well. I also find some of the APIs a bit weird, but that could just be me.
It's true that a lot of people work with Javascript, but honestly I wouldn't say that they can contribute to anything right away. A lot of these people don't know more than
$('#element').hide();
In fact, I would wager that there are more potential contributors to Emacs than there are to Atom.
But if someone just wants to customize their text editor, $('#element').hide();, or something not orders of magnitude more complex, would actually be useful.
That's totally exaggerating. Anyone who is that green to code is probably not even thinking extending their editor yet, and any working programmer has picked up more than enough JS in their to be able to write and understand far more than that line.
Plus, Emacs is a ghost town anyway. You're going to run into the problem that there are not bodies willing to use the editor, let alone extend it.
Yeah, it's definitely true that a large percentage of people who "know" javascript have about that much knowledge. But still, if you look at absolute numbers of people who can make a function and write a for loop in JS, it's still going to dwarf the number of people who can loop and write a defun in elisp.
Looks like timmm isn't a native English speaker, should his command of English be more important than his message?
There are languages where "to be born" is one verb and it makes it reasonable to make the mistake and think that in english it would be the same: "to born".
I apologize if i came off as snarky. I was trying every bit not to. I didn't correct it immediately, but when i saw another user correcting, I added my own correction to his comment.
Btw, English isn't my first language either, so please do not see this as "arrogant English speaker wants everyone to speak his language". In fact, my mother tongue is far far different from english (we dont even have a common script!)
I don't mean to sound hipster or anything but I prefer software with native look-n-feel on the platform I'm using.
I tried Emacs on OS X (proglang on Coursera asks students to use it for editing SML), gave it a couple of hours and switched back to Sublime.
I understand I missed all its glory and power but at least Sublime scrolls like OS X apps scroll, has shortcuts like OS X apps and looks like a OS X app.
But then again, I understand why you might think this is a fool's position. I'm okay with that.
not saying vim doesn't have it shortcomings, but people always forget that a scripting language for random app xyz still means you have to learn it's grammar. just like people who use ruby motion have to painfully learn that in the end while it looks like ruby it's still cocoa.
Just because people can program in Javascript doesn't mean they will be able to easily modify the code. Complicated code is complicated in any language, and Javascript in particular allows to write completely incomprehensible code that even pros would have trouble with. In addition, you'd still have to learn all the necessary APIs which might be harder than learning a new language.
Paradigm shift? I don't know, I've been writing desktop software in JavaScript for years now, it has its place but it also has big disadvantages yet, especially with accesibility stuff, which comes free if you use the stuff your OS offers for free.
Do you have a source for this? I'd be very disappointed to hear that if it were true.
EDIT: It appears that this isn't true. From a GitHub employee in freenode/##atom:
<jonrohan> EvanDotPro: it will be open source, and other platforms, when it's out of beta
<chance> jonrohan: where are you getting that information?
<jonrohan> chance: i work at github
> Atom won't be closed source, but it won't be open source either. It will be somewhere inbetween, making it easy for us to charge for Atom while still making the source available under a restrictive license so you can see how everything works. We haven't finalized exactly how this will work yet. We will have full details ready for the official launch.
Either jonrohan is misinformed, or he's using a rather tortured definition of "open source" - even the Open Source Initiative would disagree with that usage[0].
I must say, I'm a bit disappointed by the fact that Github doesn't seem to be on the same page internally about this; it's a rather important piece of information.
One can assume that, but that's not what it says. The statement that the editor is free during beta could mean "we haven't figured out whether to sell it after the beta, sell services around it, or develop integration with our other services and keep it free to enhance our overall value proposition."
Atom won't be closed source, but it won't be open source either. It will be somewhere inbetween, making it easy for us to charge for Atom while still making the source available under a restrictive license so you can see how everything works. We haven't finalized exactly how this will work yet. We will have full details ready for the official launch.
It's funny you say that, because as the only full time-ish developer of Chocolat, I could really use a lot of help!
There's ~600 open issues, my personal todo list alone is several years' worth of work. Too much for one man.
---
People make too much of open vs closed source. The real distinction is individual-lead vs committee-written.
TextMate, Sublime and Vim are good editors. But they are also Allan, Jon and Bram. Writing an editor requires good taste, accumulated experience, and a certain disregard for users' feelings.
You need someone who cares about the editor. Without that, you get a program where everything is wrong, but nobody ever bothers to fix it.
This is however a blessing and a curse. If the author can't financially support themselves, the editor will die. If the author becomes a millionaire, the editor will die. Thankfully, I'm still poor.
Haha, too much work indeed. :) I'm not going to list all 25 here, but I'd say the biggest three are definitely issues #1157 (this is HUGE, add a pref option please!!), #1369 (please!), and #1451/1417 (constantly crashing).
But overall, it's still just the most beautiful and elegant editor. :) Thanks for it!
Have you looked at Adobe Brackets? It's basically that, open-sourced today. Or look at node-webkit if you only want the app framework without the editor. The biggest downside I see right now is HUGE binaries (100+MB) because you're bundling a browser in your exe.
> But if Atom is ultimately just a big collection of straight-up node.js files, and anyone can go in at any time to change a line here or there -- and it's in JavaScript, so it couldn't be easier for programmers in general -- and there's no compilation step or anything -- then it's almost a fundamental paradigm shift for what desktop software could be.
> How I felt after that? I felt awesome. I had only installed Atom minutes ago. I didn't even had to think to fix my problem. All the knowledge I needed was already in my head! It was simple as editing a webpage. TL;DR: Atom allowed me to fix one simple problem – that I still encounter in most text editors nowadays – in seconds. What about yours?
You are so on-the-money about Chocolat. I love it except for the things that drive me crazy. I've been trying to love Sublime Text lately. Even though I see the benefits, I see the un-Mac-like-ness of it even more.
Oh don't get me wrong. The benefits are potentially huge. But it's also frustrating because I have decades of muscle memory built up that doesn't always work with Sublime.
I'm with you. I'm an Emacs user, which ostensibly has a similar design philosophy (open source, with powerful extensibility from a full-blown programming language), but Emacs Lisp has a lot of baggage and is nowhere near as widely used as JavaScript. I also find the Emacs community disjointed and hard to navigate and participate in. Ultimately, assuming that the underlying design decisions of Atom are reasonable, its success will depend on the community that develops (double meaning intended) around it. It could be great.
I developed some packages for HomeSite in the 90s. When HomeSite was integrated into Dreamweaver and development ceased, I realized that I had wasted my time developing HomeSite packages and that I should never again devote my time to extending closed-source software. Emacs has served me well ever since.
But in fairness, they've fully listed the data being collected. I'm actually very comfortable with them collecting these metrics (though I'm glad there's a way to turn it off just the same).
- A unique identifier that is generated by computing the SHA-1 of the machine's MAC address.
- The screen width and height
- The version of Atom being used
- The name of each item opened in a pane such as EditorView, SettingsView, and MarkdownPreviewView
- The amount of time the current window was open for
- The amount of time the current window to took to load
- The amount of time the app took to launch
I _think_ they're talking about the actual 'atoms' - that is the editor components. So the data that will be sent to google is 'EditorView is open', not 'EditorView contains these files'.
It's their decision to track their own users by default. It's anyone's decision to criticize them for their decision. That's healthy and much more efficient than for everyone to start creating their own text editors, payment systems, airlines or poultry farms.
I for one am more than fed up with hunting down and keeping up-to-date with settings for tracking "features" in every single piece of software I use.
And it's my decision not to use it. Why would I want a non-free (as in beer and speech) editor which reports data to Google, only works on Mac, and lacks any unique features? I don't understand the hype created on HN about it...
> Atom won't be closed source, but it won't be open source either. It will be somewhere inbetween, making it easy for us to charge for Atom while still making the source available under a restrictive license so you can see how everything works. We haven't finalized exactly how this will work yet. We will have full details ready for the official launch.
However one tries to soften that language, that translates to a proprietary license of any standard definition of "proprietary"[0]
[0] It actually sounds rather similar to the old proprietary license that Microsoft used to use (not sure if they still do anymore).
If the source code is proprietary but GitHub accepts PRs from users, it means that users will be tricked into doing free work for GitHub and have no copyright claim on their work. From the discussion you linked, it seems that many people are happy about this unfortunate situation.
Can you build a fully functional version of Atom just from those repos?
To compare, Apple releases source code for some components, but they definitely don't distribute "/System/Library/Extensions/Dont Steal Mac OS X.kext".
There's real opportunity here for Github and I hope they take it.
Why is the basic workflow of the modern-day programmer split over multiple tools and over multiple systems?
Aspects of Github could be modularised and added to the editor while still keeping the underlying tool simple and this could change our user experience for the better.
Imagine flipping through your pull requests in the text editor and then seeing your friends comments and code reviews appear on top.
Imagine an issue being created on Github and the file(s) referenced instantly glowing.
This opens doors to thinking about the engineering workflow in a new holistic manner.
Why is seeing your friends comments and code reviews in the text editor any better than seeing them in the browser? Are we becoming this lazy? or this busy?
This is pretty shortsighted. It's not the simple case of "what you can already do with two tools" that we should be thinking about. It's that stuff that you can't even imagine was possible until it integrated, in the same place, and with a good user experience.
You'll have information that's right in front of your eyes where before, the tiniest wall of separation was barrier enough to make it inaccessible or out of mind. Things will become the same, instead of just both being in the same place. This is the essence of good UX, and it has nothing to do with this specific case, but it will emerge from simple cases like this. First two things coexist, then they share, then they become one.
For a while, the iPhone was just a phone and a computer. People even said the same exact thing you just did: "why is having a phone and a palm pilot in one device any better than having them separate?" Then they started sharing features, the internet became pervasively accessible. Then everything started sharing data and features. And now we can't imagine them separate, and we have an entirely new class of thing that came out of it that basically enabled a revolution.
Eventually programming could be the same. Programmers probably have the highest tolerance I know of for compartmentalization of tasks and poor interaction design and data visualization: they are extremely intelligent and have the ability to tie things together in their heads and break down tasks and tools ad hoc. But when you don't have to do that, when programming becomes easier and more fluid, things will start happening that simply couldn't before.
We can only dream of the kinds of advancements in our tools that are yet to come.
i see people saying less context switches. but isn't this the exact opposite? it's way more context switches?
isn't this the same as having our mails popup up notifications every so often or your gmail aggregating twitter and Facebook, because people thought it would make them more productive
You're creating a strawman. I can't see why Github would make the mistake you believe they'd make as they don't have the self-interest that Facebook and Twitter have in killing your focus with an onslaught of notifications.
I think you could expect all forms of notification to be hidden by default.
It would actually likely improve your ability to concentrate. You would be able to switch into another mode of a developers workflow without needing to context-switch onto an often focus-distracting browser.
Anyway, my core point was that there are a combination of features that allow the creation of a new holistic programming experience. I am not arguing its correctness and I am not arguing that it would suit everybody. :)
This is a silly argument. You're all assuming this type of integration will be have the UI quality of your dishwasher.
Of course context switches and irrelevant information will be distracting if done poorly. This is a UX challenge—not a reason to abandon the idea.
Having the focus you need during concentrated tasks such as coding, while also enabling the integration of other tasks—such as high-level team context awareness and collaboration—is the key design challenge. Done well, it would be a killer app.
Done poorly, as with anything, it will fail miserably.
Programmers have a poor reputation for UI design prowess, and programmers tools are sadly usually made by programmers, and thus carry the same reputation. Very few amalgam programmer/designers exist to bridge the gap of motivation and ability to design a better toolset. But they do exist.
They're not quite the same. Those are push-notifications. Push/pull is orthogonal to what application you use for which purposes, especially if you have a desktop were you get such push notifications thrown at your peripheral vision no matter what application you're in.
Potentially fewer context switches and interruptions? I know for me the browser is a potential landmine of distraction, it might be handy to be able to limit that.
I think somewhere along the way we lost sight what context switching really is. Just because you put a different activity in the same tool doesn't mean there's not a context switch when you move to that activity.
Do you really think there's not a context switch when you change from writing and thinking about your own code to reviewing pull requests and comments?
There may be benefits to integrating extra functionality, but let's not imagine there's no cost to changing your mode of operation just because it's in the same tool.
Minimising context switching is a big part of improving programmer productivity, as I'm sure you're aware. This may not seem like much, but large increases in productivity can be achieved through small increases building up; every little helps.
I think you confused context switching with app switching. Yes having Github activity in the text editor means less app switching, but you are still context switching; from writing code to reading comment, which is the real productivity killer. Why not just add gmail to that text editor while we're at it and save ourselves some time?
IDEs, while they have fallen out of favor somewhat in the web development community, offer such a "holistic" development experience already - complete with deep integration into GitHub, in some instances.
Being modularised allows the basic user experience to be kept very simple. It does not need to grow into something like an IDE. Hell, according to Packages [0] even tools like find-and-replace have been modularised so I do not think it follows that Github would carelessly decide to create a big ball of mud!
And additionally this tool has removed barriers that previously existed before.
Since it was created by Github they will be able to expose APIs to create features which are currently not possible.
Likewise the UI being implemented with WebKit means that the user interface can tightly represent what a user is used to seeing at different stages of their development process.
You might have read "The Design of Everyday Things" [1] before. There are certain elements which you need to control to create a good user experience: (1) discoverability, (2) feedback, (3) the conceptual model, (4) affordances, (5) signifiers, and (6) mappings. Without ease in changing the UI, and the possibility that Github will have self-interest in exposing extra APIs, it would be a lot more difficult to control for each of these.
It's just an opportunity to try new ideas. I'm not suggesting that this would be preferable to everybody.
"Being modularised allows the basic user experience to be kept very simple."
The basic user experience does not exist; or rather it is trivially basic in any text editor.
What's important is the advanced user experience, and it simply doesn't exist yet. For instance, Python support amounts to syntax highlighting; nothing compared to python-mode and elpy in Emacs, or PyDev in Eclipse.
There's also a large gap between the promise of "Full-featured, right out of the box" and offering fundamental functionality like settings-view and command-palette as extension packages.
What Atom has to offer, currently, is a bloated abuse of web technology with little appeal beyond Javascript hipsters.
This project has years of hard work ahead to begin competing with Emacs and Vim in some niches; hard work that isn't going to happen because it's proprietary software, and contributors will prefer the open source text editors.
> Since it was created by Github they will be able to expose APIs to create features which are currently not possible.
You're probably right, but even if this is not the case, they will at least hopefully have a better understanding of how to use the APIs well, given how often they work on and with their own APIs.
> There's real opportunity here for Github and I hope they take it.
I think the philosophy here is that there is a real opportunity and they hope that you take it (or someone in the community). They're creating a highly-hackable editor and their API allows access to everything you've asked for.
They're going to build a ton of add-ons too, but they want the community to build a lot of this stuff. The most creative product team in the world can't match millions of developers solving their own problems, so rather than try to build the perfect product for everyone, they're building the most flexible product for everyone to mold into what they need.
My hope is that the core of Atom isn't so bloated with GitHub integration and that integration is optionally available through the plugin management system. I'm of the type who prefers to use the text editor just for code and other tools for source control and project management.
> Aspects of Github could be modularised and added to the editor while still keeping the underlying tool simple and this could change our user experience for the better.
This is essentially what we've done with some Rational tools (such as Team Concert) using by defining a set of loose-coupled RESTful capabilities for tool-based integrated, called OSLC http://open-services.net It has the nice quality, if adopted, as being able to link to you own issue tracker hosted elsewhere (bugzilla, jira, etc), CI, end-user need management, etc.
Atom has some limitations, I could see where OSLC and ActivityStreams would be a bit more interesting.
I've sworn by SublimeText until now. And Atom is getting released during a time when I'm increasingly learning to love console-only computing. I envision a day when I can travel the world with a cheap laptop/chromebook and do all my coding remotely via SSH.. and Vim is very much at the core of that dream.
Try using the Vim plugin (Vintage or the newer one, Vintageous) with Sublime. That way, you can gradually get used to modal editing.
I worked like that for 8-10 months then made the switch to Vim. I've gotten so used to modal editing (not to mention window management etc.) by then, that I didn't even skip a beat.
I was like that while using ST2. But then better plugins started appearing for ST3 (the aforementioned Vintageous being one of them) so I switched to ST3.
But it crashed constantly; also, by that time the Vim emulation was really hurting me. The dot command was anemic, tabs were interfering with splits etc.
I've never though about that! But it sounds great! A question though... I don't know how much though you actually have put into this, but I'm curious. What do you consider a cheap computer?
I do all my coding (though it mainly web, which arguably might need less resources than other languages) in a medium tier pc. It's a lenovo B590 with an i3, 8GB RAM. It's not exceedingly fast but with two windows of chrome, 20 tabs each, 5 or 6 instances of PHPStorm open, and all the usual programs (email clients, dropbox, chats, etc) it still feels quite snappy.
The cost here in Austria was around 650€ or so in total, maybe less (I'm not quite sure now because I upgraded it little by little).
My question is if your plans are set around a dirt cheap machine that you "wouldn't care at all" if it gets stolen, lost or broken... Or something more in the lower middle class where you'd have to be careful not to lose one per month, but you could still run most of the stuff you'd actually need for local development.
This question arises mainly for my concern is greater about not having a working reasonable internet connectivity hence making it difficult to work over ssh, rather than the laptop getting stolen or broken.
> two windows of chrome, 20 tabs each, 5 or 6 instances of PHPStorm open
Jesus Christ, that sounds excessive.
Vim can be run well off of a $35 Raspberry Pie if that means anything to you. That machine has 512 MB of RAM. Basically every laptop will be able to handle it just fine.
Theoretically yes, practically it will be slow, but it's no the CPU/RAM it's the SD card (poor I/O speed) that slows down VIM on embedded devices. You have to disable swapping, you could load your current working dir to RAM and them write a script to save the data elsewhere but that's dangerous for production.
So the best device to run vim IMHO it's still a top-notch SSD-based laptop. A chromebook (intel-based to avoid other sort of issues) would be a better bet.
I do that currently, but using the local graphical editor. I just mount the ssh path to my local FS using Expandrive. It's not free but I can recommend it.
If vim works great for you, then rock on! We can't have too many editors, though. Bad ones will fail to gain traction, and it's always good to get new ideas and modern techniques out there.
I am very excited about this, I love the Github team and this looks like a great tool.
My only question is -- why should I switch to this from Sublime Text? Are there specific use cases it handles better out of the box, or is it more of a modular base that will be expected to grow and outfeature ST2/3's seasoned plugin economy? I am very happy with Sublime Text now, but I would be willing to switch if either it gained a lot of traction, or could do stuff that I couldn't do with Sublime.
In practice, the ST3 API is extremely limiting and poorly implemented. The docs are both lacking and dated (read incorrect). It is trivial to crash ST3 by making the incorrect sequence of correct API calls. It is also common to resort to polling the editor to make up for other deficiencies. The API also only allows for extremely limited UI choices forcing highly unintuitive interfaces on end users. The ST3 runtime also features such gems as not shipping the ssl module on linux (while ST2 stripped out even more stuff).
I also expect NPM to be much better in practice than the sublime package manager which frequently ships broken code. JS is a better choice than python for async code which will make writing plugins easier.
Furthermore, ST is 3 people who largely ignore all feedback from the community regarding bugs and features. It won't be hard to out compete ST in the long run.
I don't know if I'd call it extremely limiting… there are some places I'd like to see more accessibility. However, I've built some pretty extensive stuff with it.
I would love to see ssl compiled in - I believe the reason Jon currently doesn't is that it would require building on at least 6 different machines to cover 0.9.8 and 1.0.0 (libssl.so.10 and libssl.so.1.0.0) for x86/x64 plus a customized version of ssl.py.
Indeed. I tried to implement a fast project switcher plugin at one point; ie., a plugin to quickly switch to another window by autocompleting its project name, like super+P (instead of having to cycle windows or use the window menu, both of which are poor UIs when you have anything more than two windows open). But the API doesn't support focusing windows. You can switch focus to a different buffer in an arbitrary window, but it won't make the window itself active. I reported the limitation in the forums. Never got a response. Didn't surprise me; I have reported a bunch of other problems, hardly any of which received Jon Skinner's attention.
I've been using ST2 a lot recently and while I really like it, feature wise, I've had horrible issues with documentation. The big issue is that it doesn't seem to meaningfully exist, especially if you're looking to quickly start modifying things and creating new functionality. Maybe I missed the boat on it somewhere, but it's a nightmare to find anything out about it that isn't pretty simple. I've ended up doing a lot of digging through the keybindings, experimenting with random keywords, and reading other peoples code to get things to work. While that in and of itself is a learning experience (and there's something to be said about reading other code), it's hard to rftm when there's not really an m.
I guess it may be that my google-fu is just sucking lately, but the docs situation seems bad after a few weeks of using it. If I'm wrong and anyone has any suggestions, let me know and I'd really like to check them out.
This is dead accurate. I'm a huge fan of Sublime, but their API/documentation is an atrocity. As much as I love my current Sublime setup, if there were an editor with a well documented API for writing custom plugins I would switch in an instant.
I am a co-founder of floobits- https://floobits.com/about. We build support for real time collaboration into existing editors. I chiefly work on our editor integrations.
In terms of ease of development, the order goes like this:
IntelliJ ~ Emacs > Sublime ~ Ace >> Vim. In terms of community and support, the former ordering is also true.
POLLING:
Here we are trying to get the Window, from the Sublime API. Sometimes it doesn't exist (even when windows are open). There is no reliable API to tell us when new ones are made or when old ones go away. Presumably, post_window_command (http://www.sublimetext.com/docs/3/api_reference.html#sublime...) would fire off with a close command, but this function has never worked.
Here is another example of pure craziness forced on us by ST3. We need to patch Views, but ignore our own patches (locally) so we don't form an echo loop. We also need to move the cursor so it doesn't jump. Sublime deals with these changes so poorly, we are forced to jump through hoops. In contrast- emacs/vim/intellij are basically fine just dumping on the entire buffer.
I don't see a reason to take that as a given. This uses node, ST uses python. Sublime plugins have a huge amount of power and python is certainly not terrible to work in.
I've been playing with it for a few minutes now, and it's definitely the case that it's easier to tweak. Not because of the underlying language, but because they expose so much of what's available through a GUI.
I'm blown away by how cool this is. I'm just really hoping for good Vim keybindings and I will pay good money for this once it's out of beta.
A good VIM keybinding plugin is a must for me as well. The one available for LightTable, for instance, simply wasn't sufficient IMO. I can't specifically remember what it lacked, but it was enough to throw me off.
Vintage mode in ST2/3 isn't perfect, but it's pretty solid.
Atom looks interesting. I really look forward to trying it out.
Don't hear as many folks talking about emacs in evil mode. I tried that out for a bit, and I'm not really sure why I didn't stick with it. I used it a few months. I always liked the modal nature of vim and the operator/motion sequences, but I'm a fan of lisp/emacs and remember enjoying how emacs was put together more, from a modification standpoint (I don't remember any of it now)
Yeah, Vintage mode was okay. I liked the Vintageous plugin a bit better but even that left me wishing for Vim some of the time (more time to adapt might've helped).
Other than that, it seems like an incredibly well-designed editor. Really looking forward to seeing what happens to it now that it's out in the open.
I was given 3 invites, I gave away 2 but I'll give the third to the first person to email me. (EDIT: gave away the last one)
Doesn't seem like they're keeping too tight of a lid on it, but I guess we'll see. It seems like it can be freely passed around; I think they're just trying to gauge interest since it won't be free after the beta period.
I like sublime, but my primary computer has an ARM processor and there is no sublime port. The sublime developers have stated that they don't have the bandwidth to handle an ARM port, and that's fair. But I find it difficult to justify paying for a license, when I can only use the editor ~25% of the time. An editor that is sublime-like and works everywhere would be awesome. I can't tell if atom has this, but a hosted version would also be cool, allowing users to hop on the service and do some quick work when on unfamiliar machines.
Yup, the Samsung model. Use it for most of my work. I've got an old clunker that is x86, but that thing is showing it's age so only use it when it's absolutely necessary (when there is no ARM port for an application i need, for example). The battery life and weight/size of the chromebook are really awesome. Using crouton to run an OS is pretty painless, although you do run into a few bugs every now and then. Also, the hard drive needs to be supplemented with and SD card. But for the most part, works as good as a MacBook Air for a quarter of the price.
Good catch. I really shouldn't have any more of a problem with a desktop app tracking me than I do a web app but for some reason I do. I guess because I can always use Disconnect in the browser and I can't with Atom. I guess the fact that it is open about it is a positive thing, though.
Some apps ask on install if you agree to share usage data. I can't say how Atom handles it, but it sounds like you're in unless you modify the config.
BTW, I'm less concerned and more just surprised to see Google Analytics used like this. I guess it really is the blurring of the lines between desktop and browser-based apps.
Maybe this GA usage is not unique, but it's new to me.
Why should I care about a Google key-logger with a bundled text editor? Also, if github were a real player, they would do their own user tracking rather than giving Google their data.
Don't be a hypocrite. Tracking is tracking is tracking and it's as wrong when you do it as it is for anybody else. Show your users some respect and value their privacy.
I know it's a stretch, but technically, you are opting in by downloading and running the program, and therefor accepting some sort of privacy policy or ToS.
Are any of us so self-important, that we think our usage stats for a text editor are some kind of top-secret data?
I mean, come on - it's a text editor - I edit my scratchpad and my coding projects on it.
If any of the stuff I had was that top-secret, I'd be doing it in a digital clean-room, with an airgap. And I'd actually have top-secret clearance.
How many of us here actually have top secret clearance? I'd bet very few...lol. And I doubt they'd be posting here, or admit it.
My list of text files I have open is quite frankly, is not that interesting. I don't really care if Google wants to mine it. Or if Github finds out I edit a document called "Lolcat images" fifteen times a day. I seriously doubt any Githubber is going to be sitting there, pouring through logs looking for salacious information about the documents I edit...
Some people with lives "not that interesting" don't want to give up their privacy. Some of us even understand that there is no such thing as "anonymous statistics".
It's not about a big government spying conspiracy. It's about basic privacy and not giving out data about yourself that you don't want to give out.
Hmm - but let's take your idea and think it through to it's completion.
It's fine to say, oh but the privacy! But that in itself isn't an argument. It's just an appeal to emotion, with no facts.
What do you think will happen if Github has usage data on how you use their text editor?
Or what do you think will happen if Google knows what websites you search for?
These aren't rhetorical questions - I'm actually curious what scenarios people actually think will play out.
I find it unlikely that Google/Github would publicly publish that information on their websites. I also find it unlikely that an individual person would ever view your data.
What other scenarios do you believe will happen?
Now, if the government were involved, that's a completely different kettle of fish.
I don't think you honestly want to know "what scenarios people actually think will play out" and that you question this way solely for the sake of argument. I think you have your mind made up and would rather snark at people that have an opposing opinion.
That being said, it's no stretch to understand that some people just don't want to volunteer personal information especially originating from software.
There are enormous trust implications with any sort of software that phones home for any reason. And if the software source code isn't publicly auditable it can be impossible to actually verify what information is being sent from your machine. I personally don't think it's possible to actually trust closed source software. I don't care that it's socially normal to ignore your personal computing privacy. I care about mine.
Well, no - you assuming it's rhetorical when I clearly stated it's not is snarky....
As I said, there were two scenarios that I outlined which were unlikely - Google/Github posting my text editor usage publicly on their website, linked to my name, and employees of those companies individually trawling through.
The scenario of them mining for trends in the data, in order to improve the software, I'm perfectly fine with.
The scenario of the government being involved - I agree that's bad - however, we haven't seen any indications that is true for the wide public.
Can you actually come up with any other scenarios that are both 1. probably and 2. worrying?
You don't understand, it's not about "probably" it's about absolute. Just because a 3rd party probably won't do anything that could harm me doesn't mean that I should trust them for any reason. This is one of the main points of the free in free software.
It's not about tin-foil hats or being uptight, it's about my-personal-data-privacy and network-user-best-privacy-practices.
At this point, you either don't get it, or you don't think I should have the right to absolute data privacy if and purely because I want it.
Are you suggesting that it's OK for a private company to collect any data they wish? Do you feel this collection must be disclosed to be proper, or is it OK to just do it? Would "OK" data collection include keyboard logging, password and account info collection, video (camera) and audio collection?
If you do draw a line somewhere -- anywhere, really -- then I'd suggest you're just like everyone else who thinks that privacy is a right and it can be violated. You just draw the line in a different place.
If you really do think that any kind of data collection whatsoever is fine, then I'd just say I don't think many people would feel comfortable with that, not even serious law-and-order types. You're entitled to give away your own rights, but not mine.
This is Github collecting usage metrics for their text editor. It should be fairly obvious to any programmer why they're collecting this information - it's to improve the product (which they will probably then sell).
The other thing is, Github is doing this in aggregate, and de-personalised.
But can you think of a single reason why a company like Github would want to collect, as you say, my password information, or webcam shots of me?
Apart from the stupid amount of bandwidth and storage they'd need to transmit and store webcam footage from all their users - what exactly could they gain from this?
What's the business case? How exactly would it make more people pony up money for Github subscription?
Since that's sort of their goal - to make money.
People seem to think there's some grand Illumati global conspiracy going on. There really isn't.
It's actually a lot simpler - this is capitalism, and companies exist to make money (within the bounds of the law).
If it makes them money, they'll probably do it.
If it doesn't, and it's "evil" they won't just do it for kicks of being evil. There needs to be a business case.
Somebody has to justify to their manager, who will then justify to their manager, why something will add value. Surely you've experienced this?
Now, I draw the line at the law, really - so if companies are fraudulently charging things to my credit card, or threatening to shoot me if I don't buy their product - yeah, that's illegal and I don't like that.
But if they're operating within the bounds of the law, or even if they're just being annoying and shoving ads in my face, I'll either put up with it, to use the service, or just use a different service.
As I said in a parent comment - the government is a completely different kettle of fish. However, companies are pretty easy to see through - their motives are, at least on a general level, pretty well defined.
"It should be fairly obvious to any programmer why they're collecting this information" - It's also fairly obvious to any programmer how this can be abused.
"The other thing is, Github is doing this in aggregate, and de-personalised." - THEY SAY.
"What's the business case? How exactly would it make more people pony up money for Github subscription?" - Companies can and do use any information gained about you to build a profile about you. They use this profile to do things like target you ads as well as sell your profile to other companies.
"People seem to think there's some grand Illumati global conspiracy going on." - No we don't, this is about basic privacy best practices.
"If it makes them money, they'll probably do it." - Exactly.
"There needs to be a business case." - There is always a business case. "Business Case" is an abstract concept.
"Now, I draw the line at the law" - The law is an enormous grey area. Essentially you haven't drawn a line. What you've argued is against identity theft and violent threats, not privacy protection.
"But if they're operating within the bounds of the law" - In a democratic society, these things are for us - the society - to decide and change. If you don't agree with the bounds of the law then it is your duty to act accordingly. Arguments like, "as long as it's not breaking the law" have very little use in a democracy.
"government is a completely different kettle of fish" - The government can secretly subpoena these companies for any information.
"companies are pretty easy to see through" - That makes no sense. I get what you're saying, they're trying to make money. There is no one size fits all strategy for making money and businesses do what some people consider "the wrong thing" all the time in effort to just make money.
-----------------------------------------------
People here are concerned about basic privacy best practices, not companies making money or governments spying. No one here is worried about some grand conspiracy. There is absolutely nothing wrong with not wanting software that is running on your own personal machine to send statistics about you to a third party whether they are purported to be anonymous or not. It's unfortunate that the societal norm is to turn a blind eye to these basic best practices, but it doesn't mean that those of us that still respect them should too.
The concept is this: Trusting closed source software is not something I want to do.
Not: Github is going to fuck me in the ass if I let them see my usage statistics.
Do you actually think somebody at Github/Google is individually watching you?
As individual data points, I doubt we're that interesting.
It's like NetFlix knowing what movies I watch.
I doubt any single NetFlix employee could give two cents that Victor in Australia likes watching Once Upon A Time. (Awesome show, btw).
However, if I watch Once Upon A Time, and I also watch XYZ, and then other people do the same, maybe they get to improve their algorithm. Woot to them.
Maybe Github want to know what features get used. Or what performance issues people are experiencing.
Maybe it's definitions, but I don't consider this watching - they want to know what we do as an aggregate, but it's not like there's a little imp beside me watching me as I type.
(Although I get how some people might feel that way, if it's just a black box to them).
Also, you do realize that no one is worried about whether "somebody at Github/Google is individually watching you." Unless of course they have an ex-lover at Github/Google.
These organizations, and those capable of secretly subpoenaing them, have software and very fast computers that do the watching. And it's not watching, it's profile building.
I'm not saying that this editor's phoning home of usage statistics is resulting in you being on the no-fly list, but you're argument is missing the point.
Well, let's take your argument, and think it through to it's completion.
What do you think they will do when they have built a profile of you?
Actually, I don't think it's even a huge secret that companies have profiles of customers/users.
Google has a profile of you - and they build targeted ads. I don't see that as particularly evil - Gmail is ad-supported, and I'd rather those ads were relevant to me, rather than endless adds for Cialis (I have no idea what that even is), or for formal dresses or hair extensions.
Github probably has a profile of me - they use it to recommend repos they think I'll be interested in, and keep me coming back to the site.
Microsoft undoubtedly has a profile of me, Yahoo has a profile of me.
Even my supermarket, if I bothered to sign up to their rewards scheme, would have a profile of me.
My credit card company has a profile of me.
All of this is public knowledge - in fact, I think it's better that this stuff is out there, companies acknowledge it and people are aware of it.
Anyhow - to the point - what will happen when these companies, who sell products and services, have profiles of you?
To me - the likely outcome is - they will try to target you better, and get you to buy more products/services.
I just don't understand why people downvote you. It's quite stupid to downvote someone who is merely pointing out facts.
Google analytic is everywhere. If you don't want Github to track you, then don't use it. So if people fear Google, then should Github do the tracking on its own? Then all the sudden Github is not evil anymore. But look: github has your repository, your code. If you have a private repo, github still owns the source code in their data store. So in the end, privacy on Github? Minimal.
And you know what? Github itself has been using Google analytic for years. And now we are complaining about Google collecting data?
If you care about privacy, you shouldn't even be using Github. If you care about your privacy, you should never give up your true IP, your true identity on the Internet.
> Google analytic is everywhere. If you don't want Github to track you, then don't use it. So if people fear Google, then should Github do the tracking on its own? Then all the sudden Github is not evil anymore.
First, it is not "evil", it's just an invasion of privacy. Yes, if GitHub did their own tracking I wouldn't have a problem with it. What I don't want is one company that knows everything I do online and that's why I have a problem with GA. That GitHub tracks my activity on GitHub is completely acceptable.
> And you know what? Github itself has been using Google analytic for years. And now we are complaining about Google collecting data?
I can block GA in my browser, so this doesn't concern me. Using privacy invading tracking scripts all you want, I'll just block them. Can't really do the same in a desktop text editor.
So it's either all or nothing? It's possible to concede some privacy in some aspects of work/life while trying to retain it in another. Even though you have a Github account doesn't mean that all your code is on Github. You might not have remotely close to all the work you do in an editor on Github, at least if you're the kind of person who's more comfortable in your favorite editor than in a word-processor. People have been power users of editors for decades without needing the cloud or a remote, third party service in order to use them.
I was addressing the reaction. Github has been using GA for years and AFAIK there is no way to opt out via Github account settings. Atom is not something you use on Github; it's a desktop application. If you install a browser, you have the option to NOT send data to the browser vendor, but most people choose to use the default settings. I don't see why we have to think auto opt-in is bad or a bummer. Github even makes it explicit that you can disable GA (or whatever metric software they are using in Atom) in Atom and atom's opt out option is 100x better than Google Plus integration.
My premise is that my life isn't that interesting, and if Github wants to track how I use their product, then sure.
Heck, if they send me a survey, and I can be bothered, I'd probably even fill it in with - this is how I use your editor, this is how you can improve it (in my opinion).
If they can just collect that information for free, with no effort on my part, sure.
The most common cause of people showing websites inside a Macbook is that the graphic designer is using a Mac and Apple provides some pretty nice high resolution tiffs of all its products.
To be fair, would most people know what super-shift-P means?
That said, it would be fairly simple to have a variable for super that resolves to ctrl/cmd on other platforms, the same way that most download pages nowadays infer your platform and show you the binary you most likely want.
It's built on node-webkit and chromium, which technically works on Windows, OSX and Linux. Do you seriously think they would make an OSX only editor when there's already so many that work on all platforms?
Cheaper hardware, Steam (and other games in general), testing on the platform used by a majority of our users, and more customization available than OS X, for starters.
It's most likely not possible until there's a "hosted atom" you connect to with your browser. ChromeOS is /just/ a web browser and won't run node, which Atom uses to do its processing.
It will depend on which node features/packages are essential, but it could probably be hacked together (possibly entirely using Atom's modular design, e.g. replace the standard file IO parts with browser-friendly ones like LocalStorage and the HTML5 File API).
@Downvoters: Please do your homework[0] before downvoting. If you genuinely think my comment deserved downvotes, at least afford me the courtesy of an explanation.
If it is inside node-webkit, I'll be curious to see how they got native windows menus support. There are some pretty serious bugs in NW's handling of windows native menus.
The performance of a webapp with the accessibility of a desktop app. Not to mention that it's closed source. This is a tremendous step backwards.
Looking at the implementation of the open sourced packages is discouraging as well. It looks like they are using a Backbone inspired jQuery infested nightmare of clientside MVC.
Maybe my bitterness comes from the fact that I've already been down that road and it leads to a bad place.
Here's an editor that has deep Github integration, runs in the browser, and self hosts: http://www.danielx.net/editor
I would wait until I actually try the product instead of calling quits. And jQuery/Backbone is not an infested nightmare MVC. It's beautiful modular javascript.
Wow - I didn't even think node.js was that old. It will be interesting to see its genesis. The first git commit for node appears to have been on Feb 16, 2009:
commit 9d7895c567e8f38abfff35da1b6d6d6a0a06f9aa
Author: Ryan <ry@tinyclouds.org>
Date: Mon Feb 16 01:02:00 2009 +0100
add dependencies
Imagine Linus had used that sort of license for git. There would be no github, no nothing. I don't get it. Take for free, build a million dollar business and then make your own stuff closed...
I've just had play around with the beta. It looks like it's using a version of CodeMirror 4 (as it has multiple ranges). Fairly fast but it doesn't match Sublime Text just yet
Initial impressions: it's early days but this thing is just oozing for customisation. The fact it's written in JS means writing packages is pretty simple compared to Python for ST; we're going to see TONNES of addons for it. I can already think of 2-3 I'd like to build.
The one thing that really excites me is how people getting into programming could start off with a pretty basic editor and add and write packages as they hone their skills, ending with something incredible powerful and tailored to them. In fact I'd really love to see a super customised starter version for children / beginners that acts as a learning aid as well as a text editor.
No doubt there's going to be haters in the vim / emacs / ST / insert favourite editor here camp but I really hope this works out for the Github guys (and I have a feeling it will).
Looks like in Atom you can just inspect elements of the editor and change them right there. In Brackets if you want to change the font of the editor then you have to write an extension or search for the CSS file of the editor which is barely editable with Brackets because it's slows down with the somewhat bigger CSS file, syntax highlight stops at the half of the file and searching was extremely slow for me in this big file.
You can open dev tools on either of these editors, but in both cases you're not making permanent changes to the source that will stick around the next time you launch the app.
Hacking the minified source isn't going to be fun no matter what, but if you clone Brackets from git the original LESS files are very easy to modify. Or you could just write a three line extension (https://github.com/adobe/brackets/wiki/Customize-Your-Code-F...) to adjust the CSS without modifying the core at all. That flexibility is the advantage of building on the web tech stack (an advantage shared by Brackets, Light Table, and Atom alike).
When I first saw Brackets, I was surprised to see it come out of Adobe. I had no idea that they did any open-source work, especially considering their product portfolio.
> Initial impressions: it's early days but this thing is just oozing for customisation. The fact it's written in JS means writing packages is pretty simple compared to Python for ST; we're going to see TONNES of addons for it. I can already think of 2-3 I'd like to build.
This isn't why it's going to be popular for plugin development though. Sublime plugins are Python, which isn't that hard to learn.
Atom's plugins are worth looking forward to if the API is more extensive than Sublime. There is too much you can't do in Sublime Text plugin authoring.
> This isn't why it's going to be popular for plugin development though. Sublime plugins are Python, which isn't that hard to learn.
Agreed, but Javascript has many more developers who know JS over Python. From my initial glance at the docs the learning curve for package development isn't too steep either.
I mean, it looks nice - but I'm a bit undecided about the whole proprietary code project thing.
If it was open-source, we might actually be able to see if there was some silly hardcoded limit in there - heck, we could even submit a patch and do a pull request.
That, and the blatant ripping off of Sublime Text's interface.
It's bad enough they don't put the source itself on Github, but they aren't even using Github's issue tracker for the project - or heck, any other issue tracker as all.
So we're resorting to filing bug reports on a discussion forum...shakes head.
Hopefully Github will come through, and sort things out.
I have no objections to paying for an editor - heck, Sublime is $70 - but with this being closed source, and Brackets.io being more mature, and open-source, not sure what the attraction is.
A common thread or line of argument that I find when reading about new editors is their out-of-the-box ease of use compared to Emacs and Vim. For example, a quote from the Atom blog:
>Sublime and TextMate offer convenience but only limited extensibility. On the other end of the spectrum, Emacs and Vim offer extreme flexibility, but they aren't very approachable and can only be customized with special-purpose scripting languages.
It doesn't seem like they (and many others) are denying that Emacs and Vim are excellent editors. Why is ease of use such an important issue for text editors? Emacs isn't terribly difficult to use, but if my livelihood and the majority of my time is tied to what tools I use, then it's worth the investment of time. I don't think I've met an Emacs user who has put in the effort of learning Elisp and customizing Emacs to their liking ever deny the benefits of learning it in the first place. Yes, it's a pain in the ass initially. I quit Emacs twice before I became determined to stop whining and spend quality time learning about tooling.
There is no doubt that Emacs has a steep learning curve and perhaps that's because its developers have a higher expectation of its users. I would argue that these expectations are easily matched by the capabilities of a competent programmer.
There is no reason why "editing plain text" should be anything other than immediately intuitive. Advanced, time-saving features, like multi-cursors or regexp-based find-and-replace, can and should be progressively revealed through normal use of the software.
This ludditic reverence for user-hostile text editors is one of the more perplexing and frustrating things about our industry.
> There is no reason why "editing plain text" should be anything other than immediately intuitive.
Are you suggesting that it isn't in Emacs?
Well, I remember using Emacs for the first time. It opened up and I started editing the opened file. I saved the file from the file menu (which also showed me the shortcut for saving the file the next time I have to save something). Done. Now, this is exactly what a novice would do with notepad.
I found that many people 'demonize' Emacs just because they found it unfamiliar. Sure it's unfamiliar. For about a day. Then, it's just as familiar as any other user interface. I now used Emacs for, well, the shell, the dired and wdired, multiple cursors, keyboard macros, project-wide grepping and everything in between. Getting familiar with the editor was a great thing to have done, however unfamiliar it was in the beginning.
With the benefit of hindsight, I can truly say that learning how to properly use a text editor, especially one so powerful as Emacs, is the one thing the any programmer absolutely must do. So, even if the editor isn't "anything other than immediately intuitive", it's still a good idea to wrap your head around the non-intuitive things.
Ah, but you forget to provide a reason to support your claim unlike me, who presented a basic use case which in fact refutes your claim (in the last comment).
> Emacs is obviously and inarguably not immediately intuitive.
"obviously" : I find it anything but obvious.
"inarguably": Really? So it can't even be argued? Well, I don't know what to say to that.
What is immediately intuitive about anything a programmer does on their machine? I assume you have used a Unix shell, right? Was there anything immediately intuitive about that? You've probably done some programming, so was there anything immediately intuitive about your programming language?
Editing plain text is in fact very easy. Structured text requires a little more logic, however. Ultimately, you could use emacs in the exact way one would use notepad++ and be none the wiser to the rich customizations under the hood. If thats your bag of tea, drink it.
It could be really great. I wonder if Jon Skinner knew, and said to himself "Welp, I might as well stop with Sublime". However, Sublime is (mostly) blazingly fast. I don't expect this from a node based app, especially in Windows. And: I didn't see it under Features, but Atom definitely needs the command palette from Sublime baked into core. Only if it's core, plugin authors will set their hooks correctly from the beginning. Or even better, there might be a flexible command api that exposes each plugin's commands from the start and can be extended too. -> edit: the readme says it has Command Palette. Great! Also, since the term is identical with Sublime Text, I wonder if there's more to it than inspiration.
I would pay for a $10 a month subscription/support contract to Sublime if it was Open Sourced... properly where the community can get involved in the development.
This coming along scares me that an already tenuous situation around the future of Sublime Text may implode due to this new editor... and it isnt even open source. I'd rather build my own highly customised GUI+CLI macvim/emacs with both python and JS plugin backends than switch from one closed source editor to another just because its new and uses Node... I dont normally swear on hacker news ... but fuck that shit.
before you jump to writing your own text editor from scratch, consider contributing to textadept. it's about half the text editor that sublimetext is, but it's lua based, already exists, and it is totally open source.
Although, most of the Sublime core is in C/C++ as far as I know. And it's using native drawing, not webkit. Will be interesting to see how the performance compares.
sublime is using opengl to render every glype. Its speed will blow anything out of the water. Open 2MB text will be highlighted and colored in an instant. I wonder how could webkit achieve that.
My suspicion is sublime's speed has very little to do with its rendering method and a lot more to do with its I/O philosophy. Because, let's be honest, there is no way OpenGL can make loading a 50mb file into memory significantly faster than plain rendering.
You're missing the point. The point is, for some reason a bunch of people have their expectations of Javascript performance set 10-15 years out of date.
Nice to see some innovate architecture for an editor but this product launch reminds me to product launches from Apple or Google: it doesn't matter what product or feature is shown, there is always tons of premature praise.
If an unknown third party came up with Atom it would have never gotten that attention.
ST3 is a very good product viewed from any angle and VIM either—it will be hard to beat these reference products. I love Node/npm and again the stack sounds great but I don't know if this stack will be much easier to extend than something like ST3 or VIM.
What I have seen from a product perspective on the Atom landing page does not blow me away, not at all. And it is wether free nor open source.
But it's from Github and that's reason enough to vote it up.
As was speculated in the other thread the beta looks like it will be closed, there's a "request and invite" form on the page.
Others noted that the source mentioned "free during beta", I certainly hope that's not the case and it's truly FOSS. Sublime Text development has slowed significantly recently and the community can't continue to drive it since it's closed.
Funnily enough, Sublime Text was born out of Textmate development slowing, and I can't seem to shake that vibe here too.
If you want an open-source text editor based on Node.js, Light Table might interest you.
(Light Table itself is written in ClojureScript, which is a bit idiosyncratic, but it's hardly worse than Elisp, and anyway you can write plugins in normal JavaScript.)
Agree. It's a tough decision for them -- I'm sure the "Hot New Text Editor" market has a decent chunk of money associated with it. But it's pretty hard to commit to a text editor that you can't open up and recompile.
EDIT: Plus, if an editor is going to join the ranks of vim and emacs in history (something which neither Sublime nor TextMate are on track to do) it has to be open source. Anything else and it's just another product.
I agree on the open source nature. However if this editor treats github as a first class citizen (while being free/open) then it does have value to github. This is especially the case for new github features introduced in the future.
There are very few people who would opt in to a editor for everything only to use it with Github. Most of the world's developers don't even have a Github account.
Tools work in a strange way. I recently saw a whole team of embedded developers use TextPad. They haven't heard of anything called 'vim' or 'emacs'. From their perspective its either a vendor supplied IDE or TextPad. One of them was even startled to see this shiny new thing called 'Sublime Text' when I was using it. He went out with enthusiasm, but was hardly able to convince any one to use it.
A code editor with first class prominent Github support is more likely to encourage creating Github accounts - it would just work. Compare to regular code editors which require jumping through various hoops (typically having to find relevant plugins, install them on all machines/users, and then figure out how to use them as they are extensions not core).
A pitch of "if you use this editor then all the team's work is automatically synchronized and available" is a very powerful sell.
There are open source text editors of all levels of "easy to grasp". I've contributed to one myself. With Atom I simply don't have the option, and that's unacceptable as a professional in this craft.
I agree, I'm just saying that if some capable people decide to stop working on Emacs, it would die. So sometimes I prefer a paid product because there is incentive to continue working on it. (Ok, not that the karma/love one gets for working on Emacs isn't good enough).
Vim is available on all (relevant) operating systems.
Vim doesn't require an invite.
Not for me. I do like to give new editors a try (fell deeply in love with LightTable just a short while ago), but OS X as main platform and yet another closed editor?
I'm really hoping they make it completely open source with service-optional business model, they core needs to be open or it will have the same problems as every other closed source editor.
Usually if you don't see "free" or "open source" mentioned on the main page it means it's not going to be either of these two (or at least that it hasn't been decided yet).
"free during beta" doesn't always imply "paid on launch" and I'd be surprised if the basic editor was paid. Github certainly doesn't need the cash and usage is oxygen.
As the designer who worked on the main interface for Sublime Text 2, it does irk me that it looks so similar. They had carte blanche to create a wonderful new interface and they mostly just copied Sublime Text. The go-to anything menu looks especially similar. https://t.co/5YxVbZcVcK
The tabs are the thing that reminds me most of ST but they are practically just Chrome's tabs -- everything else isn't particularly distinctive and seems standard for a text editor.
But the very first thought is "wow, it's exactly the same look as Sublime Text", not JetBrains product, not Eclipse, not even Visual Studio, so they definitely were completely inspired by Sublime in particular.
True; but if you were making a text editor today, with the whole flat UI trend and minimalism being so prevalent, the sublime UI is actually very intuitive. It's just that sublime got to it first, in my opinion.
> Emacs and Vim offer extreme flexibility, but they aren't very approachable and can only be customized with special-purpose scripting languages.
Only? I can point to a large number of Python, Ruby and Perl plugins for Vim. Unless they are considering those special-purpose and nodejs is the only truly flexible scripting language.
Atom is eventually a dead end. They are paying lip service to eventually partially opensourcing it.
It is the opposite direction of the magic of git, which enables easy sharing and collaboration.
Beware the promise of later opensourcing of projects. Without an early commitment, the developers of atom will invariably include proprietary software to ease development which will preclude later opensourcing.
You are better off taking the hard road and investing your time in tools that are not cargo cults.
Almost every single comment is negative, dismissive, one liners filled with half truths and very few child comments seek to rectify any misinformation or support a discussion.
The first and by far most-upvoted with a 700 point margin.
>I must be out of touch with modern development. I don't understand the thought process that leads people to be excited about a closed source, node.js text editor that reports your usage to Google.
It suggests the user simply scanned over other comments, glanced at atom's site and proceeded to regurgitate karma bait. I suppose it says a lot about the attention span of these people as there are also highly voted "tl;dr" request comments.
A perfect example of misinformation:
>[ unquietwiki 70 points] Isn't Brackets this already? Node.js/Chromium app with plugin support?
> --- [ MrSenorSan 67 points] yup, but atom is not open source yay! wait a min...
> --- [ kmeisthax 17 points ] Yes, but with Atom, you have the priviledge of paying GitHub money for a software product in a market with numerous competent free and Free Software options.
The supply of vitriol is unending.
It was the same with the /g/ thread, though surprisingly not quite as bad.
My point is, stay classy Hacker News. While you may even have similar opinions with these communities, the reception in this thread has been far more exciting and you put effort into your discussions. The contrast is massive, and especially interesting considering this is one the highest upvoted articles on HN, sitting alongside Neovim. suggesting we desperately want to replace our editors.
Eclipse is massively modifiable but everyone hates it because of bloat. You see this kind of thing starts off with good intentions and then all the plugin madness gets going and suddenly everyone gets revolted and charges off to embrace the next great "lightweight" editor.
You already can, just load up a crosh window and enter your chroot. Take your pick of vim or emacs or whatever other console editor. Or, if you're enterprising, you can run a window manager on the same X display and use any GUI editor, but the integration is a bit wacky.
Wow. Lost karma because I'm enthusiastic about something? Neutral, I'd understand... but downvotes? Really? I've seen even more plain and simple comments get upvotes. You folks are a fickle bunch.
It's really sad that learning a new language is considered "a big obstacle." An average programmer should be able to pick up nearly any new computing language quite easily.
The language itself is actually very simple and writing plugins for lighttable is the opposite of complex, there are amazing tutorials floating around the web. The whole process is simply just manipulating sets of data, it's all about adding and removing triggers.
This said, you can also write lighttable plugins in javascript.
So how much is written in Javascript? Won't that performance pale in comparison to, say, Sublime which is written in C++?
Or are just the plugins/extensions written in Javascript while the core editor is in C or C++?
Obligatory: People who got a beta invite, anyone feeling generous and want to give me one? (As I understand it, when you're invited you get a few to hand out, too.)
Can I use it online? That would be the killer feature for me, being able to code on anyone's computer in a second. Currently it's basically the only thing stopping me from being able to pick up anyone's computer and use it as I use my own.
Guessing no, because of the Node.js plugin architecture ("need to call into C or C++?", "full access to the filesystem"). Really only the UI seems to be done in WebKit.
From a quick glance it looks like its architected the same as Light Table (Local node server that accesses the file system and a decoupled UI that connects over http and uses WebKit).
If it works like that it could run in the browser. Not so easily from anywhere though
Thanks to Atom not being really free software and people here suggesting it a lot I give LightTable a try. I'm an emacs user but I like experimenting different foss editors and LighTable + emacs keybindings plugin is a really nice and beautiful tool.
Couldn't get it to work on Debian Wheezy yet (GLIBC_2.15 not found)* but worked on a Windows machine at work so I'm testing it there. I'll get back to linux later. Looking forward for v1.0. :)
I find it interesting that there is little to no conversation about the integration with git. In one of the the screenshots I saw a branch name and icon in the bottom status bar. I assume this is an important motivation for GitHub.
Looks like Sublime Text but with a ton of resource-consuming shit I'll never use, which itself is similar to the reason I stopped using Sublime Text. I'll sick with vim, thanks.
Atom team, if you're reading this, I have a big feature request that would make this far, far greater than just another editor.
Pair editing.
Specifically, having the ability to pair two editors over a network and edit the same set of files.
Lots of other editors do this, but here's the key: Each editor keeps its own settings and environment.
I'm a vim guy. I can set up my Atom to be vimlike. My buddy, the Emacs (heretic!) guy, can set up his Atom the way he likes, and we can work in harmony.
Looking forward to this. The fact that it's all JavaScript/Node based makes this particularly attracting for me. I haven't really been able to hack on ST2/3 because I'm not that proficient in Python and never found the time to properly dig into it. The repositories look great, really hope it'll live up to the expectations.
That being said, anyone with a spare invite? :) Ta.
First let me say that I've used only vim and emacs for the last 5+ years that I have been a daily coder.
I'm extremely comfortable with vim. I can cruise seemingly at light speed and have just never been able to find a text editor which offered the same level of productivity when jumping back and forth between the mouse/trackpad and keyboard.
However I just couldn't resist the urge to try out a new text editor that was created by github and thankfully I scored an invite from someone on twitter.
I've only had the thing open for about 10 minutes and already I'm impressed.
It allows me to write in markdown, save the file, render the markdown into markup, and then launch the webkit dev tools to inspect the rendered DOM.[0]
Do other modern text editors such as Sublime Text allow you to render the markup and then inspect the DOM with browser dev tools? If not that alone seems like a pretty good innovation.
I think he means that we need editors that are powerful AND easy to use.
Seems like vim isn't really for someone like me (I haven't studied PhD level computer science and I don't write compilers and/or lisp interpreters in my spare time for fun).
I taught Linux Admin courses before I graduated high school, and the first order was learning vim. If you have a mac, 'vimtutor' is available to you.
vim has nothing to do with PhD-level CS or writing compilers and/or lisp interpreters. The Emacs community might fit that stereotype a little more but really not much more.
Vi (vim being 'vi improved') is great because it works on basically any terminal. It works with my iPad's keyboard and with a teletype terminal from the 70s or 80s, as well as a normal PC keyboard. Emacs has similar brags.
The terminal's not going anywhere and if you like keyboard shortcuts, knowing five or ten that will work on any keyboard in existence for an editor that is on most unix systems you'll find has some value.
I was being a smartass, which was uncalled for. Sorry, Angersock!
Also, I do have a mac, so maybe I'll check out vimtutor.
My point is that I'm very new to programming, and it's so much easier for me to load up Sublime Text and start getting work done. At least for now, learning vim would be something that get's in the way of learning/making. It also doesn't seem like the benefits would outweigh the cost.
I started using vim when I had first started to learn to program. I'd say give it a shot if for no other reason than it's an interesting paradigm shift, and can be really effective.
I'd say give Vintage mode on sublime a shot. It does the basic keybindings/motions of vim and will give you an idea of whether or not you might be interested in it. It's also nice because in insert mode it's basically just normal sublime, so you can just switch back to that if you get frustrated.
Are you on linux, osx, windows, or something else?
If you use vim/vintage mode, remap capslock to be escape.
This took me forever to figure out, for whatever reason, but if you're on windows, the easiest thing to do is get autohotkey [1] and write a script with one line:
Capslock::Escape
You can compile that to a portable binary and use it anywhere as well. It's really straight forward.
I also added two keybindings to make Alt+movement to add cursors above and below:
{ "keys": ["alt+k"], "command": "select_lines", "args": {"forward": false} },
{ "keys": ["alt+j"], "command": "select_lines", "args": {"forward": true} },
It doesn't always interact naturally with vintage/vim mode, though, but that was just a personal preference.
Not to get on vim tangent but it's very easy to learn vim slowly. If you use a gui like MacVim you can still use cmd+s to save, etc. and use it like a normal editor. The only thing you are really required to know is the difference between normal and insert modes.
Yeah, I understand what you're saying. It's just hard for me to justify (to myself) learning vim (or emacs, or vi, or whatever) when I can just load up Sublime Text and start working on something.
Put another way: working with Sublime Text and Adobe Brackets is a good experience for me... There's nothing that screams out at me "Man, this sucks, I need to go learn vim."
Fair enough, can't blame you for that. If you ever start wanting to administer your own servers, being handy with vim is nice as you can quickly make changes on an ssh server.
Vim is hardly a requirement to manage a server, and the amount of changes required live on a server should be approaching zero - apps should never be written on the server and even config files etc should be handled by some form of config management - chef, puppet, debian config packages, etc
You don't need to do those things to use vim. It just has a kind of steep learning curve -- one that has to do with just getting used to its keybindings (ie, nothing to do with PhD level cs or writing compilers).
Vim is actualy pretty easy to use, the learning process is not hard at all you could just go through the vim tutorial that comes with and you will in good shape in no time.
I'm sure it's not terrible to use, but I'm not sure it's worth it for a caveman like me to put time into learning it. Sublime Text and Brackets already work very efficiently and allow me to focus on getting things done.
Of course, PHP people probably said the same thing when Rails came out. The difference is that current GUI editors are already very advanced. I'm skeptical that I would get any efficiency boost from vim (at least anytime soon).
One reason I like using Emacs is that I can run it in a terminal - e.g. over ssh. I am skeptical I'll be able to do that with Atom (without using X forwarding).
On top of that I can be up and running with Emacs on a fresh install of just about any linux distro: install via the distro's package manager, drop in my configs, done.
The big difference from my perspective is that Atom isn't currently FOSS. Other than that, the maturity of the emacs ecosystem is both one of its greatest features and a bit of a curse.
The non-FOSS part is the part that bothers me the most. Maybe bothers is too strong a word. It's just hard for me to get into a text editor without knowing that the community could pick it up and run with it, if the originator dropped it.
Not sure if that's an unfounded fear, but I don't want to invest time customizing a platform and writing plugins when it could close shop in a second. I suppose I could say that about a lot of things I do customize, but it's hard when the FOSS text editor world is so rich.
40 years of legacy decisions can be a huge weight on a project, but reinventing a newer, rounder wheel has pitfalls as well. I'd love to say 'I want a modern version of emacs' (or, in my case, vim), but I'd be terrified that I'd end up with a TextMate2-style second system syndrome.
It looks like the GH guys have worked around this problem quite well, and I'm looking forward to begging, borrowing, and then just begging again if I get a chance to try it out.
This sounds like a very promising tool. I'm really excited to hear all of the talk about extensibility.
One thing that is conspicuously absent is any mention of it being open source. I can certainly appreciate that Github is for-profit, but I would love to have a clearer idea of how free / not-free this tool will be when it is publicly available.
Maybe it's not true of all JavaScript GUI apps, but almost all the ones I tried are hecka sluggish for things like drag+drop. I could see that being a problem with tabs in this case. Plus I'm concerned about the CPU on my poor little MBP, Chrome usually eats it all the way up, is that somehow mitigated in Atom?
I will switch to this if it is as good as Sublime Text, but with a more open API. Sublime Text's API is too restricted, and there's a ton of things I want in Sublime Text that IDEs have.. but I don't want a full-blown IDE.
Take the overall diff bar of most IDEs for example (Jetbrains, Netbeans, etc.). I want that in Sublime/Atom. There is a plug-in for Sublime to show diffs per line, but no way to manipulate the mini-map to show diffs at a glance.
I'd think it's not a requirement for OSS (look at textmate, sublime) but as new comers hit the store it would be nice to know it beforehand and have an expectation of what would come. Since for people writing addons it would be a decision-maker.
What most people wouldn't like to see are yearly subscriptions of another editor or paid upgrade every 18-month. I could personally bear with textmate and sublime for their current licensing (personal => works on as many computers I have - which I have at least 4)
For OSS ones, we have the traditional ones like emacs, vim, eclipse, and newer ones like brackets (which also sold as paid editor as Edge Code CC), lighttable or google's half-baked collide.
Sublime has 'limited extensibility'? Package Manager lists over 2000 packages. And what about Brackets? This looks very similar - editor built with web tech. http://brackets.io/
Bracket is built on top of Code Mirror. It never feels like a native editor. If Atom is using a Webkit renderer for core editor part, I'm not gonna switch from Sublime anytime soon
Light Table is build on Node-Webkit and it feels pretty good most of the time. (Opening folders is the only spot I've found where it's like, "Wait, something is a little off here.")
I think, in the long run -3 to 5 years-, Jon Skinner -Sublime Text- will be leading, like now. I can clearly see his passion and investment in his product.
People at GitHub are also great, well funded, but this is not their core product. Do they have a leader -I don't know if they have or not- who will be focusing only on this product and keep up with jskinner?
I am sure Atom will be around for long years, as well as Sublime Text. Thanks to GitHub, I am looking forward to give it a try.
actually I was expecting a comment on that one :) don't you think the time frame narrows on predicting the future on topics like these -web, desktop or mobile applications-?
I am not arguing that Sublime Text is the best -because I am not that pro-, but I can assure you it is hot right now, all around the world. It may be wrong, but all cs students and developers I personally know in 4-5 countries use it, like it. Most of the online courses tell their students to use it. It is highly recommended, all over the web.
It could be a matter of scratching your own itch: they're likely to write a lot of code and perhaps they were not satisfied with any of the existing one, and the instinctive solution for us devs it to make your dream software when none fit :)
I hope that this spurs Jon on to continue working on Sublime Text and start to be more transparent with what development is ongoing etc. See the forums for recent outcries.
I thought this was an open source project, but when I read FAQ beta version is only out for OSX and they talk about charging for it so it probably wont be open source.
You know, I'm usually very skeptical of web apps, but building a text editor in WebKit actually seems like a really good idea. Everything a browser should be good at — text display, scripting, styling — also applies to text editors. You don't really have to worry about complex UI, animation, or user input. You also get remote access almost for free.
What other text-centric apps can be made better by a browser framework? Maybe the terminal?
So why is every text editor I have ever seen embedded in a website an abomination?
> text display, scripting, styling
The only thing that really matters is scripting. Every serious editor has solved displaying text and styling since ages and those two points aren't even that important in programming languages. All you want is a syntax aware highlighting. Maybe underlines and a little bold here and there.
Scripting is the really hard part. There are many flavors, languages, APIs to chose from. Just because you now can script things in <hip-language-of-the-day>, the problem isn't solved. My editor uses a lisp dialect and I'm perfectly happy with it, not because of the language choice but the APIs and amount of integration.
One thing that is incredibly important for text editors is speed: something web engines are notoriously bad at.
> So why is every text editor I have ever seen embedded in a website an abomination?
Because most websites use contenteditable for their rich text editors, which is horrible to deal with. It's not standardized, it gives developers very little control, and its output and capabilities vary a lot from browser to browser.
Web rich text editors that don't suck - e.g. Google Docs - bypass the browser's support for rich text editing entirely. This makes them usable, but it also means everything has to be implemented from scratch, so the code is complex. AFAIK there are no general purpose rich text editors built like this that are open source or even licensable.
There are some pretty good non-contenteditable code editors, though. Presumably Atom will be built in this style.
"Every serious editor has solved displaying text and styling since ages ago..."
Sure, but why reinvent the wheel? In this case, Github is leveraging a technology specifically optimized for text and styling. They don't have to maintain it, and they get a lot of cutting-edge optimizations for free. It also gives them the freedom to do some crazy things that would otherwise be very difficult — see Light Table.
"...and those two points aren't even that important in programming languages."
I disagree. Efficient text display and presentation in a text editor are very important, at least for me. Not that scripting is any less important, but it looks like Github has that front covered as well. (Then again, I've never been a heavy vim or emacs user. I guess I'm what you might call a "filthy casual".)
"One thing that is incredibly important for text editors is speed: something web engines are notoriously bad at."
I was under the impression that web engines are really good at text when there's not a lot of other crazy nonsense going on. Guess we'll see!
"So why is every text editor I have ever seen embedded in a website an abomination?"
My guess is going (partially) native and using Node.js will make the experience a whole lot better.
HTML's not good at windows, apps, doesn't have any sort of concept of a widget and has the kind of layout rules you'd have a tough time beating if you were sitting there trying to be deliberately malicious to future programmers.
It's not a good idea, but given the abysmal state that desktop apps seem to be in at the moment[1], it's probably the least bad idea.
[1] Been about 5 years since I did a desktop app, but if anything they look to be getting worse. WPF, flop. Flex, flop. GTK+ looks poo. If I had to do a cross platform desktop app, I wouldn't even know where to start.
I agree with you, but I don't think most of those things are really vital for a great text editor. For the most part, it's just a giant window with your text in it, maybe a sidebar or two. Most of the magic happens under the hood. That's why I think this is a good idea.
Dunno about cross-platform app development, but Cocoa on OSX is pretty nice. QT isn't bad either, from what I've tried.
The editor looks good. I'm more excited about the fact that this is a good looking desktop app, built using, what are normally considered, web technologies.
Check out Brackets (http://brackets.io/) and Eclipse Orion (http://eclipse.org/orion/) who both have been trying to build fully open editing experiences. There are more out there but those come to mind.
Would be nice if more people started working together on these things...
I hate to say it, but honestly, I think Atom is probably going to be my next full-time editor. The purist in me hates the idea of running such a powerful rendering engine inside a desktop app, but all desktop GUI toolkits have proven that they really really suck at text editing (I've tried almost all of them). This is probably the best way forward.
When I saw a screenshot, I was put off by the ugly tabs. So I made a theme for flat tabs[1]. You can install it by going to Install Themes in the app and searching for "flat". It's called "Atom Dark Flat UI".
Last thing I need is another editor. Having said that, I will for sure examine and give a fair chance to anything you produce.
I am a vim user, I recently learned a lot of power moves in SublimeText and this is my go-to editor now. Making me use anything else would be super difficult but not impossible. Price is not the issue.
So this it yet another web base text editor like Brackets and LT, one have it's "live-reload" feature the other his "live-code-evaluation", and which is the selling point for this?. Going throught the website it just give me the idea that is a what i mentioned before.
I'm willing to bet anything that just like Sublime was FOSS cloned to Lime (https://github.com/limetext/lime), this as well will be cloned as FOSS, if it is any good, that is.
Bespin, Skywriter, Ace, Brackets… now Atom. Everybody seems to be having the same idea: that browser based technologies are the future for code editors.
I for one am more enticed by the possibility of a WebKit frontend, with a NeoVim core and a libuv backend. Finally, Vim as an embeddable library.
I see people saying they get into the beta within 15 minutes of signing up, but I still haven't gotten one and I signed up day 1. Anybody have an extra invite they're willing to spare? Email in profile. It'd be much appreciated!
It may have to do what ST3 did and queue loading of plugins after startup, instead of all at once before the editor is "usable". If they do that it could start up nice and fast in theory, though we obviously don't know what else it's trying to do yet.
I use github and do a fair amount of Ruby, but I can't say I find Atom to provide enough benefit to move from a native option. I would have to see it used in more example cases to make that leap.
I've been wanting, for a long time, to be able to have custom UIs to websites (just like how video games do it). If this is a step in that direction for github, I will be very, very happy.
Having used it for the past couple hours, it looks great! It is pretty intuitive, snappy, and looks great. I'm definitely looking forward to using it more.
You seem to oddly out of the loop here. Atom has been released for Mac only (private beta that too.) Linux, Windows builds are coming up, by their own admission. (My source? IRC and Discuss from atom.io footer.)
Besides, for the tech purported to be behind Atom: node-webkit, There would be no additional costs or efforts required to get it running on Linux.
If it is, as it appears, node + node-webkit, it might not be all that hard to build a web version, particularly one for Chrome/ChromeOS, since it would mostly be an app written to run on the same JS engine used in Chrome that already uses Chromium for its UI.
The moment that their new editor provides some piece of Github functionality that isn't exposed to an open API is the moment that we need to bail, en masse.
We've already killed Freshmeat and Sourceforge for turning lame, this shouldn't be hard.
------
Hearing a disturbance, the master programmer went into the novice's cubicle.
"Curse these personal computers!" cried the novice in anger, "To make them do anything I must use three or even four editing programs. Sometimes I get so confused that I erase entire files. This is truly intolerable!"
The master programmer stared at the novice. "And what would you do to remedy this state of affairs?" he asked.
The novice thought for a moment. "I will design a new editing program," he said, "a program that will replace all these others."
Suddenly the master struck the novice on the side of his head. It was not a heavy blow, but the novice was nonetheless surprised. "What did you do that for?" exclaimed the novice.
"I have no wish to learn another editing program," said the master.
And suddenly the novice was enlightened.