As mentioned by others in previous threads -- even with the web's shortcomings vs. desktop (or native OS) applications, the web still has major advantages for both the developer and the consumer.
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.
"You couldn't pay me to use an existing desktop mail client over Gmail."
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.
As far as I know, the way Gmail handles conversations and archiving is unreplicated by any desktop client, and single-handedly the most powerful thing about Gmail. I now have a regular habit of archiving any message that doesn't have an actionable item, decluttering my inbox. If another message should arrive in a thread, I have the entire conversation history right there. A good desktop app could replicate it, but I could see this behavior being difficult to map on top of a standard IMAP server.
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.
Have you looked at Outlook 2010. They have a similar conversation view. Outlook also gives you the ability to respond to mail with a phone call (Google must have this capability with Google Voice, but don't see it).
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.
You couldn't pay me to use an existing desktop mail client over Gmail, either.
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.
While I prefer Mail.app aesthetically and for the purposes of OS integration, the thing it really can't beat Gmail in is speed. Search is incredibly fast (as one may expect), but also workflow: almost every action is a keyboard shortcut (or two) away. I'm not aware of any other web gateway that has these shortcuts enabled.
That web gateway has to be maintained and that is one of the biggest drawbacks over a hosted service like Gmail. If you don't constantly upgrade your server and your software one day you'll get rooted by some exploit bot.
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.
Yes! And the Android back button as another example of operating systems playing catch-up to web browsers. (Clearly the innovation and imitation is flowing in both directions.)
Heh. You couldn't pay me to use GMail over Thunderbird. Thunderbird may not have the fancy conversation stuff, but GMail has no reasonable way to deal with the four separate accounts I use for various things.
Funny, that's why you couldn't pay me to use Thunderbird over GMail. Incidentally, if you are interested, there are ways to manage multiple accounts, though they're a bit clumsy. Basically, you can have GMail download your other email accounts through POP (or have them forward to your gmail account). Then in gmail you can create a rule that automatically labels email from that account appropriately and create another inbox to handle just that mail. Finally, it lets you set up an alternate sending address, and you can set it to always reply with the same email that the original was sent to.
I understand that people are attached to Javascript, but I don't know why someone would downvote because of that. I didn't mean it as a jab at Javascript, but an observation that we're extremely limited when it comes to client-side programming language choice.
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).
"...and the WHAT-WG has been busily standardizing, all of these things for quite a number of years now."
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.
Imitating desktop platforms has never been the strong point of web sites and web browsers.
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.
It's not about imitating a desktop application, but about having a usable interface with one. For example:
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.
Safari has done this for as long as it has existed, since the ability is baked right into Mac OS X. Open any file dialog (or the terminal) and dropping files on it works the same as navigating (or typing) the hierarchy to that file.
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.
You're right, and it's insane that you can't drag a file to the browser dialog on windows. But that doesn't make it less insane that you couldn't drag a file directly to a webpage until just recently.
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.
Keep in mind that iPhone just happened to be a breakthrough in phone UI. Windows Mobile has been around for many years before the iPhone was more than a dream in Jobs' head. It's only recently that smartphones have actually become usable and not just frustrating toys.
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.
The iPhone illustrates exactly what I mean -- Windows Mobile is an example of trying to port Windows (and all it's associated cruft) onto the phone. It's better than it was, but it's still pretty terrible and a lot of that has to do with its legacy. For iPhone they really sat down and thought, what actually works on a smartphone? This took a long damn time as far as I'm concerned. I have a motorola phone from 2008 and the interface is godawful and makes me want to tear things apart every time I have to navigate its unwieldly menu system. My previous phone was from 2004 -- there was almost no improvement from one to the next.
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...
Right, but how do you see that happening with desktop OS's? Their limitations were already largely thought through at Xerox PARC decades ago, and that's how the mouse and windowing systems were born - they're very good methods of dealing with the limited screen real estate. If anything, there are less limitations on them now. Touch tablets are potentially an area for expansion, but I don't know that I've seen anything that warrants a radical change on the desktop.
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.
The mouse is pretty good, but I think in many ways it has been abused as an interface device. Now, it's a slightly different story for Macs since you all went years with only one button, but for the rest of the world there were multiple buttons, and while we can all generally agree what a left click should do, the other buttons are a complete mess. Programmers basically make them do whatever the hell they want them to do, and in doing so make software designed for multiple mouse buttons dramatically harder to learn intuitively. So that's one point where the desktop experience could be improved.
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.
If I might ask, what windowing systems do you have experience with? While its true that desktop Linux has been lagging behind in a lot of areas it seems that a lot of innovation in window managers is happening there. Having multiple workspaces each with its own reasonably sized set of windows really eliminates the need for expose for me. Well, thats how it is at work where I use a default GNOME workspace.
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.
Mostly Windows on a daily basis, although I have used linux and I've done a bunch of research into the various window management systems linux offers, including Awesome. The window tagging thing you're talking about is definitely a step in the right direction -- what I'm envisioning is something along those lines, but more naturally integrated into the shell.
> Or, you could just drag the image file from the desktop to the imageshack page and it would Just Work.
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.
The zillion file person was a hypothetical, but I'll give you a real world example: I use two monitors, and I tend to arrange files I'm working with into groups on the two desktops. I have the browser open in one window, and since I know what the groups are (and they're arranged to not overlap with my browser window), finding a particular file that I would want to drag to imageshack takes a fraction of a second, drag and dropping would take another second max. Finding the file in the browser dialog ignores all the grouping and placement I have done on the desktop and just sorts things by filename. It takes significantly longer for me to find files with that dialog than the 1.5 seconds to drag a file to firefox.
Fair enough. If you've taken the time to organize the icons, you probably know where everything is. But when I think of some one with a zillion files on their desktop, I picture a disorganized jumble of icons. Plus the second monitor probably helps. Different strokes for different folks, I guess.
I guess it depends on your frame of view. Web apps have advantages over traditional desktop software, such as no installation required and upgrades by hitting refresh. Don't underestimate the power of users being able to just try your app by surfing to a URL, and "installing" it by remembering the URL (which the browser does for you), or bookmarking it. Some browers now automatically populate a home page with your most commonly used apps/sites. If you think about it Google is like a big web app store.
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.
Web Apps do have advantages over traditional desktop software -- what I'm trying to get at is that we can take what we've learned about web apps, and apply that knowledge to 'traditional' software to get desktop apps that don't suck. It doesn't have to be about web apps vs desktop apps, or one catching up with the other. Within a few years I don't think there will even be a concept of desktop vs web apps, not because one killed the other, but because they will have been integrated.
> 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.
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.
@mbrubeck I totally agree that there is a real problem, but from all the responses, I think it's actually the opposite of what they're saying.
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.
Many Microsoft add-ons are inherently Windows-specific. DirectX cannot be implemented in a reasonable manner on any non-Microsoft platform. The same can be said for ActiveX, which depends on COM which is huge.
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?
Why can't you implement COM cross-platform? And the same with DirectX? Both of these seem pretty well understood and the object surface can be implemented without knowing the internals (although with COM the internals and the surface go hand in hand, although object layout and such is well documented).
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.
No, but innovation limited to single platform is violation of standards and used to rack profits from the lock-in. But cross-platform innovation can lead to easily adoptable new standards.
I would say that's a fair statement. Much of the impetus behind of innovating outside of standards is the idea that it may one day be incorporated into a standard. It's hard to define a standard that cannot be reliably implemented across platforms.
I think most complaints I have seen/heard about IE are not about innovation but about violation (of standards) either by deviating from what the standard says or simply not implementing certain portions. Innovation without violation is great for developers.
Articles like this are part of the problem. Here we have someone quite sincerely claiming that the Web doesn't suck as a platform compared to using native applications, because the Web can do things like drag and drop. Just stop and think about that for a minute. The author is arguing that the Web platform doesn't suck because at some as-yet undetermined point in the future, some browsers will be able to do some things that desktop applications on every major platform have taken for granted for well over a decade?
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.
Web sucks big time with its plethora of different technologies and architectures being bundled together in ad-hoc and unintuitive ways. The next Google is going to be founded by the web architect who builds a framework that solves all this heterogeneous, complex development environment with a clean, structured, portable and open solution.
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.
The answer is yes, but not all of your users will benefit if they use their current browser.
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.
Pardon my ignorance, but why don't all browsers auto-update to the latest stable version, even without user permission? Because I feel like the one thing that really holds back web techniques are old browsers (IE6, IE7, Firefox2, etc.)... Imagine if everyone already had CSS3 and HTML5 right now?
For better or for worse, anything that autoupdates without asking for permission is an absolute non-starter in enterprise.
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.
I once thought of a browser UI feature which, when enabled, makes broken links (eg, links leading to 404's) crossed-out as text links, and with a red border for image links. But nobody would implement this. But I guess I could make a plugin.
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.