All of the alternatives to Jet and Access are also free (at least in the same sense that Jet and MDB is free).
SQL Server 2005 Express is free MSDE (SQL Server 2000 desktop) is free.NET is free.NET SDK and compilers are free all the drivers to interact between the two are free
Many people choose to purchase Visual Studio (or an MSDN subscription), but its not at all necessary. There are other IDEs.
And how about moving IE's temp files somewhere else? Okay, you can still set permissions on the folder, but get it out of the user's profile. What's the concern with this? Just curious.
It's got to be readable and writeable by the user, and only the user. But its got to not roam or consumer home-folder space. Where would you rather have it?
Do you have a specific set of operations that will demonstrate Firefox not returning memory to the OS as well as other browsers? If so, post them and we can have some solid information on the problem. Did you not read my original post on this thread?
In there is a step by step set of repro steps. Consistently reproducible.
I wonder how you can ask this question, when you've replied to two of my posts that provided exactly the information you've asked for.
Maybe this is the attitude that the firefox devs have, and explains why it isnt getting fixed.
But shouldnt it default to a sane setting? Any setting that ends up with 800-1000MB of physical memory usage after a week of running (always growing, never shrinking) is not sane.
Did you read your own links? The first one clearly states that the section you quoted was just applicable for one memory allocation technique on one type of operating system (malloc on Unix).
It also pointed out a memory allocation technique that DOES return memory to the OS, mapmalloc.
There are numerous memory allocation techniques in Windows, and you can create your own or purchase 3rd party tools to do so. Many of them actively advertise that they're orders of magnitudes faster than malloc on windows. The reason I bring this up is that malloc isnt the only way to do things.
I cant speak to O/S specific kernel calls and such, as thats not my specialty, but I can sit and watch several different pieces of software shrink their physical/working set when the memory is no longer needed. I can watch Opera and IE do it. I can watch database servers do it (MS SQL Server, with memory in dynamic mode). I'm sure I could come up with others if needed.
Now its possible that its freeing memory up and the O/S is paging it out. That would be okay, VM usage is not that big of a deal. But if these other pieces of software can do it, why cant Firefox?
I'm looking at working set in physical memory, on winXP.
A typical scenario will be right now Firefox with 5 tabs open. Been open for a couple days, maybe 4 standbys and 1 hibernate.
Firefox 2.0.0.9
Working Set Private - 200,000 K Working Set Shareable - 45,000 K Working Set Shared - 32,000 K (rounded the numbers to the thousands)
(as a comparison, VM Private Bytes are 205,000 K, with Virtual Size 385,000K)
Those ratios are roughly typical. So when it gets up over 500-600MB, the ratios are about the same.
In a more typical scenario, when I've got 20-30 tabs open all the time (stuff I want to come back to later, etc), and the box runs for a week, with like 20 standbys and a few hibernates, FireFox will start pushing close to 1GB of physical memory use.
Note that this behavior is consistent across severals years, and a number of different laptops (and therefore windows builds).
As another comparison, I've got Opera open with 32 tabs, been running for a few days, about the same duration as Firefox, and its got 116,000K working set private, with another 8,000 K shareable and shared.
Good Lord, its trivial to reproduce the memory leak issue.
Open up digg.com (without your noscript extension running).
Open the first 20 or 30 pages in new tabs.
Close them, repeat.
Firefox will now be using in excess of 500MB of memory.
Close firefox and re-open (with the same session), and FireFox will drop to between 100-200MB.
Let it sit or browse again, watch it inflate memory use again.
Close all the tabs except one, go to about:blank (or whatever firefox calls it).
Notice how the memory use doesnt go down?
These are pretty much textbook definitions of memory leaking, firefox is consuming memory when it needs it, but then not giving the memory back when its done.
It's quite easy to get FF to grow up to 1GB or so of memory usage, standby and hibernate helps.
It's trivially reproducible.
The only way you dont encounter this is if you use very few tabs, and you close and restart firefox often.
So who is it that you're saying has been sued by MS over patent violations, where its done by MS non-defensively?
All I see in the link you posted is Ballmer mouthing off, and the various 'experts' consulted by the article writer saying how its nonsense.
In fact, I think if you do your research, you'll find that MS uses their patent portfolio very much like the rest of the IT players that size do, defensively. They GET sued quite a bit by small time frys who sometimes win 'teh big money'.
Most of these kinds of large IT or software companies keep it pretty reasonable wrt patent enforcement, and mostly use it as a MAD (Mutually Assured Destruction), much like Sun is doing here, in case they get sued over patents.
It's funny, because its tacit recognition that the patent system is broken, as all these large companies know they violate someone's meaningless patent, and there's no way to run a technology business without doing so. So they dont try to not break other's patents, they collect patents to hold in hand to persuade others not to sue them.
ASM is powerful, heck, even XSLT is powerful by some definitions. That doesnt make them very useful.
It has a lot of warts, much of which these guys are (for better or worse) trying to clean up. You can basically read the feature-list for ES4 for everthing that is wrong with JavaScript/EcmaScript now.
JavaScript right now is basically perl-for-the-web. It only really appeals to people who enjoy finding the most arcane, esoteric ways to do common-day stuff, such that its hard for others to read & reuse.
I think the bottom line metric for what's wrong with JavaScript is how you pretty much have to get 'tricky' with the language to do anything useful. The fact that the language can be extended at runtime to do everything it does is interesting, and shows off how loose (ie, powerful) it is. But you shouldn't have to get tricky in a language to do common things. Thats always a bad sign.
Completely different to Windows trojans which automatically install. Actually, no. The trojan being compared (Storm Worm) functions exactly as you describe. No exploits, no vulnerability, pure social engineering. And thats the big one in the windows world right now.
Proper presentation software would give you a proper click able control screen where you can click back and forth. Like PowerPoint in 'Presentation Mode'? Where the preso goes to the projector screen, and a control panel with notes and clickable forward/back buttons goes to your laptop screen?
I'm sure 99% of presentations are not made on a plane but back at the office Yes, 99% of presentations are started in the office, but they're often worked on right up to the minute of the presentation. And hotel wireless/network is notoriously flaky.
In fact, I'll often go through a couple dry runs (if its an important enough preso that I care how it goes) in the hotel room, and then be tweaking it up to the very hour of hte preso. Having to deal with my sprint evdo or hotel wifi/wireless is a problem I dont need in that situation.
Would not something in the PATH environment variable (or whatever Windows calls them) BE a system-wide resource directory? Nope. You can put your home directory on PATH, it doesnt make your home directory a system directory.
Regardless of the semantics, the majority of Mac apps will work, or even work perfectly if you just drag the app somewhere else (on your computer, or to another computer). ANYWHERE else. This includes big, heavyweight apps. Try dragging word.exe around and see what happens. Did anyone say otherwise? Did I ever claim that MS word was a portable app?
The post you replied to here was correcting a factual error in the grandparent, and suggesting that the poster take his own advice about not mouthing off about things you dont know much about.
We see a lot of apologists here saying it's hard for manufacturers to support Linux as a platform. There's no excuse now - just provide specs, and your device will be supported at no cost to you. Unless its a printer, a scanner, a digital camera, a phone, a media player, a video card, a gps device, a fingerprint scanner, or a winmodem.
Oh and also even if its a kernel driver, if someone else has already started it, but its not complete, they're not interested.
With all of those restrictions, I'm not surprised there are only 6 projects.
These are KERNEL driver developers. A completely different skillset. Thats not the whole story though.
They're not even willing to help on kernel drivers if the support has already been started, but is not complete:
http://linuxdriverproject.org/twiki/bin/view/Main/DriversNeeded
If the device you are concerned about already works in Linux, but not as well as you would like it to, or with reduced functionality, please do not list it here. Instead, contact the author of the driver and work with them to fix the problem or add the new features. If they were really interested in helping, then they would take the suggestions on the wiki and THEY would contact the owners of the already-started project, rather than asking end-users to do so.
Actually both of our analogies are terrible, because private or public companies dont map well to the non-organization of these open source projects.
I guess I could have summarized everthing I said by saying:
These folks do a terrible job with presentation. No one is going to have any sympathy or support for someone who complains that there is no work to do, and then goes to their website to see them rule out 95% of the work, because its 'out of scope'.
It may indeed be out of scope, but man oh man is that a terrible way to go looking for help. It just reinforces many of the common negative stereotypes about the open source community and the linux folks in particular.
Thats a terrible analogy. A better one would be calling the water company when your water doesnt work, but the receptionists at the water company say they cant help because the problem is in the pipes, and they dont work on pipes, they only work on customer service issues. You should go talk to the pipes guys. But the end-user shouldnt have to know or care of the water company's internal misallocation of resources, they just want the water to work. If the water doesnt work, then it doesnt matter whose 'job' it is, the system is a failure.
No one cares about the internal organizational structure of one small subcomponent of a linux system. They just want their devices to work.
Overall, it sounds like an organizational failure (ie, a failure to properly organize, not a failure in an 'organization').
Overall, its pretty smarmy to put out an article saying you have all these people and nothing to work on, and then you get to the website and they list all the things that they wont work on, which amounts to the vast majority of driver issues that people care about.
To make it worse, they arent interested in helping even IF it is a kernel driver, if its already been started and it just needs to be more complete. He tells you to go talk to those guys. If they were really interested in helping, they would take the initiative, accept those requests, and make the contact themselves.
My read of this, based on that webpage (ie, TFA), is that these arent pros trying to solve real problems. They're hobbyist types who only want to work on new and interesting stuff, and couldnt be bothered to put their efforts where its really needed.
That may not be an accurate description, but that sure seems to be the message they're putting out there.
You're right in that the end-result in the windows world is nowhere near as nice as what you describe. It sure would be nice.
This is a combination of a couple things.
1. Bad ISV developers. A surprising percentage of the developers for windows software dont have a clue what they're doing, or how to properly develop software for the windows platform. It's well documented, trivial (and free) to become an ISV partner with Microsoft, and this documentation is available without even doing that.
So you get developers dropping stuff into various directories unnecessarily, or storing things in the registry, which is unnecessary.
It is entirely possible to write windows apps that are completely portable, that you can just copy the flat between systems and it works just fine. Many of the open source software apps are done like this. Take FileZilla client, for example. Or 7-Zip. All the DLLs are in the same directory as the executable, and it doesnt (by default) use the registry to store settings.
These apps could be made even better by storing per-user settings in the user profile home.
2. COM. If you need to make components that are part of your app available to other components in the system, then you'll need to register them with COM. This goes into the registry, and is a per-machine setting.
Note however, that since XP there are some neat things you can do to avoid even this in some use-cases, called registration free COM (IIRC). Again, it is done by having your files in the same directory, and having a manifest.
3. Shell integration. If you need to have your app integrate with the shell, that will require some sort of 'setup' to be run and to do that. However, as an alternative, you could (and many apps do) just check the shell integration on startup.
4. System Integration. Any apps that need to install drivers, or hook into the system in a deeper level, say into the network stack. If this is the case, you're instantly non-portable.
So you're right, the vast majority of apps on windows are not designed to be machine portable. But thats a conscious choice by the developers, and is not in any way required by the platform. MS makes it quite clear how to manage that, if you want it, and if the use-case of your software makes it possible.
If you're going to criticize something it helps if you have the slightest clue what you're talking about. You should follow your own advice.
By contrast, Windows applications have a tendency to sprawl over the hard drive, copying things into shared system-wide resource directories because that is how a library is registered in the windows world. Incorrect. It uses a path search system, same as every other mainstream OS out there. So you can use libraries without registering them with the OS at all, if they're in the same directory as the executable.
Or it needs to be dropped into somewhere on PATH, or PATH needs to be modified to include the directory. If you want it accessible by ProgID, then you need to do regsvr32 or the api equiv.
None of these options require dropping files into system-wide resource directories.
I don't know of any technical reason that a real implementation of this can't be hacked into Windows, but then again, with Windows, even multiple monitors are a PITA. Modal dialogs showing on the wrong monitor, modal dialogs showing on a non-existent monitor (!), window maximization not working properly if the screens are different geometries, etc. That is highly atypical.
I've been using multimon on windows for many many years and have never seen those problems, except very occasionally the first. The behavior of the first is app-dependent, not windows dependent. The apps have to remember which desktop they're on and place the modal dialog in the appropriate one.
Some do this better than others. But maximize not working properly? Never, not once. It just maximizes... what could go wrong? Some of the video card makers offer an extra ability to one-click maximize across all the monitors, but thats hardly ever useful. Only time I've ever used it that way was with a giant freaking Excel document.
Making an account a member of the "power users" group on XP is pretty much impossible for anyone who doesn't already know how to do it. I don't know why the "power user" was relegated to obscurity in XP. Because you shouldnt be using it. It provides no protections compared to running as admin. It's been officially deprecated in Vista, and will be gone in the next version.
There's not really any compelling reason to run as Power Users, you may as well just use admin.
I found it to be a reasonable balance between running as a limited user and an administrator. It's not.
It provides no additional security protections, and you get the benefit of using a deprecated, non-standard configuration.
You can disable it, but then you lose compatibility with some older programs and you lose the ability to communicate with older windows based systems using the microsoft networking protocols. This doesnt really come up as a problem anymore though, and hasnt for years. Disabling the LM hash will only break windows 2000 machines with early service packs or earlier OS's, so its really a non-issue.
About the only thing we see that sometimes breaks poorly-written/older apps is using DFS. Some apps dont deal well with DFS and require regular UNCs or (God help us) mapped drives.
Theres just one small problem with your premise.
.NET is free .NET SDK and compilers are free
All of the alternatives to Jet and Access are also free (at least in the same sense that Jet and MDB is free).
SQL Server 2005 Express is free
MSDE (SQL Server 2000 desktop) is free
all the drivers to interact between the two are free
Many people choose to purchase Visual Studio (or an MSDN subscription), but its not at all necessary. There are other IDEs.
If you actually could be bothered to read TFA, you'd see that this was 100% programmer error.
It's got to be readable and writeable by the user, and only the user. But its got to not roam or consumer home-folder space. Where would you rather have it?
In there is a step by step set of repro steps. Consistently reproducible.
I wonder how you can ask this question, when you've replied to two of my posts that provided exactly the information you've asked for.
Maybe this is the attitude that the firefox devs have, and explains why it isnt getting fixed.
That may be, that its user-configurable.
But shouldnt it default to a sane setting? Any setting that ends up with 800-1000MB of physical memory usage after a week of running (always growing, never shrinking) is not sane.
Did you read your own links? The first one clearly states that the section you quoted was just applicable for one memory allocation technique on one type of operating system (malloc on Unix).
It also pointed out a memory allocation technique that DOES return memory to the OS, mapmalloc.
There are numerous memory allocation techniques in Windows, and you can create your own or purchase 3rd party tools to do so. Many of them actively advertise that they're orders of magnitudes faster than malloc on windows. The reason I bring this up is that malloc isnt the only way to do things.
I cant speak to O/S specific kernel calls and such, as thats not my specialty, but I can sit and watch several different pieces of software shrink their physical/working set when the memory is no longer needed. I can watch Opera and IE do it. I can watch database servers do it (MS SQL Server, with memory in dynamic mode). I'm sure I could come up with others if needed.
Now its possible that its freeing memory up and the O/S is paging it out. That would be okay, VM usage is not that big of a deal. But if these other pieces of software can do it, why cant Firefox?
I'm looking at working set in physical memory, on winXP.
A typical scenario will be right now Firefox with 5 tabs open. Been open for a couple days, maybe 4 standbys and 1 hibernate.
Firefox 2.0.0.9
Working Set Private - 200,000 K
Working Set Shareable - 45,000 K
Working Set Shared - 32,000 K
(rounded the numbers to the thousands)
(as a comparison, VM Private Bytes are 205,000 K, with Virtual Size 385,000K)
Those ratios are roughly typical. So when it gets up over 500-600MB, the ratios are about the same.
In a more typical scenario, when I've got 20-30 tabs open all the time (stuff I want to come back to later, etc), and the box runs for a week, with like 20 standbys and a few hibernates, FireFox will start pushing close to 1GB of physical memory use.
Note that this behavior is consistent across severals years, and a number of different laptops (and therefore windows builds).
As another comparison, I've got Opera open with 32 tabs, been running for a few days, about the same duration as Firefox, and its got 116,000K working set private, with another 8,000 K shareable and shared.
Good Lord, its trivial to reproduce the memory leak issue.
Open up digg.com (without your noscript extension running).
Open the first 20 or 30 pages in new tabs.
Close them, repeat.
Firefox will now be using in excess of 500MB of memory.
Close firefox and re-open (with the same session), and FireFox will drop to between 100-200MB.
Let it sit or browse again, watch it inflate memory use again.
Close all the tabs except one, go to about:blank (or whatever firefox calls it).
Notice how the memory use doesnt go down?
These are pretty much textbook definitions of memory leaking, firefox is consuming memory when it needs it, but then not giving the memory back when its done.
It's quite easy to get FF to grow up to 1GB or so of memory usage, standby and hibernate helps.
It's trivially reproducible.
The only way you dont encounter this is if you use very few tabs, and you close and restart firefox often.
So who is it that you're saying has been sued by MS over patent violations, where its done by MS non-defensively?
All I see in the link you posted is Ballmer mouthing off, and the various 'experts' consulted by the article writer saying how its nonsense.
In fact, I think if you do your research, you'll find that MS uses their patent portfolio very much like the rest of the IT players that size do, defensively. They GET sued quite a bit by small time frys who sometimes win 'teh big money'.
Most of these kinds of large IT or software companies keep it pretty reasonable wrt patent enforcement, and mostly use it as a MAD (Mutually Assured Destruction), much like Sun is doing here, in case they get sued over patents.
It's funny, because its tacit recognition that the patent system is broken, as all these large companies know they violate someone's meaningless patent, and there's no way to run a technology business without doing so. So they dont try to not break other's patents, they collect patents to hold in hand to persuade others not to sue them.
Powerful does not mean good or useful.
ASM is powerful, heck, even XSLT is powerful by some definitions. That doesnt make them very useful.
It has a lot of warts, much of which these guys are (for better or worse) trying to clean up. You can basically read the feature-list for ES4 for everthing that is wrong with JavaScript/EcmaScript now.
JavaScript right now is basically perl-for-the-web. It only really appeals to people who enjoy finding the most arcane, esoteric ways to do common-day stuff, such that its hard for others to read & reuse.
I think the bottom line metric for what's wrong with JavaScript is how you pretty much have to get 'tricky' with the language to do anything useful. The fact that the language can be extended at runtime to do everything it does is interesting, and shows off how loose (ie, powerful) it is. But you shouldn't have to get tricky in a language to do common things. Thats always a bad sign.
You do realize that the Storm worm and similar attacks dont rely on any sort of vulnerability at any stage of their attacks, right?
They rely on someone unzipping and executing a piece of software received by email or from a weblink as root. Thats it.
In fact, I'll often go through a couple dry runs (if its an important enough preso that I care how it goes) in the hotel room, and then be tweaking it up to the very hour of hte preso. Having to deal with my sprint evdo or hotel wifi/wireless is a problem I dont need in that situation.
The post you replied to here was correcting a factual error in the grandparent, and suggesting that the poster take his own advice about not mouthing off about things you dont know much about.
Oh and also even if its a kernel driver, if someone else has already started it, but its not complete, they're not interested.
With all of those restrictions, I'm not surprised there are only 6 projects.
They're not even willing to help on kernel drivers if the support has already been started, but is not complete:
http://linuxdriverproject.org/twiki/bin/view/Main/DriversNeeded If the device you are concerned about already works in Linux, but not as well as you would like it to, or with reduced functionality, please do not list it here. Instead, contact the author of the driver and work with them to fix the problem or add the new features. If they were really interested in helping, then they would take the suggestions on the wiki and THEY would contact the owners of the already-started project, rather than asking end-users to do so.
Actually both of our analogies are terrible, because private or public companies dont map well to the non-organization of these open source projects.
I guess I could have summarized everthing I said by saying:
These folks do a terrible job with presentation. No one is going to have any sympathy or support for someone who complains that there is no work to do, and then goes to their website to see them rule out 95% of the work, because its 'out of scope'.
It may indeed be out of scope, but man oh man is that a terrible way to go looking for help. It just reinforces many of the common negative stereotypes about the open source community and the linux folks in particular.
Thats a terrible analogy. A better one would be calling the water company when your water doesnt work, but the receptionists at the water company say they cant help because the problem is in the pipes, and they dont work on pipes, they only work on customer service issues. You should go talk to the pipes guys. But the end-user shouldnt have to know or care of the water company's internal misallocation of resources, they just want the water to work. If the water doesnt work, then it doesnt matter whose 'job' it is, the system is a failure.
No one cares about the internal organizational structure of one small subcomponent of a linux system. They just want their devices to work.
Overall, it sounds like an organizational failure (ie, a failure to properly organize, not a failure in an 'organization').
Overall, its pretty smarmy to put out an article saying you have all these people and nothing to work on, and then you get to the website and they list all the things that they wont work on, which amounts to the vast majority of driver issues that people care about.
To make it worse, they arent interested in helping even IF it is a kernel driver, if its already been started and it just needs to be more complete. He tells you to go talk to those guys. If they were really interested in helping, they would take the initiative, accept those requests, and make the contact themselves.
My read of this, based on that webpage (ie, TFA), is that these arent pros trying to solve real problems. They're hobbyist types who only want to work on new and interesting stuff, and couldnt be bothered to put their efforts where its really needed.
That may not be an accurate description, but that sure seems to be the message they're putting out there.
You're right in that the end-result in the windows world is nowhere near as nice as what you describe. It sure would be nice.
This is a combination of a couple things.
1. Bad ISV developers. A surprising percentage of the developers for windows software dont have a clue what they're doing, or how to properly develop software for the windows platform. It's well documented, trivial (and free) to become an ISV partner with Microsoft, and this documentation is available without even doing that.
So you get developers dropping stuff into various directories unnecessarily, or storing things in the registry, which is unnecessary.
It is entirely possible to write windows apps that are completely portable, that you can just copy the flat between systems and it works just fine. Many of the open source software apps are done like this. Take FileZilla client, for example. Or 7-Zip. All the DLLs are in the same directory as the executable, and it doesnt (by default) use the registry to store settings.
These apps could be made even better by storing per-user settings in the user profile home.
2. COM. If you need to make components that are part of your app available to other components in the system, then you'll need to register them with COM. This goes into the registry, and is a per-machine setting.
Note however, that since XP there are some neat things you can do to avoid even this in some use-cases, called registration free COM (IIRC). Again, it is done by having your files in the same directory, and having a manifest.
3. Shell integration. If you need to have your app integrate with the shell, that will require some sort of 'setup' to be run and to do that. However, as an alternative, you could (and many apps do) just check the shell integration on startup.
4. System Integration. Any apps that need to install drivers, or hook into the system in a deeper level, say into the network stack. If this is the case, you're instantly non-portable.
So you're right, the vast majority of apps on windows are not designed to be machine portable. But thats a conscious choice by the developers, and is not in any way required by the platform. MS makes it quite clear how to manage that, if you want it, and if the use-case of your software makes it possible.
Or it needs to be dropped into somewhere on PATH, or PATH needs to be modified to include the directory. If you want it accessible by ProgID, then you need to do regsvr32 or the api equiv.
None of these options require dropping files into system-wide resource directories.
I've been using multimon on windows for many many years and have never seen those problems, except very occasionally the first. The behavior of the first is app-dependent, not windows dependent. The apps have to remember which desktop they're on and place the modal dialog in the appropriate one.
Some do this better than others. But maximize not working properly? Never, not once. It just maximizes
There's not really any compelling reason to run as Power Users, you may as well just use admin. I found it to be a reasonable balance between running as a limited user and an administrator. It's not.
It provides no additional security protections, and you get the benefit of using a deprecated, non-standard configuration.
About the only thing we see that sometimes breaks poorly-written/older apps is using DFS. Some apps dont deal well with DFS and require regular UNCs or (God help us) mapped drives.