Current version

v1.10.4 (stable)

Navigation

Main page
Archived news
Downloads
Documentation
   Capture
   Compiling
   Processing
   Crashes
Features
Filters
Plugin SDK
Knowledge base
Donate
Contact info
Forum
 
Other projects
   Altirra

Search

Archives

01 Dec - 31 Dec 2013
01 Oct - 31 Oct 2013
01 Aug - 31 Aug 2013
01 May - 31 May 2013
01 Mar - 31 Mar 2013
01 Feb - 29 Feb 2013
01 Dec - 31 Dec 2012
01 Nov - 30 Nov 2012
01 Oct - 31 Oct 2012
01 Sep - 30 Sep 2012
01 Aug - 31 Aug 2012
01 June - 30 June 2012
01 May - 31 May 2012
01 Apr - 30 Apr 2012
01 Dec - 31 Dec 2011
01 Nov - 30 Nov 2011
01 Oct - 31 Oct 2011
01 Sep - 30 Sep 2011
01 Aug - 31 Aug 2011
01 Jul - 31 Jul 2011
01 June - 30 June 2011
01 May - 31 May 2011
01 Apr - 30 Apr 2011
01 Mar - 31 Mar 2011
01 Feb - 29 Feb 2011
01 Jan - 31 Jan 2011
01 Dec - 31 Dec 2010
01 Nov - 30 Nov 2010
01 Oct - 31 Oct 2010
01 Sep - 30 Sep 2010
01 Aug - 31 Aug 2010
01 Jul - 31 Jul 2010
01 June - 30 June 2010
01 May - 31 May 2010
01 Apr - 30 Apr 2010
01 Mar - 31 Mar 2010
01 Feb - 29 Feb 2010
01 Jan - 31 Jan 2010
01 Dec - 31 Dec 2009
01 Nov - 30 Nov 2009
01 Oct - 31 Oct 2009
01 Sep - 30 Sep 2009
01 Aug - 31 Aug 2009
01 Jul - 31 Jul 2009
01 June - 30 June 2009
01 May - 31 May 2009
01 Apr - 30 Apr 2009
01 Mar - 31 Mar 2009
01 Feb - 29 Feb 2009
01 Jan - 31 Jan 2009
01 Dec - 31 Dec 2008
01 Nov - 30 Nov 2008
01 Oct - 31 Oct 2008
01 Sep - 30 Sep 2008
01 Aug - 31 Aug 2008
01 Jul - 31 Jul 2008
01 June - 30 June 2008
01 May - 31 May 2008
01 Apr - 30 Apr 2008
01 Mar - 31 Mar 2008
01 Feb - 29 Feb 2008
01 Jan - 31 Jan 2008
01 Dec - 31 Dec 2007
01 Nov - 30 Nov 2007
01 Oct - 31 Oct 2007
01 Sep - 30 Sep 2007
01 Aug - 31 Aug 2007
01 Jul - 31 Jul 2007
01 June - 30 June 2007
01 May - 31 May 2007
01 Apr - 30 Apr 2007
01 Mar - 31 Mar 2007
01 Feb - 29 Feb 2007
01 Jan - 31 Jan 2007
01 Dec - 31 Dec 2006
01 Nov - 30 Nov 2006
01 Oct - 31 Oct 2006
01 Sep - 30 Sep 2006
01 Aug - 31 Aug 2006
01 Jul - 31 Jul 2006
01 June - 30 June 2006
01 May - 31 May 2006
01 Apr - 30 Apr 2006
01 Mar - 31 Mar 2006
01 Feb - 29 Feb 2006
01 Jan - 31 Jan 2006
01 Dec - 31 Dec 2005
01 Nov - 30 Nov 2005
01 Oct - 31 Oct 2005
01 Sep - 30 Sep 2005
01 Aug - 31 Aug 2005
01 Jul - 31 Jul 2005
01 June - 30 June 2005
01 May - 31 May 2005
01 Apr - 30 Apr 2005
01 Mar - 31 Mar 2005
01 Feb - 29 Feb 2005
01 Jan - 31 Jan 2005
01 Dec - 31 Dec 2004
01 Nov - 30 Nov 2004
01 Oct - 31 Oct 2004
01 Sep - 30 Sep 2004
01 Aug - 31 Aug 2004

Stuff

Powered by Pivot  
XML: RSS feed 
XML: Atom feed 

§ Why don't I drop Windows 98 support?

A while back, someone asked why I don't simply drop Windows 98/ME support altogether.

The reason is, simply, that I don't yet have to.

For the most part, the rule for making a program compatible with down-level operating systems is as follows: don't use functionality that isn't available. I claim that this isn't that hard. If all you need is to call GetLongPathName(), simply check for the entry point using GetProcAddress(), and if it isn't present, emulate or stub it. It's poor style to fail to load on Windows 98 just because you called GetModuleAddressEx() in one spot. Using Unicode entry points can be a problem, since very few functions have their Unicode versions supported on Windows 95/98/ME, but UNICOWS, the Microsoft's Unicode API emulation layer, is available for that if you want to take the easy route.

Now, there are a couple of good justifications for dropping Windows 95/98/ME support. One is memory: if you require at least 1GB of memory, you might as well drop 9x support, because there are very few stable 9x systems out there with that much RAM due to a kernel address space problem with the default cache behavior. The second is testing -- the share of 9x systems out there is minimal at this point, and in commercial development, it probably isn't worth the cost of testing those platforms. If you don't test those platforms, you might as well not support them at all, because you won't be able to state with confidence that it will run on 9x platforms or devote real development time to fix any problems that are found anyway. On an open-source project with less formal development/release/testing processes, however, there are fewer excuses.

In VirtualDub's case, there are also more specific circumstances in which it would be very annoying not to be able to run on 9x platforms. Some video capture devices never made the transition successfully to the NT driver model, and thus are permanently stranded. Other devices performed better under 9x, at least at one time. Finally, there are some perfectly good 9x systems out there that can't make the jump to XP, either due to general lack of drivers, or due to memory; VirtualDub and Windows 98 will run comfortably in 96MB of memory, but you would have to be insane to run Windows XP on that much. I see being able to run on these down-level platforms as a distinctive feature.

Comments

Comments posted:


Have you had to make any major adjustments or drop any planned features to retain 9x support?

fredgiblet - 04 09 06 - 21:09


IIRC, Unicows has an annoying redist license (though it's been years since I looked at it and it may have changed). Maybe it was just GPL-incompatibility that bugged me or something.

Glenn Maynard - 05 09 06 - 14:38


Let the Win98 support naturally fade out, new compilers from M$ will did it automatically.

johnsonlam (link) - 05 09 06 - 21:17


I'm grateful that Virtual Dub works on Windows 95, since I still use (and prefer) it myself and recently got myself an older video capture device to tinker with. Such a development strategy is refreshing nowadays. Keep up the good work!

Andrew T. - 05 09 06 - 23:37


I haven't had to make any major changes to development to support Win9x, although I did have to put some effort into creating dual ANSI/Unicode paths for some UI. That's still a bit of a half-done job, though, because there are a couple of places that are still ANSI-only.

You might be right on the Unicows license, although I think it's in the PSDK now, which may have changed the license. When I looked at it, I was skeptical anyway about its ability to translate window messages to newer UI components in the common controls library.

Note that, as I have said before, I plan to drop support for Windows 95 in version 1.7, the main reason being... you guessed it, VC8. I suspect that Microsoft may drop support for Win9x entirely in the Orcas timeframe, or definitely the next release of VC++ after that.

Phaeron - 05 09 06 - 23:49


Does that mean that 98 support will be gone too or are 95 and 98 different from a programmers standpoint?

fredgiblet - 06 09 06 - 20:43


No, I will be keeping Windows 98 support for the near future. Windows 95 and 98 are not hugely different in architecture, but Windows 98 adds a number of useful APIs in common with NT4 SP3, and a newer version of the common controls library.

Phaeron - 06 09 06 - 23:19


I always have daul boot XP/win98, so as to have an emergency OS, and I'm very glad that I can still capture there. In any case, I would keep a w98 vdub, but it's nice bugs are still taken care for this old systems, thanks!

isidro - 07 09 06 - 01:11


If the redist license of Unicows irks you, you can try libunicows or opencow (which one of them is more complete escapes me at this moment, but it shouldn't be hard to figure out).

mpz - 07 09 06 - 07:54


I appreciate you keeping compatibility with Win98, as the machine I use for VirtualDub would not easily be upgraded to Windows XP.

Ado - 15 09 06 - 08:02


Running VirtualDub on my Windows95 Laptop, 130mgz (or 150?), 32mb of ram.
XVid runs perfectly fine.

I love it ^^

MadHatmaker - 06 10 06 - 20:53


2008 and still using w98++.
w98++ because it has got so many upgrades, patches and fixes that it barely looks like it was 10 years ago.
You would be surprised how many XP-only still works on w98.

I copied this article on MSFN forums:
http://www.msfn.org/board/VirutalDub-Dev..

Thanks for VirtualDub!

Fredledingue (link) - 22 05 08 - 16:13


"I claim that this isn't that hard. If all you need is to call GetLongPathName(), simply check for the entry point using GetProcAddress(), and if it isn't present, emulate or stub it. It's poor style to fail to load on Windows 98 just because you called GetModuleAddressEx() in one spot. "
And don't use the Ex function if the original function can do what you need to do.

Yuhong Bao (link) - 16 01 11 - 11:54


Its alive!

98 - 17 03 14 - 18:07


Although, I've left Windows 98 myself several years ago, I'm glad to this phylosophy followed. I guess Microsoft was doing the opposite: releasing updated compiles of their utilities just to ensure they break support. They managed to make Notepad, card games, and even Pinball, incompatible, without substantial functional improvements to these products.

There most definitely were capture cards, as well as sound cards, and video cards, with good VxD drivers. But even if the current VD no longer runs, old versions are still readily available to make use of, unlike Microsoft, which has universal answer to every problem: upgrade to the latest version. Sadly, many free ware and free software authors also subscribe to this model.

j7n - 18 03 14 - 07:27

Comment form


Please keep comments on-topic for this entry. If you have unrelated comments about VirtualDub, the forum is a better place to post them.
Name:  
Remember personal info?

Email (Optional):
Your email address is only revealed to the blog owner and is not shown to the public.
URL (Optional):
Comment: /

An authentication dialog may appear when you click Post Comment. Simply type in "post" as the user and "now" as the password. I have had to do this to stop automated comment spam.



Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.