The Web Doesn't Suck. Browsers are Innovating.
yehudakatz.com
yehudakatz.com
for the developer:
- distribution is easy. buy a domain name.
- agile, iterative development is possible. you can ship a MVP, and push updates frequently and easily.
- greater reach. developing one web app (possibly with a mobile web version) is more efficient than creating a windows, mac, linux, iphone, ipad, android, etc
for the consumer:
- no installation necessary.
- updates are invisible. I'm pretty good at keeping my software up to date, but I just looked at my iPhone and I have 22(!) app updates waiting for me. It's a chore to keep up with that.
- accessible from any computer.
As new browser technologies (HTML5) allow developers to utilize more of the computer's powerful hardware (local storage, GPU acceleration, etc), I think native desktop/mobile applications will become even less necessary. You couldn't pay me to use an existing desktop mail client over Gmail.
While some applications will be slow to move to the web for obvious reasons (intensive audio and video production), I don't see any reason why ChromeOS (or the browser-based OS) won't be a huge success.
So, I understand having your email everywhere. That is a killer feature. But you can also provide that feature by simply having a web gateway to your IMAP mail.
What exactly is the killer feature of gmail? The tagging is nice, but other programs have similar features. Teh spam filtering is nice, but actually there are better spam filters. The only thing I can think of is the integration with google docs and I actually hate that feature. I don't know how they managed it, but opening a pdf with google docs is about 5x slower than downloading the pdf and opening with evince. So, it's pretty much a non-feature unless you can't be bothered installing a pdf reader.
I guess I find gmail useful, but I'd still rather use a normal email client if for no other reason than interruptions in my network connection don't affect working really.
Sure, if you have the time and patience to constantly maintain your servers, and you think your web gateway's UI is as good as Gmail (I don't) then go for it. I want to spend my time doing actual work though.
> but opening a pdf with google docs is about 5x slower than downloading the pdf and opening with evince
And yet I keep using their preview feature because it somehow feels faster than opening it in a native app. The actual stopwatch time doesn't matter, it's the perception.
I think this is the reason why people like Gmail so much: it feels fast, it feels comfortable to use. It's not so much the features; strip out a few features and I'd still use Gmail.
Other than reasons you already iterated, the killer feature for me, the one I truly cannot be without, is the threaded conversation view. I know some desktop clients have threaded views, but unlike Gmail's implementation, they suck.
In addition, there are a ton of innovative small features (especially in Labs - Don't forget Bob!/Got the wrong Bob? have saved my ass multiple times with new clients) that I just don't see other e-mail clients implementing, and they're constantly rolling out new ones. The fact I can get the exact same functionality on any computer I happen to be on is just icing on the cake.
Ultimately: it feels like desktop clients have largely stagnated, while Gmail has an incredibly effective way of thinking about e-mail.
Another feature I like with Outlook 2010 is to see all correspondence from the person I'm currently looking at (email, meeting invites, chats, etc...).
There's also this cool thing called Quick Steps, where you can construct macros in Outlook. This is useful when you need to have specific workflow around email that you can put together in one click (like, when responding to legal, I need to send the reply, delete the original email, send another email to my manager, and send a note to OneNote).
And of course Outlook has a webclient, so I can access it from anywhere too. While Outlook is heavyweight, feature-wise, its pretty complete, and offers some other things that are hard to beat.
We can use Javascript.. or flash.. or Java applets (which really is't much of contender these days). Thats more or less it. Yes, theres a few projects which translate Java or Python to Javascript, but you're limited to whatever they can piggyback on top of Javascript.
Thats not much of a choice and yes, I dislike that this is my only choice for client-side programming. What if the Javascript VM ran bytecode instead, like the JVM or CLI? Then plenty of other languages could target the browser and we'd have more choice, flexability and innovation.
Javascript serves it purpose of client-side web scripting well enough, but with the whole move to the web, its a little ridiculous that this is almost the only choice I have. The great thing about desktop programming is the wealth of different languages I can use - C, Python, Ruby, Erlang, Haskell, Clojure, Prolog, F# and so on.. thats a nice bit of variety! Different languages are good and bad at different things, forcing everyone to use one is not, IMHO, a good thing and, contrary to what Javascript fanboys say, the language is not perfect or suited to everything you may want to do in a browser (which is becoming increasingly more).
You can set filters that label each message based on sender, or any search really. For example to:main@gmail.com gets labeled and color coded.
You can set up multiple inboxes for your accounts.
Also it's easy to switch between accounts when replying, to reply from a different address for example.
Gmail is just too good for me not to use it, but use whatever works for you.
Quite a number of years too long. Let's take drag-and-drop -- how long has that been around? Decades? And it's only now that we can drag and drop attachments into emails in a handful of webmail clients? That's not innovation, it's playing a really slow game of catchup.
I agree that 'browsers are innovating' -- but it's at a snail's pace at best.
Version Tracker and all are great, as are traditional package managers, but they still can't match the UX of web apps in that area.
They are just different, each with their strengths and weaknesses. It seems like it's going to be easier and quicker to get web apps on feature parity with desktop apps before the desktop catches up in the ways it is behind.
> Some browers now automatically populate a home page with your most commonly used apps/sites.
This is exactly what I mean. Now? This could have been done years ago. Don't even get me started on the bookmarks system (offline and online both). There are innovative things that can be done with these simple aspects of web interaction that could have been done years back -- it's not like there's some miracle tech that is making new stuff possible. UI designers as a group (or maybe more fairly, the companies that employ them) have, in my opinion, been inexcusably lazy in regards to pushing forward the computer user experience.
If you think of the web platform in terms of how good it is at building desktop applications, then you will see many valid weaknesses, but you will completely miss many important strengths. Clay Shirky makes this point better than I can: http://www.shirky.com/writings/evolve.html
Browsers have been innovating, just not where you might be looking. One type of innovation that's totally invisible from a "competing with native apps" viewpoint but really useful in terms of the web's strengths is Cross-Origin Resource Sharing (CORS). CORS has been a draft spec for a while and is now implemented by most major browsers. With CORS and other standards it's influenced (like WebSockets), a web page can send and receive data to multiple sites while still remaining in the browser's same-origin sandbox (which means users don't need to trust it any more than a regular web page).
That security sandbox is a unique strength of the web; average desktop users still need to trust every application developer with complete access of their computer. This is an area where native platforms are playing catch-up to the web - iPhone and Android have finally brought this level of sandboxing to mainstream operating systems, a decade after it evolved in web browsers.
Let's say I'm one of those wackos who keeps a zillion files on my desktop. I want to upload a picture to imageshack or whatever. The way we've been forced to do this for years now is to click the browse button on the webpage, navigate to the desktop folder,and finally scroll down through a zillion files to find the one image I want to upload.
Or, you could just drag the image file from the desktop to the imageshack page and it would Just Work.
I realize there are apps that let you do this kind of drag and drop uploading, but that's exactly the point -- apps did this easily, so there really was absolutely no reason for it to take years for drag and drop to finally make it into HTML.
Thinking in terms of desktop vs mobile is narrow-sighted. What's at stake here is pushing forward the browser (aka: web) interaction experience, regardless of platform.
Sounds to me like the popular Windows desktops are the ones innovating at a snail's pace. Perhaps not coincidentally, I'd blame the same party for holding back the web.
I don't think that it's just browsers that aren't innovating -- desktop UIs have been stale crufty shit for years. OSX may have had some improvements but it's still a lot of cruft. Ubuntu seems to be doing some interesting things recently, but that doesn't get linux off the hook for not doing interesting things earlier (and I'm speaking here about average-user-friendliness, not cool stuff for us hacker types).
To be honest, I think a lot of the innovation in mobile UIs has come from the fact that it was hard/impossible to port over the old UI, so they actually had to think up something new. Touch and form-factor are just the constraints that forced people to actually think about UI. Desktop UIs could be orders of magnitude better if the OS shell teams were put in the same situation.
What are these orders of magnitude you speak of on the desktop side? I don't frequently find myself wishing OS X did much differently.
As for the desktop, a lot of where I see potential is in interactivity between programs. Pretty much any time there is interactivity between programs these days it's because the application developers programmed it in, and I think there's a huge opportunity to weave application interactivity into the desktop shell itself, so that things Just Work, without everyone having to code that stuff up all the time.
There's also, in my experience, a crapload of user time wasted doing menial things like window management that doesn't need to happen.
Those are just a few things -- don't want to give away all my ideas...
As for the menial tasks, I do next to no window management - my screens are completely unorganized, but a combination of Expose, alt-tab/tilde, and Quicksilver tend to make that a nonissue.
As for windowing systems, I think they're all terrible. I think they were good at the point where computer's couldn't really manage to display more than a few windows on screen to begin with. However, modern computers can display hundreds of windows simultaneously, and windowing systems are all playing catch up with how to handle that, rather than rethinking the basics of how to interact with lots of data.
Another example is tabs in the browser, which is a microcosm of what I'm talking about with windowing systems. Tabs are an awful awful user experience once you get past 4-5 open at once. But they're way better than separate windows, so everyone loves loves loves their tabs. But tabs are awful. I'd explain exactly how to make it better, but that's the exact project I'm working on right now, so I'll just say that the solution I have for browser tabs applies just as well to desktop windows.
I'm really not a Mac person, but you're right about Expose and I do get jealous of that. I've used Expose a bit on the Macs in my university, but as a hacker/sometimes game modder, I often get into situations where I have several explorer windows open, with several files in each of those folders open, in addition to whatever browser windows or IDE/text file windows I might also have open. Managing those is a pain. I don't see how Expose or alt-tab can help with 20 odd windows on screen. (Quicksilver seems to be a keyboard centric program, and I'm that rare hacker who favors the mouse).
Here's the other thing -- is the Expose code really that complicated? Not really. In fact, to me it seems like something you should be able to tell your desktop shell to do without needing to know how to code it, and without installing some addon that someone else coded for you. There are countless other minor UI tweaks that any random user could think up, but that they can't actually get their OS to do without getting someone to code it for them. Even take the earlier example of dragging a file onto the file browser dialog. It's great that OSX has it built in. And yet it's so ridiculously simple to implement that I don't understand why I can't just tell Windows: "When I drag a file into this text box, copy in the location of that file". Instead, users have to sit around waiting for the shell-masters to approve minor improvements to the UI/UX. Imagine if there was something like Greasemonkey that worked on your desktop shell, but didn't require you to know even the basics of programming. I don't know if that sounds to you like I'm talking insane-fantasy-world here, but I've got some solid ideas on how to implement exactly that.
One the laptop I'm using right now I'm running a window manager called Awesome (its a silly name, I'll agree) that actually assigns one or more tags to each window and displays a set of tags to the main screen at once. Mostly I just have one tag per window and display one tag at a time and it ends up working like multiple workspaces, but sometimes I'm working on something where I want to toggle another window in and out repeatedly. Since Awesome has a tiling as well as a stacking mode, when I toggle the new window in all the other window rearrange themselves to accommodate it And using a tiling window manager makes it easy to do everything with the keyboard instead of having to use a mouse though you can use your mouse too if you really want to. Thanks to that and vimium I'm not sure I've had to touch my mouse yet today.
What makes drag and drop more usable than the browser's file selector dialog? Using your example:
For drag and drop you would have to minimize the browser to see the zillion files, scan the icons that are in some random order to find the file and then drag it to your browser.
With the file selector it's a few clicks to get an organized list, a flick of the scroll wheel and a double click to open.
I'm not convinced that drag and drop is any easier or more convenient, it actually seems like more effort.
Yet another example is "viewport" meta tag, which Mobile Safari introduced, Android later adopted, and which we (Mozilla) are now adding to mobile Firefox. There's no spec for this anywhere; it will probably be implemented in half a dozen mobile browser engines before even a draft spec is written.
Now, it's clear from all these examples that Sachin and Joe's description of the situation are factually wrong. But that doesn't mean they don't have a point. The problems they feel with web development may indeed exist, but with some other cause than the one they imagined.
People say "it's all well and good that Mobile Webkit has hardware accelerated transforms, but I can't use it in IE". In other words, people are (correctly) seeing that despite the rapid innovation, the lowest-common-denominator of browsers in use is changing rather slowly. And that's frustrating.
Apple's work on Mobile Safari clearly puts the lie to Joe's argument about browser innovation on the iPhone (which is where his experience lies). I see plenty of evidence that Apple and others are improving the underlying browser engine, and that Apple is adding mobile features to their iPhone browser, and no evidence to the contrary.
How much is the difference between DirectAnimation from IE4 and WebGL?
And CSS filter from transition/transforms/animations/whatever?
And XML Data Island from E4X?
As a matter of fact, the whole concept of DHTML was introduced by Microsoft, including AJAX, which first appeared as msxml in IE5.
I don't get your first sentence. First you're claiming that people accuse MS of violating standards when they add things, and then you claim that people have adopted some of Microsoft's add-ons, thereby contradicting your first claim?
Unless there are specific patents or Apple like TOS, it seems like this stuff is fair game. We shouldn't let laziness allow us to say something is not cross-platform.
I'm sorry to be negative here, but I think a huge contributory factor in the glacial pace of the Web's development is the staggering lack of perspective repeatedly demonstrated by those who are leading that process and/or evangelising the Web as a general purpose software platform. At a time when the leading edge is considering controlled side effects and transactional memory, the Web is learning about having multiple threads and doing message passing. At a time when the leading edge is using GPUs to accelerate not just graphics but intensive computations generally, the Web just learned how to do a basic 3D rotation matrix.
In a full game of Go, there is a 19x19 grid of positions on the board. When a weaker player has a game with a stronger one, it is traditional to let the weaker player start with between 1 and 9 extra stones on the board as a handicap. More than 9 stones, on a board with 361 positions, is considered unnecessary because at that point it's not a competition at all, it's just a tutorial by the more advanced player for the benefit of the beginner. Just a thought.
Even facebook is one big application based on messy technology. They can cope with it only because they have lots of Ms.
You can't fix it by extending crippled java script whose name has a misconception to begin with.
Let me give you an example: In 70s operating systems were built as ad-hoc services on top of the hardware. Functionality was implemented in ad-hoc fashion, interfacing to each other in afterthought, clunky ways. Then came Unix, and eventually evolved the design by bundling the filesystem, disk IO and process memory management in one implementation. We need someone clever to do the same to web and relieve us from this mess.
And the reason why that answer is no is mostly because of older versions of IE.
If you really need to reach IE6, use libraries like IE7.js and gracefully degrade your feature implementations, but don't hamper the experience of your more savvy users.
Yes! IE 6 was initially released in 2001!
That's about 100 years in Internet Time. Screw it.
I imagine a possibly small but definitely vocal group of users, too. Not everyone thinks whatever the browser maker thinks is newest and greatest actually is the greatest.