One of the things I like most about Google's Chrome web browser is how often it is updated. But now that Chrome has rocketed through eleven versions in two and a half years, the thrill of seeing that version number increment has largely worn off. It seems they've picked off all the low hanging fruit at this point and are mostly polishing. The highlights from Version 11, the current release of Chrome?
HTML5 Speech Input API. Updated icon.
Exciting, eh? Though there was no shortage of hand-wringing over the new icon, of course.
Chrome's version number has been changing so rapidly lately that every time someone opens a Chrome bug on a Stack Exchange site, I have to check my version against theirs just to make sure we're still talking about the same software. And once -- I swear I am not making this up -- the version incremented while I was checking the version.
That was the day I officially stopped caring what version Chrome is. I mean, I care in the sense that sometimes I need to check its dogtags in battle, but as a regular user of Chrome, I no longer think of myself as using a specific version of Chrome, I just … use Chrome. Whatever the latest version is, I have it automagically.
For the longest time, web browsers have been strongly associated with specific versions. The very mention of Internet Explorer 6 or Netscape 4.77 should send a shiver down the spine of any self-respecting geek. And for good reason! Who can forget what a breakout hit Firefox 3 was, or the epochs that Internet Explorer 7, 8 and 9 represent in Microsoft history. But Chrome? Chrome is so fluid that it has transcended software versioning altogether.
This fluidity is difficult to achieve for client software that runs on millions of PCs, Macs, and other devices. Google put an extreme amount of engineering effort into making the Chrome auto-update process "just work". They've optimized the heck out of the update process.
Rather then push put a whole new 10MB update [for each version], we send out a diff that takes the previous version of Google Chrome and generates the new version. We tried several binary diff algorithms and have been using bsdiff up until now. We are big fans of bsdiff - it is small and worked better than anything else we tried.But bsdiff was still producing diffs that were bigger than we felt were necessary. So we wrote a new diff algorithm that knows more about the kind of data we are pushing - large files containing compiled executables. Here are the sizes for the recent 190.1 -> 190.4 update on the developer channel:
- Full update: 10 megabytes
- bsdiff update: 704 kilobytes
- Courgette update: 78 kilobytes
The small size in combination with Google Chrome's silent update means we can update as often as necessary to keep users safe.
Google's Courgette -- the French word for Zucchini, oddly enough -- is an amazing bit of software optimization, capable of producing uncannily small diffs of binary executables. To achieve this, it has to know intimate details about the source code:
The problem with compiled applications is that even a small source code change causes a disproportional number of byte level changes. When you add a few lines of code, for example, a range check to prevent a buffer overrun, all the subsequent code gets moved to make room for the new instructions. The compiled code is full of internal references where some instruction or datum contains the address (or offset) of another instruction or datum. It only takes a few source changes before almost all of these internal pointers have a different value, and there are a lot of them - roughly half a million in a program the size of chrome.dll.The source code does not have this problem because all the entities in the source are symbolic. Functions don't get committed to a specific address until very late in the compilation process, during assembly or linking. If we could step backwards a little and make the internal pointers symbolic again, could we get smaller updates?
Since the version updates are relatively small, they can be downloaded in the background. But even Google hasn't figured out how to install an update while the browser is running. Yes, there are little alert icons to let you know your browser is out of date, and you eventually do get nagged if you are woefully behind, but updating always requires the browser to restart.
Web applications have it far easier, but they have version delivery problems, too. Consider WordPress, one of the largest and most popular webapps on the planet. We run WordPress on multiple blogs and even have our own WordPress community. WordPress doesn't auto-update to each new version, but it makes it as painless as I've seen for a webapp. Click the update link on the dashboard and WordPress (and its add-ons) update to the latest version all by themselves. There might be the briefest of interruptions in service for visitors to your WordPress site, but then you're back in business with the latest update.
WordPress needs everyone to update to the latest versions regularly for the same reasons Google Chrome does -- security, performance, and stability. An internet full of old, unpatched WordPress or Chrome installations is no less dangerous than an internet full of old, unpatched Windows XP machines.
These are both relatively seamless update processes. But they're nowhere near as seamless as they should be. One click updates that require notification and restart aren't good enough. To achieve the infinite version, we software engineers have to go a lot deeper.
Somehow, we have to be able to automatically update software while it is running without interrupting the user at all. Not if -- but when -- the infinite version arrives, our users probably won't even know. Or care. And that's how we'll know we've achieved our goal.
And what's awesome is that it never (at least I've never noticed) breaks webapps that has worked on previous version. Good blog post Jeff.
rafek on May 23, 2011 4:47 AMRelease early, release often. Unless you're Google because it's getting silly now.
Oli on May 23, 2011 4:55 AMAnother thing that's great about Chrome is that it can be installed - and updated - on Windows without requiring administrator rights.
Dan Booth on May 23, 2011 5:00 AMAuto updates are definitely the way to go, it should apply to operating systems too. Gradually pushing out an OS upgrade over a few days would be much more preferable to wasting an entire day reinstalling everything.
It always struck me as irritating and time wasting that on boot Windows PCs love to pester the user about updates. It's like playing whack-a-mole fending off virus killers, Java, Adobe (oh wow they changed something niche again in the PDF rendering engine, here comes 10 meg!) and then Windows itself. It'd be much simpler if there was a standard update system built into the OS that everything had to use.
However you're seriously screwed when the auto update system pushes out a broken update.
James on May 23, 2011 5:10 AMActually courgette is the English word for zucchini. Zucchini is the American word for courgette.
David Heffernan on May 23, 2011 5:16 AMUnfortunately seemless wordpress upgrades only seem to work if you don't have plugins... otherwise they tend to fail in painful ways between major versions. I saw this a little too often when wordpress 3.1 came out. (p.s. I work in webhosting)
www.xenoterracide.com on May 23, 2011 5:18 AM@James it's amazing that more Linux users don't agree with you, what you're describing is a Rolling distribution, like Arch Linux.
www.xenoterracide.com on May 23, 2011 5:20 AMI have to admit that I can't see past Chrome - it's serious browser crack. I keep trying FireFox 4 and IE9 but Chrome is so slick, fast and lightweight compared to those bloaters. Chrome loads in the bat of an eye but FireFox's startup time is pretty unspectacular, even from my SSD, and I'd say lags behind even IE9.
Can't say I've ever been nagged to restart Chrome after an update. I like that no fuss way it gets on with keeping itself up-to-date whereas out of the box FireFox is just downright annoying and IE, well do I really need a reboot to update a browser?
Whatever trust issues you may or may not have about Google, Chrome is doing it more right by a long shot with regard to deployment and updates.
Chrome applies the same autoupdate logic to third-party extensions and apps. Anything on the web store is automatically updated in the background, using the version number to determine if a new version is available, and becomes available the next time the browser starts.
Mahemoff on May 23, 2011 5:23 AMRelease early, release often. Unless you're Google because it's getting silly now.What on earth is silly about that?
Actually courgette is the English word for zucchini. Zucchini is the American word for courgette.From Wikipedia: The word zucchini is the Italian name for the plant, which is why it is the more common name in Italy (zucchina/e), but also in North America, Australia and Germany, while courgette is the French name for the vegetable and is more commonly used in France, but also in Ireland, the United Kingdom, Greece, New Zealand, the Netherlands, Belgium, Portugal and South Africa.
Unfortunately seemless wordpress upgrades only seem to work if you don't have plugins... otherwise they tend to fail in painful ways between major versions. I saw this a little too often when wordpress 3.1 came out. (p.s. I work in webhosting)This is most commonly a problem when using poorly coded plugins or when the current server configuration causes problems (e.g. with file permissions). Tnorthcutt on May 23, 2011 5:33 AM
The infinite version number is great unless you use version numbers to differentiate between the old and the new and thus to get people to pay for the new version. Infinite version number will work for browser and webservices that are either free or charge by usage. I can't imagine it working for Visual Studio, desktop and console games, OSes etc. Unless everything switches to a service oriented system.
Tundey Akinsanya on May 23, 2011 6:10 AMIt's not hard to achieve this if you don't mind people getting source code. An update can trigger a fork that grabs a new (mercurial/git/whatever) repository and tell you upon next login "Hey, a new version is ready [click to apply]". When the person has modified something, it can tell you "We have a new version, but changes you've made conflict with it .. [click here] to learn about making changes that don't cause this in the future"
DVCS's aren't well suited for tracking large binary blobs, though.
The update, still, needs to be triggered by the user. That's one of the few things I hate about Chrome.
Tinkertim on May 23, 2011 6:13 AMXenoterracide: not really. Arch Linux's pacman repositories only cover very major software on your computer. Anything niche needs to be manually compiled or fiddled with from the AUR; then you give up on autoupdates.
[unsupported] is the web based repository that is commonly referred to as the AUR, or Arch User Repository.* Users can submit source packages containing various build files including PKGBUILDs to this repo. This is an unofficial and unsupported repository which isn't directly accessible via pacman. To install a package from [unsupported] a user would have to download and extract the source package, run makepkg which downloads upstream sources and builds the package, and finally install the built package using pacman. One of the popular AUR Helpers may be used to help with these tasks.
That's what drove me off Arch when I tried it (briefly.) Package management is a big part of Linux's advatanges over other OSes. You can achieve that more effectively on Debian/Ubuntu by augmenting the default software sources with more specialized ones like the Google Nightlies PPA... in my experience. YMMV :)
badp on May 23, 2011 6:15 AMYou should copyright the term "Hot Swappable Software" to describe your goal. If we can figure out how to hot swap a hard drive running a mission critical server, we should be able to do the same with software. My guess is that this would need to be an OS feature because you have would have to swap while it is in RAM. Although you could use the application pool concept that IIS uses, and have the next version ready to load and set the application pool to recycle after X number of minutes.
Josh on May 23, 2011 6:16 AMErlang’s runtime has robust, proven support for hot upgrades. I'd love to see that get applied to desktop software and to web servers.
Avi4now on May 23, 2011 6:22 AMZucchinA (plural: zucchinE) is the ITALIAN word for courgette. And its gender is female (like any other PLANT name in latin and therefore also modern italian).
ZucchinI is the americanized version of it - all of a sudden turned into a MALE noun. Go figure.
Daniele Muscetta on May 23, 2011 6:27 AMI read this, and wanted to comment that Erlang already allows hot code swapping right out of the box. And in the time it took me to login somebody already mentioned it!
It is probably more difficult in other languages, as Erlang's particular way of dividing a system into a number of autonomous processes with no shared memory etc makes it easy to just replace the code in a section of the application.
Given that the majority of "normals" won't be leaving the browser running perpetually with 50 open tabs like most geeks, I'd say the need to restart for updates is a minor problem at best.
If all software auto-updated as well as Chrome, I'd be a happy man.
Kevin Dente on May 23, 2011 6:43 AMThe fully automatic underwater update feature of Chrome works great. Why would you want to keep track of what the exact version of Chrome is exactly that you have installed? That's not interesting unless you're developing software that depends on features that appear in certain versions.
I've never seen that "Update and restart" dialog in Chrome. The solution to avoid this is simple: just do the update the next time the user quits / starts Chrome. No need to ask the user to do that explicitly. Note that Chrome will only display that nag screen on the About box, which you have to open deliberately. It doesn't show that at random moments while you're browsing the web.
Jesper De Jong on May 23, 2011 6:45 AMI was really wondering how bad Google is making the a feeling that things have got changed so rapidly. At the user end we're not really feeling anything. Mozilla has changed their version from 3.6 to 4.0 with such a big changes from the previous version. If they would have changed the version as Chrome did, it would have reach some 10 at least. Still Google Chrome can't meet the basic things like Hardware acceleration support for HTML5. Even recently I reported minor issues to Google Chrome[http://code.google.com/p/chromium/issues/detail?id=82525], which shows that how they're greedy about showing the users that they're doing something instead of making the product stable.
Sarath C on May 23, 2011 6:46 AM@James - actually, adobe pdf had so many annoying updates that I've uninstalled it and moved to other free pdf readers. It'll be nice when windows finally comes with a built in pdf reader.
There comes a point when the updates come too often and bug the #$@#@! out of me. Which is what Jeff is getting at, I think. A seamless, intrusive update to push the latest version early and often without bothering the user.
me.yahoo.com/a/nCOoVUgFr5I8mc2yDKXEalk4g.BjYQ_n on May 23, 2011 6:52 AMFred Wilson's story about deployment at Etsy was a great inspiration for me, though they, like Google, are deploying to their own servers:
http://www.avc.com/a_vc/2011/02/continuous-deployment.html
Grossvogel on May 23, 2011 7:38 AMI too was fascinated with the way Chrome was updated. I was always checking up on the latest iteration of Firefox/Chrome/Opera, but these are always just small changes so most of it is nothing to shake a stick at.
I have to agree, it would be nice to have an auto-update while the browser is open. Especially when I'm developing a site and got like ten tabs open.
Coolelemental on May 23, 2011 8:04 AMThere's only one problem with web app auto-updates: app integrity. There's no way I want my web server to be able to grab a zip, unpack it, and scribble all over its own code. If someone exploits the server to log in as apache, the document root should be read-only. If someone poisons the DNS, the server should not automatically install the attacker's alleged update.
OTOH, I realize that there are operational difficulties with solving those problems: there are web hosts out there who chmod 777 everything you upload so they don't have to support you when it's broken. There are cheap web hosts that don't provide shell access to have an out-of-band mechanism available for upgrades. There is no standard out-of-band "DO UPGRADE" command for the webapp to call out to. There are webapps which have plugin-like functionality that essentially consists of executing an XML file of patch instructions, meaning an upgrade would destroy your customizations. There is software which won't install without having its directories world-writable, even though group-writable is sufficient and provided. People don't (usually) get PGP keys out-of-band, and the server may not have the tools installed to verify the signature anyway.
It's an ugly mess of problems.
Skyborne on May 23, 2011 8:21 AMSounds like you want something like Ksplice, which updates a Linux kernel without needing to reboot: http://www.ksplice.com/
- Oli
Oliiscool.blogspot.com on May 23, 2011 8:36 AMI wish Flash and Java would switch to infinite versions. What misery it is to put up with their rude updating!
Matias Nino on May 23, 2011 8:56 AMI don't think Jeff wants an infinite version, he wants version singularity. I don't like the idea. Hypothetical: the next build of whatever software you use gets released and it turns out to be absolute crap (unstable, insecure, design changes that you may not like), there would be nothing that you can do to prevent it from being installed. Of course he sees version singularity to be a strength because he's a developer, but the enduser has lost all the power.
OssoBuco on May 23, 2011 9:11 AM@OssoBucco I think the concern you have as an app consumer is relevant but not related to this subject. What you've described is poor support for a previous requirement in new versions. This problem might be a exacerbated by auto-update but certainly isn't a cause of it. This is an issue with the vendor of the software that became crap not with the approach described here.
To make this clear if the software did not support auto update you would be able to stay on version 3 and not upgrade to version 4 which has become crap at fulfilling your requirements. However since all future security updates will be targeted at the current release you end up in just as crappy a situation as if you updated.
Bottom line is that this infinite version model will only work for apps that are very slow to deprecate features, and have a very good understanding of their requirements. Then it feels seamless to the user. It's worth noting that even google isn't there yet. I've spent the last week trying to figure out what is wrong with my chrome logo, and didn't realize that it was an official change until I read this blog.
Mdhedley on May 23, 2011 10:19 AMMurphy's Law tells us that:
- Your spreadsheet will come up with a redesigned interface just as you're about to miss an important deadline.
- Your operating system will refuse to boot after an automatic update just when your backups are most stale.
- Your blog will be upgraded just when you're handling a spike in traffic.
Ubuntu's constant updates and difficulty in installing them- "oh no, you can't upgrade to the latest ___ because your only one-year-old version of Ubuntu doesn't support it"- pretty much turned me off Linux forever to Windows, which, AFAIK, still receives support for even the 10-year-old XP.
Arch, with it's "just update the packages" philosophy, is the only distro I really like to work with. I've always wondered why most distros prefer versioned releases (which often go obsolete rather quickly resulting in you having to choose between out-of-date software or tedious update procedures) when they have a package manager capable of producing much easier rolling updates. Probably a marketing thing.
Miff on May 23, 2011 11:19 AMThe wordress comparison is a bit off when calling it a "webapp upgrade", because in that scenario you're using yourself, a server administrator, to mean "the customer." In that scenario, you're installing software onto your computer so it is exactly like a fat app.
If you look from the perspective of your readers (also wordpress "customers") they received the wordpress update without doing any work or restarting anything. Their experience could be like that of Google Docs.
Tlianza on May 23, 2011 11:39 AMAnd yet I still much prefer Opera in every single way because of the control it affords me without hiding it.
The one thing I hate about Chrome most of all is not being able to determine the install location. My stuff is organised and that breaks it.
I really think we should start hiding version numbers though. They aren't important to the end user. Updates, no matter how small should be intelligently pushed to the user immediately. Give them an option to disable auto-updates and you're done.
I think the reason live updating doesn't work is likely a Windows "issue" (possibly even safety measure). I don't know how Chrome functions specifically, but the only way I could think of doing it would be to create a new component (creates a small overhead) and choosing to now load those while the program is running and then next time the browser is started, replace the old ones with the new ones. Pretty expensive though and I'm not even sure if it can work as I've never even thought about it.
P.S.: Word filters are dumb.
MJ on May 23, 2011 12:31 PMSince Google Chrome's tabs are all separate processes, barring the inherent difficulty of doing so, why don't they do it like this:
1. User opens Chrome and uses it.
2. Google pushes update to user.
3. Download finishes, user continues working unknowingly.
4. User opens a new tab, Chrome uses the new version on that tab, keeping the old version running for remaining tabs.
5. As the user closes tabs, the old version has less and less impact.
6. Eventually, either all the old tabs are closed or the browser itself is shut down. At this point, the older engine can be removed.
Seems like you could use this to auto-update everything but the UI without a restart.
Dwighthouse on May 23, 2011 1:09 PMEven though Chrome must restart to apply the changes, it is still the quickest restart ever. I don't really know what people are complaining about. Chrome even restores your session.
@Dwighthouse
This may not be possible if we need to update a statically linked library. Even if it has changed slightly, any tab that is open will explode when trying to access it.
People are never happy...
Rebecca Putinski on May 23, 2011 1:37 PMI've always been impressed with Chrome's update mechanism. Most people don't care to be bothered with update notifications. Some developers might complain, but if the whole update thing can happen silently (like in Chrome) it's so much nicer for the average user.
In fact, Silverlight enables functionality that is very similar. Back when Silverlight 3 came out I was delighted to learn the details of its out-of-browser install/update mechanism. You're free to code this however you'd like of course. But I chose to copy the Chrome way of doing things. My Silverlight app silently checks to see if there is an update when it first starts. If there is an update, the update is downloaded. When the app is restarted, the update is installed. It was an incredibly easy thing to code and like Chrome, it's extremely fast & dependable.
Steve Wortham on May 23, 2011 3:42 PMAs long as Google keeps making the right decision with each change they make to Chrome, people will love Chrome's infinite upgrades. However, if Google gets things wrong, an infinite-upgrade system could become Chrome's undoing. Few companies consistently make the right product-design decisions.
What if Windows Update had infinitely-upgraded the whole OS during the past 10 years? Imagine the horror of watching your beloved Windows XP machine as it slowly disfigured itself into Windows Vista. I bet the same power users (like me) who protested the phasing-out of XP would have fought to disable Windows Update (or considered Windows alternatives) in this alternate history. Instead, we were able to keep XP, wait out Vista, and give Microsoft a chance to get it right (or at least better) with Windows 7. Microsoft might not have had a second chance in an infinite-upgrade alternate timeline.
Infinite, mandatory upgrades reduce consumers' available choices. It'd probably be best for a company to compete against its products' old versions (and itself) than to make old versions unavailable and force annoyed customers to reconsider competitors' alternatives. There are good reasons why sites such as OldVersion.com exist. ( http://www.oldversion.com/about.php )
As an independent desktop-software developer, I plan on making my programs' old versions available for download indefinitely (with appropriate disclaimers and warnings for significant bugs). If I ever implement an infinite-upgrade system, I plan to make it easy for users to disable it on their own if desired. (I'd also give them the option of notifying me of this change, to help me become aware of their discontent and of missteps I may need to correct.)
Silent updates work for some type of programs and some type of updates. They cannot be a catch-all solution to software upgrading.
When Jeff says "To achieve the infinite version, we software engineers have to go a lot deeper" my only thought is to advise caution. You really don't want to go there. You'll quick understand that when you pretend to alter the program existing functionality or interface and smack that on the face of unsuspecting users. May even work for a browser (if you don't care for the 30% that will be annoyed because they actually don't like your changes but can't go back). Where it definitely won't work is for most productivity tools; like office suits, where your precious silent update can in fact disrupt users work.
Manual and automatic upgrades will remain a necessity. It's not evil. It's in fact beneficial and desirable for many types of software.
Mario Figueiredo on May 23, 2011 5:05 PM@Rebecca Putinski
No no! I love Chrome! I'm not complaining, I just didn't know what was involved or if it was possible.
Dwighthouse on May 23, 2011 6:26 PMAt least chrome is still better than IE ^^ http://boxhacker.com/blog/
Thebuzzwright on May 23, 2011 9:01 PMOh the irony: while reading this article a giant Firefox 5.0 Beta update requester popped up covering the screen.
Per Olofsson on May 24, 2011 12:30 AMAs someone that manages the auto-update process of an application I have tried to mimic Google in the seamless updating process. The biggest problem is that Microsoft's policy is that you cannot overwrite an EXE or DLL if its in use. This is more than likely core to the OS and the reason Google require a restart.
There was talk 3 years ago [1] about adding patching the Linux kernel for updates during run time [2], however if I recall it was rejected at the time due to the massive security threat it could have created. Imagine if a hacker got access to a function that allows you to rewrite any part of the kernel whilst its working. Effectively you could not be sure of anything any more.
[1] http://www.l0t3k.org/biblio/kernel/english/runtime-kernel-kmem-patching.txt
[2] http://lwn.net/Articles/311987/
"The update, still, needs to be triggered by the user. That's one of the few things I hate about Chrome"
I couldn't disagree more. Your average user does not care about updates and will not bother to apply them. Besides being a huge maintenance and support burden, this also poses security risks.
Chrome has the best update system out there... automatic, silent download, never bothers the user. This means they stay secure with no action on their part.
Taylor Marshall on May 24, 2011 2:27 AMAfter so much hype and so many years Chrome is still not as popular as people as expected and not replaced Internet Explorer yet , infact Firefox has become the most popular browser now days and if you go with my experience my vote is definitely Firefox which is miles ahead to both IE and chrome. google needs to done something seriously to push chrome , let's see....
Javin
10 examples of find command in Unix
Were I the only one cringing at the rotated 8 standing in for the ∞ (infinity) sign?
Interesting article nevertheless! I agree with the other commenters that being able to hold off on updating or rolling back updates is essential though.
Shum on May 24, 2011 8:11 AMI love that we are arguing about the etymology of zucchini on a programming site.
Jeffrey Davis on May 24, 2011 11:59 AMBy the way, Jeff, your copyright needs updated.
It's not 2009 anymore. :)
Jeffrey Davis on May 24, 2011 12:03 PMUnfortunately Chrome's auto-update doesn't work so well when you have an overzealous proxy on your network which blocks all executables and other things that smell like them. My install is several versions behind because of this.
Andy Levy on May 24, 2011 12:58 PMWeb apps greatly benefit from releasing updates very often.
In Planbox (a web app providing Agile project management Saas) we decided to push presentation and business logic to the front-end in Javascript, and maintain a stable back-end API. Doing so allows us to push live changes to the UI anytime without causing grief to our users. A simple refresh in their browser gives them the newer version. Yet both older and newer versions work fine since the back-end API rarely changes.
This achievement greatly reduced testing time and increased our speed to deliver new functionality.
Yeah for releasing often!
Martin Drapeau on May 24, 2011 8:50 PM@Martin Drapeau
"... we decided to push presentation and business logic to the front-end in Javascript..."
So users can potentially change your business logic while using your app? Smart move.
As for the discussion at hand, I still don't understand how it is that we're in 2011 and Windows can't apply kernel updates without having to restart. It's not the restart itself that's the issue, but the fact that I have to reopen everything I had running after Windows has done its thing.
I don't think it's a problem of technology, more a problem that no-one has tried hard enough yet to implement the desired behaviour.
The Assimilator on May 25, 2011 1:25 AMAll those updates and Chrome still does not have the most essential of features: MRU tab ordering when pressing Control-tab!
Jesse Dickey on May 25, 2011 1:45 PMOf course, the reason Chrome manages to auto-update itself is because it is installed into your home directory (i.e. under Documents and Settings or Users). This means every user on your computer has their own version. So while your version is up to date, less frequent users of the computer don't benefit from those updates. Because of the restart issue, they're always on the version that was installed last time around and perpetually unsafe.
On my laptop, I've installed Google Chrome for Ubuntu using Google repos and Update Manager bugs me every time I log in.
The technology still has a way to go. But, given Google's track record, I don't think it will take them long.
I hate automatic updates. If software changes constantly under your hands, there is no guarantee it will work tomorrow. And Google may also decide in future to push some spyware/adware to your computer.
Jan Kotek on May 26, 2011 4:35 AMVery interesting to see how on-line upgrades are becoming more mainstream; 10 years ago they were more of a curiosity, relevant to only specific industries.
My research group has been working on the technical problem of dynamically updating running software for quite a while. See our research page for details: http://www.cs.umd.edu/projects/PL/dsu/ If you want just one paper to read, check out http://www.cs.umd.edu/~mwh/papers/ginseng.pdf
Ksplice is doing limited dynamic updates for the Linux kernel: http://www.ksplice.com/
We're developing a new implementation that should be less invasive and more backward compatible for application programs. It's a fun area to work in!
Michael Hicks on May 26, 2011 5:13 AMYou must be kidding! WordPress's auto-update functionality stupidly requires the web server to specifically be the owner of the file for it to work, otherwise it asks for FTP credentials. I haven't set up a FTP server in many years, and I probably won't in the future unless it's TFTP for a network install. Maybe it's different for Windows servers. Also, to the person who blamed poorly coded plugins for WordPress updates breaking functionality: is there even any other kind of plugin? Almost all plugins I've seen have been made by junk developers who apparently don't even turn warnings on when developing.
Slikts on May 26, 2011 7:16 AMI no longer think of myself as using a specific version of Chrome, I just … use Chrome
Exactly. Chrome version no longer matters. The thing just works, and knowing that I'll always be updated makes me feel... updated.
But that feature is quite difficult to apply to other browsers, and here I'd like to mention Internet Explorer. I'm sure IE could have make this as well. I can't see any technical hurdles that couldn't be surpassed. But IE is too important for too many business users. Too many apps, too many processes, are still dependant. So automatic updates aren't "affordable".
But this is I guess -I'm talking to you know, MS- one of the disadvantages of having forced all your users to use IE. Chrome had the freedom of a shiny, fresh start.
Offtopic: 1) Jeff, why do you use Typepad and not WordPress, any special reason? 2) You got time to read aaaall your blog comments??
Greetings and my deepest congrats. Your blog inspires. That is something few blogs can achieve.
Javipas on May 26, 2011 3:28 PMI don't get the fascination with Chrome especially since it lacks sidebars and a true NoScript plugin. The load time argument to me is silly. I load FF once and keep it open until I log out of the machine. Frankly, there are times when the uber-minimalist approach is annoying. I like that in FF4 and IE9 you can restore the menu bars or hide them as preferred.
The auto-updating sounds great when A: it works, B: nothing in the new version is undesirable and C: nothing in the new version breaks functionality. When the day comes that any of those are false, I think people will be less thrilled with the auto-updating.
Thomas on May 28, 2011 9:35 PMBut even Google hasn't figured out how to install an update while the browser is running. Yes, there are little alert icons to let you know your browser is out of date, and you eventually do get nagged if you are woefully behind, but updating always requires the browser to restart.Actually, I'm on Linux Mint using the Chromium dev channel PPA, and I can update Chromium via the Update Manager just fine while it's running.
I don't get the fascination with Chrome especially since it lacks sidebars and a true NoScript plugin.I really don't get the point of NoScript. Only allowing Javascript on whitelisted websites just seems stupid to me. TheSupremeNerd on June 1, 2011 6:49 AM
I was about to blog about Chrome's terrible address bar search, where if I type in a word, it only looks at url terms in my history, and not the web page title (unlike Firefox, Safari, or most other browsers). I was about to take a screenshot demonstrating my point, only to find out it had been fixed.
Sadastronaut on June 1, 2011 9:11 AMThe price to a developer of doing this kind of deployment is that you have to be doing continuous testing. The implication is that if you want the benefits of continuous deployment you have to pay the price of writing and maintaining lots of automated tests, or the alternate price of releasing software and then finding out that it's broken and needs to be rolled back or fixed in a hurry.
With a web-based service you can get away with a lot more of the latter using gradual rollout, but with something like a browser I'm not sure how you could just say "oops" and roll back a release. I wonder if there's a means of keeping the last couple of releases around on the client side, or pushing an "update" that's really a rollback once enough people have gotten the update to reveal a bug that was missed before release?
I wonder how applicable this model is to smartphones, given that there is regulatory approval involved. FPGAs blur the line between hardware and software in a way that regulators are unlikely to comprehend...
Jamieflournoy on June 1, 2011 6:23 PM"I really don't get the point of NoScript. Only allowing Javascript on whitelisted websites just seems stupid to me."
@TheSupremeNerd Then you evidently haven't looked at what it does - or are unfamiliar with why it needs to do what it does. I can't understand how anyone chooses the use the web without running NoScript - and that's because I know exactly what it achieves and it's something that should be inside every single browser.
Anyway, RE: version numbers... Mozilla have gone crazy with their versions. In the past month I've gone from the Firefox 4 Nightly to running Firefox 6 on Aurora (which is sort of like a release candidate). By the end of the year I'll be running Firefox 1.4^5 at this rate. It makes Google Chrome's update process seem positively arthritic.
It'll only end in the tears, I'm sure...
Rushyo on June 3, 2011 6:35 AM"or pushing an "update" that's really a rollback once enough people have gotten the update to reveal a bug that was missed before release?"
This is certainly possible for purely code issues but sometimes environmental issues (caused by the previous update) are harder to fix without over-stepping your bounds. You can't just go deleting files off the client's system! More often new features in Firefox have an 'off switch' in about:config, so disabling it is as simple as a toggle.
Fx has so... many.. freaking... unit tests. I spend more time writing Fx unit tests than I do writing patches. There are pros and cons but at end of the day it's about making the best end product, so total code coverage is a beautiful thing.
Rushyo on June 3, 2011 6:47 AMI'll stick with Firefox and my rc helicopter
www.google.com/accounts/o8/id?id=AItOawnculvkZcLGLXw2Q2AMzxZj8y-BRkQN50k on June 3, 2011 1:40 PMJust a couple of quick notes here:
The automatic updating is not available on Linux editions of Chrome - it is the responsibility of the user to keep the program up to date using their package manager (such as APT or Yum). The browser itself has no means of updating itself (since this would require root privileges).
Secondly, it actually is theoretically possible for a program to update itself while it is running - although a currently-running executable cannot be deleted / modified, it is possible to modify the binary machine code in place. Obviously this would be horribly complicated and introduces all kinds of potential errors - but I just thought I'd mention it.
George Edison on June 14, 2011 4:02 PMInteresting to note that the spammy SEO attempts of the rc helicopter commenter above have failed to get the site in question anywhere in the first several pages of a Google search for "rc helicopter" as far as I can see.
Peter Todd on July 14, 2011 12:52 PMThis is great for consumer uses, but big corps absolutely hate not having every version of software under their control. One can argue about whether it's right for them to do it, but I have worked in too many corps where upgrading to IE 7 broke the 50 vendor-provided apps that depended on IE 6. Vendors aren't in a hurry to upgrade, and if "it just works" then the corporations won't either. Even Firefox has trouble in corporate because of their upgrade policy. Until the old-school corporate IT mentality of "well the app is certified on X browser" goes away, don't expect to see chrome, with the changing version all the time, every make much inroads into corporations.
Nate West on July 19, 2011 3:39 PMGreat article! I really liked to reading it..Thanks!
http://www.sampleresumeobjectives.org/Job/advertising-resume-objectives
My issue with the Infinite Version is when you start depending on systems that work. While you may roll things back quickly, you still have unavoidable downtime if you roll out an update that breaks the browser *and* the autoupdater.
See for example http://bit.ly/ubuntu-cron-regression
lfaraone on August 2, 2011 6:56 AMThis is only a preview. Your comment has not yet been posted.
As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.
Having trouble reading this image? View an alternate.
| Content (c) 2012 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |
Posted by: |