3rd Party "Microsoft Updates"
Posted 09 December 2006 - 10:06 PM
My clients all run as non-admins, so these auto updates are totally pointless, since they don't have the rights to install the patches. This means they have several totally useless tray icons, they take up resources and bandwidth.
For a single personal computer, these updaters are ok, since you are probably running as an administrator. However, I have several personal machines (as I bet many of the members of this forum do as well) and end up having to install the same updates on each one individually, wasting both my bandwidth and time.
A lot of the software on this form is targeted at simplifying computer deployment and installs, not so much for on-going management.
What I propose is a public version of Microsoft Updates, but for any application. The 'community' maintains the list of programs, and their patches. Eventually, I would like to build in support for one machine to automatically mirror decisions made on a master machine (for home use) and an equivalent to WSUS for a cooperate network. This would of course all be done in a free and secure manner.
I am a skilled programmer, and am willing to do a large part of the work (if not all of it), but I want to know if there is a demand for this type of product or if I am just nuts. Any feedback would be greatly appreciated.
Posted 10 December 2006 - 12:23 AM
Yes, to both questions?
"Centralized" updaters are certainly a good thing, and you can say there's a demand for them (just look at WSUS, SMS and countless similar deployment/patching programs, Installshield Update Manager, etc).
But as for being nuts, I'm afraid I can't say no. Do you realize everything that would be required for this to happen?
-You need to write a client, that will detect the supported programs (list which must be updated from the web constantly), and then checks for updates/upgrades (must know what to look for - say, in an XML file with the app names/versions and such), download the files from... somewhere? (bandwidth's on you?) in a format that the udater will be able to use (often not in the way they're disrtibuted), then apply them in various ways (have to write a fairly advanced "installer").
-You will need server-side code (don't know what language you had in mind), with various public APIs for the clients to check for updates (personally I'd use web services) and download them. But that must work with one gigantic and complex database: a list of every version of every app supported, a list of every single update ever made for each of the previous table (products*versions), lists of files/patches/updates whatever (likely a very complex format, could be stored as XML), linkto or name of update, etc.
-And as if that wasn't already enough work, you need a community behind it. Lots of volunteers. And you'll need to implement LOTS of stuff for this to work. You will need user accounts. A mechanism for people to submit updates - the info being in a complex format along with all the required files. And of course you can't just expect to let anyone submit anything and not have problems. You would need people to beta-test the updates before they're made public (testing phases). You might need a forum for people to interact (discuss what went wrong with update X for app Y version Z, what do to, or explain how they've done it, etc). And for all this, you'd need to add tons of stuff to the previously mentionned database: lists of users and lists of user groups, plus the relationships (UserID -> GroupID / "group memberships"), and everything needed for a forum and such, and everything required to have some sort of beta testing of updates (a workflow: create new update -> beta testing phase -> problems so back to submitter for fixing, back to beta testing, testing OK -> made public) and all the tables and code to support this (and people to update their submissions), etc.
It would require a large and complex database. A rather large app with fairly complex architecture (even if omitting the forum). And it would have to scale very well if you get a significant amount of users. And it could use lots of bandwidth too. Eventually you'd need funding (perhaps a business model?) to keep this going (hosting/bandwidth costs).
And there could be legal aspects of this, depending on who's hosting the updates (can't distribute anyone's content without approval or such).
And that's assuming a simple server on the internet and clients for single PCs. It would only become more complex if you want people to locally run servers (a bit like WSUS) on their LANs to have people install off that (and have the server sync with your server over the internet).
It's not a bad idea, but I think you don't realize who much work this would require - short and long term. It's not a 1 person project, much less one you can just accomplish in a few spare weekends.
Posted 10 December 2006 - 12:34 AM
Or without any serious financial backing from some deep pockets.
Posted 10 December 2006 - 12:44 AM
My plan (assuming I actually start) is to have clients download content directly from the official source, and automate whatever technology they have implemented to install it (ie: client downloads the official path and simply starts it with the required silent switches).
As far as developing a fan base to contribute, look at the communities that have sprung up around unattended installs and switch less installers (here and RyanVM's forums). I am willing to bet updating already installed software is something most people do more often than they format.
Posted 10 December 2006 - 11:39 AM
Posted 10 December 2006 - 09:08 PM
Looks like you know what you're in for though (and starting with something simple-ish)
Posted 10 December 2006 - 11:05 PM
As for application support, this kind of service is obviously going to scan end user's systems for software and hardware, so I can target applications and drivers that the majority of users have installed.
Of course, this would all be done in a totally anonymous way, nothing like WGA, etc.
This post has been edited by Colonel: 10 December 2006 - 11:12 PM
Posted 10 December 2006 - 11:37 PM
Good stuff! If I had a say in it, that's EXACTLY what I would have chosen!
Well, why XP SP2? AFAIK the .NET framework 3 still runs on Win2k. Haven't had time to play with WCF yet (still using the "old" stuff, hoping to make the switch real soon), but it looks VERY, VERY promising!
Either ways, since you're not a n00b, we can expect something decent (good solid n-tier design). Still curious about the DB side of things, are you going to code it all by hand, use an ORM like NHibernate, or codegen tools (codesmith/mygeneration + template), EntLib or something? What about logging? Log4net? Inquisitive and geeky C# types want to know! No such thing as too much details! Unit test wise, I'm personally thinking about switching from NUnit to MbUnit for most stuff (it's quite nice).
One more question: what will be the license? Especially, is there a chance it would be open source at some point? In part or entirely? (Can't blame you either ways as I don't usually release my stuff as open source either, but I'd love to contribute if time permits - anything, from localization code, to Data Access Layers for other DB providers, to bugfixes, feature requests, commenting, unit tests, documentation, anything!).
Honestly, I'd rather have a local server instead of having every client download straight from the source (much like WSUS works), but I do understand developing one more app & "layer" to the system would take more time, effort, and complicate things further. Wish I had time to do something like this from scratch, but I've got just too many pet projects already... Again, ideally there would be a forum or possibly a wiki to go with all this, but eventually it's a LOT of work to make it all happen...
Edit: BTW, personally I wouldn't worry too much about the pre-XP OS'es. Win2k mainstream support is already over, and most businesses that haven't moved to XP yet (we have) are going to do it soon enough. And home users wise, I don't know anyone who still runs Win2k (a few ppl here might, but it's hardly representative of the average home user, whose new PC shipped with XP preinstalled). In a few months, a large percentage of folks will be running Vista anyways. Gotta look forward to the future a bit, even if that means leaving the older OS'es behind sometimes. Personally I don't go out of my way to support old OS'es.
This post has been edited by crahak: 10 December 2006 - 11:46 PM
Posted 10 December 2006 - 11:58 PM
From the Redistributable Package Download Page:
The only problem with saying Win2K is obsolete, is that people still on 2K are the ones that would be most in need of a service like the one we are talking about...
At this point I haven't decided how much I am going to do by hand, and what tools I am going to use, but I do know that for unit tests I would be using the ones that are part of VS Team System (along with the static code analysis and performance profiling).
I don't know about open source, for some parts of it sure. The only thing is it opens the system to attack, otherwise I would be all for it. Either way, it will be free to end users.
When I said clients would download straight from the source, I meant that exactly how WSUS works. Either end clients download from the official source or from a WSUS-Equivalent server that gets them direct from the source.
Posted 11 December 2006 - 12:10 AM
This could also work with your idea. Each download client is a bittorrent client internally, downloading the updates from all other clients while distributing them simultaneous to all other clients, all via bit torrent protocols.
Posted 11 December 2006 - 12:15 AM
Nevermind what I said... I think I need some sleep (posting at 1am often results in nonsense - for me at least)
I'm not sure I get the reasoning behind this. Why would people running an older OS need more patches for their applications than those running newer OS'es? I don't see how the OS choice changes the problem in any way. The apps, no matter what OS they're installed onto, still need to be updated.
I don't think so. If properly designed (using parameterized queries/sprocs and all), it should be very secure. And if I can look at the code, I would likely notice code that's vulnerable (I've secured stuff man times before, and we've never been hacked) and fix it pretty quickly. There seems to be a few other C# folks on the forums too (like jcarle). Alternately, you could do like some projects do, have a gotdotnet workspace or such, and force people to join if they want to have access to the source code (only let people you trust join), or setup a private SCM or something. That way others can help, and not everybody peeks.
Great stuff! That was just a misunderstanding.
Posted 11 December 2006 - 12:57 AM
@jcarle: Although that may be a good idea, the idea behind downloading direct from the official source is that we avoid any possible legalities around unauthorized redistribution of ISV's content.
I'll set up a forum / community site some time, what would you guys prefer: SharePoint 3.0 or CommunityServer ?
Posted 16 June 2008 - 11:40 AM
The other angle would be to use the autoupdaters themselves but instead have them redirected to the onsite server to look for updates. This would either be a host file entry or if the router can have custom firmware, just redirect it back to the local network (except for the "server" hosting the updates locally).
For single to three computer installations (homes) this might be a tad impractical (who wants to buy another computer to serve as an update server). But for businesses (even smaller ones), this would be an excellent project. Also excellent for you pegging the home techie types that do have several computers.
If you have a large enough network (no matter how small), downloading any kind of update (frequently these are over 40MB in total) only once would be excellent. Especially since the talk of capping data usage.
- ← What is the best Audio Ripping Software
- The Poll Center
- Which version of Windows sucks the most? →