When Should You Stop Support for Software?
hahafaha asks: "I am currently working on a website for a small organization. We (I am not alone in this) have a beta version ready, and are currently testing the site on browsers. We have tried all of the big browsers (Firefox, IE, opera), as well as other browsers, such as lynx, links, w3m and even NetFront. So, when can one decide that they will stop supporting a system. Obviously, going (for example) down to IE 1 is crazy, but is IE 3 crazy? This is not only relevant to web design but to any programming at all. When, for example, can you say that I will *not* support a certain version of Windows. Can you say that now about Windows 98? How about 95?"
Do you use java, javascript, CSS, flash, CGI, etc., or not?
A pure text website with some graphics can support lynx, whereas a flashier site will require more up to date browsers.
--- Grow a pair, liberals... stop letting the Republicans bully you!
Why not come up with some percentage of people you are willing to support, say 90%. Then find out how many people use each variety of browser or OS. These numbers are usually available on the net. Then you select the top N platforms needed to fill out your percentage supported number.
Among other things, when Microsoft stops supporting it, I stop supporting it. Well, not really. But I stop including Windows 9x workstations in the standard contract, so if you want them supported, each one is an additional charge, and no guarantees are made that problems can be resolved.
Personally, I think that a lot of places upgrade more frequently than necessary, but even I think that anything over 5 years old should have been replaced by now.
I think the best way of looking at this is with money.
Who are your customers, and what are the demographics of their systems. Windows 98 is still a very prevelant system out there. I am writing this post from a computer that is still running windows 98. The big questions are
How many are you going to loose by not including their system?
how many can you afford to loose?
And how much would it cost to include them?
30% Troll, 50% Underrated, 10% Interesting
Score:5, Troll
There's a formula you can use to help you figure this out.
A) Take the amount of money you're getting IN SALES of older product. Pull a number out your arse to represent the goodwill you get by supporting older products, and add it in.
B) Take the amount of money you're spending TOTAL to support older product. Include salaries, time estimates, etc. Add in the costs of anticipated sales you'd get by people upgrading to the newer version.
Profits=$A-$B;
when Profit is close to or less than zero, you need to drop it.
For some of my specially-crafted, workflow applications, I actually require end users to use Mozilla or Firefox in certain places. In this case, the margins on the sales are high, the number of people using it is fairly limited, and the code being displayed is rather complex, so the cost of getting all the required features working in the legacy IE5/6 browsers was large, while the benefit of supporting doing so was minimal. I don't get asked about supporting IE, but I do get asked lots about Mac.
You want feature N? Get Mozilla. Free download! Works on Windows, Linux, and Mac!
I have no problem with your religion until you decide it's reason to deprive others of the truth.
Whenever the cost of supporting the customers that comes from supporting those customers, exceeds the benefits of satisfying those customers.
You don't ever stop supporting your customers. You just switch to paid support after your warranty or contracted support period has expired.
I'm still supporting the first commercial software I ever wrote (a refrigerator controller for a meat packing company) because it still does the job I originally wrote it for, and the company using it occasionally pays me to port it to newer hardware. I'm not making a loss, and it's not a huge money spinner for me, but I'll continue supporting it because it's mine.
"I've got more toys than Teruhisa Kitahara."
I see a number of ?s/comments to the effect of 'IS it profitable?'
The aspect of where both you and your users WILL BE in 18 months is not examined and what it would take for continuing support.
Be forward looking, don't be like your 'whatdoyameanweranoutofcopiertoner' manager.
-or-
Bridges being built for tomorrow's traffic, not today's.
Game: Player 'Donald J Trump' now has AI skill level 'experimental'.
There was an article cited on Slash about the horrors of of this from the design side when automakers brought up their system requirements.
So from this viewpoint, I would probably go for the ten year boundary on hardware and software, even though many software makers would like it to be as short as possible.
Heck, Symantec has dropped support for many of their more recent products for a variety of reasons
"It is a greater offense to steal men's labor, than their clothes"
Do you have a captive audience, e.g. are you developing an in-house app for employees of a company with a fixed browser platform? Or are you developing for random users on the net?
In my experience, hardly anyone uses Win95 anymore. Those with ancient hardware typically run 98SE or NT4. With those folks, imho you're within your rights to expect that they at least update to the latest browser version their OS supports. I'm not sure what that is for 98SE and NT4, but I'm guessing IE 4 or 5.
You might also want to test on Safari, unless you're fine with blowing off OSX users.
I'll disagree with this. The company I work for recently stopped support for some software we wrote in 1999. We provided more than 2 years notice, and a reasonable upgrade path.
Our entire code base was rewritten in 2000 and once again in 2005. Supporting 3 different code bases is not practical.
First of all, for front line support people, have them trained on 3 different products is simply not practical.(While the 3 pieces of software are similar in general functionality, they're are significant differences in how the achieve that functionality.)
More importantly, the number of developers that are familiar with the original code base is small. And these are the most senior developers and having them spend the their time looking at the old case base is not a productive use of their time.
I suppose we could have offered a support contract to the customers of the older version that represented the realistic cost of what it would be to support the older code base. But, the number would have been ridiculously high and would probably be seen as quite insulting by the customer.
It made more sense to announce the sunset of the product with a large amount of advance notice, and provide a reasonable upgrade path.
If you write standard compliant software / websites / whatever, you don't have to care that much about software versions.
/cdrom && cd /cdrom/slackware /etc/rc.d/rc.S
... because there aren't any reasons not to upgrade. Upgrading is easy, fast, and free.
Also, Software should be easy to upgrade. The point is, sometimes you do have a reason to run old software. Is there a reason not to upgrade your win95 machine to Winxp?, yes, the reason is that it CAN'T be really upgraded, actually, you are reinstalling. My Slackware install has been in my machine since Slack 7. It has been upgraded several times, and now is a slack 10.1.
Each upgrade has been as easy as:
mount
killall5
upgradepkg --install-new */*
That's it, I don't even have to reboot (i allways upgrade my kernel from source).
That's the answer: If your software is not badly designed, upgrading should be easy, and nobody would keep old versions running. I think that noboyd out there is running Slackware 7 anymore, or Redhat 6.2, or 2.0 kernels, or Emacs 19
In Windows, upgrading is complex, takes lots of time, and costs lots of money, and in many cases, it isn't a real upgrade, but a reinstall.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
Part of the problem is that every single site that offers user-agent statistics is in some way biased by its userbase. I really wish Yahoo and/or Google would publish user agent statistics; that would be probably as close to a proper sample of the world as you could get.
Right now, make sure you're turning on user-agent logging for your new site. Yes, the logs do waste some disk space, but they compress to nothing, and there's nothing better than seeing exactly what percentage of your users are using various browsers.
As an example, I made my life much easier when I stopped supporting IE 5.16 on Mac. There's a few very subtle differences between 5.16 and 5.17 when it comes to div's encosing other div's, and 5.16 rendering will break when every other browser is OK. I was able to end this nightmare when I showed my boss that he was the only user in the past six months who had accessed the site with IE 5.16 (which implies, of course, that every 5.16 rendering bug ended up at priority 1.)
And just a reminder that IE 7 is coming, with an, er, interesting collection of fixed bugs, maintained bugs, and removed hacks
Someone who is using Netscape 4 (as an example) is either 1) too broke to afford a machine that can run newer versions, or 2) technophobic, or 3) determined to make the world bend to their will. How much money do you want to spend herding any of those three to your website, assuming you're in a high-tech business?
Now, if you sell tractor parts, then you have a legitimate point. If you're selling music downloads or something else new, hip, and low margin, then forget it - support costs will eat any profit you might have made, and that's ignoring the opportunity costs.
Dewey, what part of this looks like authorities should be involved?
As many had said this is your descision the way I see it you have to look at two factors, your customer base and your business plans.
Cuistomer Base
What's your target audience, is it kids, or early 20s (which probably all have newer machines), or are they anyone with low income - potentially elderly/disabld with restricted (library/hand-me-down pc) access. As many have said if you want to serve the blind and disabled you will have to factor that in though you can keep your site modern.
Business Plans
If you guys are planning on rolling out some digital content as a key factor of your business strategy, there is another line for you, some media may not even work on older machines, best to start the PR to let people know wqhat is coming down the road instead of an overnight fiasco as many are not able tro access your new features when they hit.
If you are doing it merely to capture more market atttention maybe you should do a market study by interviewing current and potential clients and seeing what they really need or expect to have in such a site.
"Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
I teach econ at the high school level (besides, it was my major!!). Here's an economic analysis: when the marginal cost of support exceeds the marginal benefit. I know that sounds crazy, but look at it this way. If it require 5 additional hours of programming to support say IE3, and your time is say $50 per hour, then you'd better get at least $250 of benefit from it. If someone is running IE3, that means they're on what, windows 95. If they haven't bought a new computer in 8 + years, then I guess that they aren't going to be buying alot of newer stuff anyways. And if they are content with their poor overall web experience, than accomodating them is probably not worth it. In fact, testing for lynx, et al., is also probably a waste of time. For purely philosophical reasons, adhering to standards is nice, but might not make sense from a practical standpoint. I do my wife's photo web site, and all I use is all CSS2 positioning, no tables, spacer gifs, etc. Why? When she does a shoot, for it to be worth her while someone better spend a few hundred dollars minimum. Checking her stats, 75% of her visitors used IE6 and 16% used Firefox. (6.6% Safari) Do the math. Is it worth it to support 3% of her visitors? If they can't even afford a relatively new computer, $500 maybe, then are they going to spend that on the session and portraits? Now, it depends on also I imagine the audience your addressing. If your site say is for old folks, then maybe they're running their kids old computer and it might have win98/IE4. But overall I'd say just figure out what it's going to cost you, and then what you're going to get from it. Really, if you turn off someone who isn't going to spend anyways, they really weren't a customer.
My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
That is very insightful comment. Good you brought this up.
It is really interesting to follow this thread here, since, I have also faced this dilemma as Software Architect. Most of the times, I prefer to put the facts on table and allow the whole team participate in decision making process. The members are allowed to wear different hats (Mkting, Finance, Project, Process etc).
hilarious
If you're not somehow handing bars of gold through the screen, they won't stick around longer than it takes to close the tab.
Wow, thats the first time I ever heard of Windows Updates being refered to as bars of gold. <rant>Seriously, though, thats the only time I use IE anymore. Well, that, and when an application hard codes it as the web browser to open, but I am genernally not pleased with such behavior. Really, folks, how hard can it be to pass a URL to the ShellExecute call and let the OS hand it off to the prefered browser?</rant>
#include <signature.h>
Okay, I see many people are not being a lot of help. They are quoting statistics and all sorts of other things.
To answer your question: Just program in HTML 2. Its what I do. Supports tables, most of the stuff you want to use (except maybe style sheets), works with just about any browser except NCSA Mosaic and Netscape 1. You want flashy graphics? Just do an image map.
Truthfully, most of you users are going to have Netcape 4, Opera, IE4 or something newer. You could probably get away with programing in HTML 4 and hit 98% of your users.
As for developing apps, depends on who your target audience is. I mean, is there really a reason for designing something like Adobe AfterEffects and have it compatable with Windows 95? If you are running 95, it is most likely because you are running 8-10 year old hardware. Do you really want to do video rendering on a first generation Pentium or a 486 that is maxed out at 16 to 32 meg of ram?
Most apps I see now are for 98SE or newer. I know 2 people who are running 98 first edition, and noone running 95.
Many apps that I know of have seperate versions for 2000 and XP, then XP x64 and 2003 Server, then they will have a 9x version for 95, 98, and ME. Of course, those are internet apps. For most consumer apps, scrap anything older than 98SE. I mean, I am sorry, but 98SE is now seven years old. I am not up for the upgrade every year philosophy that Microsoft seems to have, but seven years is kinda pushing it.
Often times it makes more sense to stick with the old way of doing things than to upgrade to a newer, flashier system. I have seen too many times when lots of money was spent upgrading, only to end up with a system that ultimately runs slower and is less feature rich. One of the main cases of these are institutions switching the main software used from local run to web-based apps. One of the great things about locally run software is an increased ability for keyboard navigation and shortcuts... when a person is entering data for a good part of the day having to switch to the mouse to change fields in common tasks can really interrupt the flow of thought.
For instance I am a veterinary technician at an animal control facility and one of the common tasks I have is entering information about animals that come in into the computer. For a one year old black and white male stray cat, typing c (tab) m (tab) m (tab) 1 (tab) (tab) n(tab) a (tab) b (tab) b (tab) w (tab) sho (tab) dsh (tab) (m) (tab) (tab) n (tab) sf (tab) e (tab) ls (tab) n F9 (enter) to save it can be done in about 10-15 seconds, while selecting "cat" from a dropdown box, moving the cursor and selecting "medium" for size and "male" for sex, selecting the age box and typing 1 into the year field, selecting "normal" for condition, selecting "active" for status, selecting black for the main color group, selecting black for the main color, selecting white for the secondary color, selecting shorthair for the breedgroup, selecting domestic shorthair for the breed, selecting "mix" for the secondary breed, selecting "none" for collar type, selecting "short flat" for hair type, selecting "erect" for ear type, selecting "long smooth" for tail type and then selecting "normal" for temperment and finally clicking "save" and then "okay" on the dialog box takes a lot longer, and of course there are multiple mouse clicks for each attribute entered, first selecting the box being used, scrolling through a list of all the options, clicking on the desired value, and then finally clicking "use this" when you have the value you actully want. Usually ends up taking two to three minutes to enter with a mouse what should take 15 seconds or so (granted, there is a bit of a learning curve involved with memorizing some of the abreviations used, but that really doesn't seem to be a problem as I enter many animals every day. Only really seems to be a problem for people who are afraid of computers.) I could see how this would really reduce my productivity if this was switched to a poorly designed web app (as most small volume roll-outs seem to be.) Entering all this info on 15 animals could easilly take a half hour, and sometimes there isn't time for that (50 animals a day isn't all that uncommon, at least in summer months when we are busier.) This entry doesn't even include time spent on calming the animal down, initial health exam, vaccinations, filling out paperwork for the new animal etc. And there are many other duties besides just intaking animals...
I've heard of bank software costing millions of dollars to roll out that greatly reduces productivity of the tellers by taking away keyboard shortcuts. I've seen web based course registration systems at universities which were pretty painless in the old telnet host (once people learn to tab between fields instead of using the arrow keys) but trying to do it on the new (new when I was in school anyways) was a real pain, and that's when the system was even up. Although the new system DID incorporate a fair number of actual useful features and was easier for most people to look up old info (grades from previous semesters, financial aid information, etc)
I'll never make that mistake again, reading the experts' opinions. - Feynman
You don't have to drop support for any browser. HTML is backwards compatible and you can even write "AJAX" stuff that degrades nicely.
1. Code website that works with no JS and no CSS support. It doesn't have to be pretty (no <font>, just semantic HTML) nor work smootly (just use regular forms).
2. Add styling designed for modern browsers like Firefox, Opera, Safari and hide these stylesheets from junk like Netscape 4 (@import trick).
3. Add CSS hacks for IE (use HTML conditional comments, because IE7 breaks most hacks)
4. Modify document using JS and DOM to add handlers for all dynamic, ajaxy flashy stuff. That's progressive enhancement.
You are taking two different things and conflating them here. Lynx cannot provide real-time graphing. The fact that it doesn't support Java is irrelevant; it's perfectly possible to write a website that uses Java when it's available and falls back to alternatives when it isn't.
Are you sure about that? It can't handle the graphical Ajax. That doesn't mean it cannot manipulate the database. I've written something similar, nice drag and drop manipulation of data for Ajax clients. It works in Lynx too. Why? Because I started from a solid base (HTML that works everywhere), and wrote the Javascript to use and manipulate that information - instead of starting with the Javascript, taking a step back and thinking "all this Javascript will never work in Lynx".
This is another case of you conflating the two different concepts of content and implementation. Interactive media is something that isn't going to work in browsers like Lynx, whether or not it's built with Flash.
The grandparent had a good point that I think is being missed somewhat. It's not the technologies themselves that stop things from working in older browsers, it's usually because the developers didn't do things right. You have a secondary point that sometimes the content itself simply cannot be presented to some users, but that doesn't change the fact that incompatibility is mostly a developer issue rather than a technology issue.
Bogtha Bogtha Bogtha
That's funny, only because I'm having a heck of a time getting IE to run on my SuSE Linux 10 machine, the one I use to do all my web surfing.
Until I figure that one out, I with the GP, not going back to sites that are broken in Firefox.
Glonoinha the MebiByte Slayer
In particular, firefox and IE render the 'padding' CSS attribute totally differently. You can write a valid webpage using great coding style and have the width of any given element _undefined_ because you used the padding property of a box. (In Firefox it includes the padding in the width and in IE it adds the padding to the width).
Then, nest these elements inside a fixed width box and watch the fireworks in IE when your page layout collapses because an element is larger than you think.
This is all valid code and it uses as few features as possible. The way around it that I use actually uses _more_ features (I nest the div tags within another div tag and set the margin instead of the padding).
I have a feeling you haven't developed too many web pages in your day. Or at least not too many large projects where you need to use the "features" of CSS to get a properly formatted webpage.
You are taking two different things and conflating them here. Lynx cannot provide real-time graphing. The fact that it doesn't support Java is irrelevant; it's perfectly possible to write a website that uses Java when it's available and falls back to alternatives when it isn't.
If that is the goal is to provide real-time graphic monitoring of server software, then there is no lynx based alternative available. If live updates of information are important, the same data CANNOT be provided through lynx, period. If you really wanted to, you could write a top-like terminal application (some of the software I'm refering to does) that you can access through ssh, but there is no lynx workaround. The post I replied to stated that all websites should work in lynx - I gave a good, valid reason why some java (and flash) sites won't work in lynx.
Are you sure about that? It can't handle the graphical Ajax. That doesn't mean it cannot manipulate the database. I've written something similar, nice drag and drop manipulation of data for Ajax clients. It works in Lynx too. Why? Because I started from a solid base (HTML that works everywhere), and wrote the Javascript to use and manipulate that information - instead of starting with the Javascript, taking a step back and thinking "all this Javascript will never work in Lynx".
Really, what you did was write two applications that use the same address. Let's look at a simple example. You want to change a name in a field. My AJAX process:
0. The user goes to the page that displays the data in rows. At this time, all the information is simply text, not form inputs - the vast majority of the time, the users simply want to see the information, not change it. Clicking the "edit" button next to each row changes the information into from inputs, and hides all of the other "edit" buttons so as to prevent confusion. The "edit" button changes to a cancel button and an "change foo" button appears.
1. Submit the update information via AJAX - the POST data is generated on the fly, so there's not tons of form information cluttering up the page (or GET data appended to URIs)
2. Validate the data and then attempt the update on the server
2a. If sucessful, requery that specific row for the values now in it to be returned so the browser reflects what's in the database rather than what the browser thinks is in the database
3. The AJAX handler parses the returned data and either updates the row or handles the error
Now, I can and have written database front-ends that are fully plain HTML compatable as well as being compatable with AJAX. So I'm well aware that I could simply have non-AJAX clients do a POST that duplicates step 1 (again, being aware that the HTML code is messier due to the need to have POST variables embedded in the code for each row of the database being displayed, also being aware that I have to write a lot of javascript to hide things that are necessary for the non-AJAX user interface but distracting to the attractive design the AJAX interface has.
Step 2 remains basically the same, but step 3 on has to changed. I need to fully requery the database for all of the information on the rows that had been displayed unless I've done some really bizarre caching of the previous results on the server and can modify just the single row. (as an aside, I'm fully aware that a problem with the AJAX database front-end that doesn't refresh the information displayed could lead to a user trying to modify a row based on stale data. Depending on the need, this can be completely ignored (generally a bad idea) or prevented by submitting all of the data from the row and verifying that it hasn't been changed by someone else before doing the update and optionally by periodically polling the database and changing any information that's been changed on the user's screen.)
And that was just a simple example. In the real application, there's various things the user can do that pulls in other information and either correlates it with