In previous blog entries we have talked about the issues of software rot and bloat which are common issues with software on Windows. Many times an uninstall programs will simply crash or fail to remove all the installed items. The user is often left to guess what will happen when they run the uninstaller. Likewise it is not always obvious what effect installing a program has on the system. These situations can make a user feel powerless. To help combat this situation I am announcing the first release of Install Monitor.
Install Monitor was developed to give control back to users. It shows you exactly what a program is doing to your system. This makes it easier to remove the program if you choose. It also gives you information that allows you to compare programs to see how big or bloated they are. How does it work? Install Monitor works by monitoring the applications that get installed on your system and tracking what file and registry resources they create. The monitored program can then be more easily managed. It works similar to Programs and Features in Windows. However it provides you with much more information. For instance after you uninstall a program you can see exactly what the program left behind.
An important point to remember is that Install Monitor is a tool like Sysinternals Process Monitor or Windows Registry Editor. It tries to prevent information in a useful way but ultimately the user has to make the decision if he wants to remove something. Consequently if used incorrectly something that is important may be removed. Also programs that were installed without monitoring have less information available.
Install Monitor runs on both 32-bit and 64-bit versions of Microsoft Windows Vista (SP1 and later) and Windows 7. It is free for personal and home use. For business/corporate use contact us by email.
This is just the first release. Future releases will make it easier and safer to use and more reliable and efficient. They will also provide more information and better support for unmonitored programs. Future posts will provide more information about how to get most use out of Install Monitor. Install Monitor is available on the download page.
A service is another type of background program. Services are processes that can run without a user being logged on. They support controls or messages like starting and stopping that are sent from the Service Control Manager. They can start automatically on system startup or manually by an application.
Services are typically used for software that needs to run all the time such as antivirus and to provide functionality to local and network applications. Another feature of services is that they are usually not tied to a single user but to the machine. For most standalone viewer programs like our widget viewer, there is no need for a separate service. A common type of service is an updater service for an application. Last time we discussed alternative solutions.
If a service is needed for some functionality how can the effect on a user’s machine be limited? First it might make sense to see if there is not an already built-in service that provides similar functionality that can be used. Another way is to provide a way to turn of the feature that requires the service. Going back to our widget viewer example, one feature it may offer is the ability to share widgets with people over the network which require a service for this. If a user does not want that functionality it would make sense to disable the service as well. Another way to be more efficient when using services is to combining them into a single process. Also it makes sense to have the service only start when needed or use trigger start services in Windows 7.
Another type of background process is an update program. Some programs have the updater process run all the time, though it is only needed for checking for and installing updates. It makes little sense for a process that does nothing the majority of the time to be running all the time.
Why is this so common? Part of the problem stems from the lack of a central update mechanism for 3rd party program in Windows. Microsoft programs are able to use Windows Update to receive updates. However 3rd party programs are forced to develop their own update mechanism. One of the easiest ways to do this is to have a program that is always running that periodically checks for updates. But when everybody does that you have several update programs always running that do nothing the majority of the time.
What are some alternatives to an always running update program? For most programs like our widget viewer it makes sense to check for updates on startup or shutdown. Like I mentioned last time, another option is to use the Task Scheduler or if the program has a background service, the service can perform the update check.
Last time I talked about some of the reasons there are so many background programs. One category of background programs are used for quicker access to the user interface of a program. These programs usually place an icon in the notification area of the taskbar. Usually the purpose is to provide quicker access to the main program or make it faster to start. Some programs do this as a way of saying “Hey, look at me. I’m working.” However if every program adds an icon to the notification area for easier access it defeats its purpose.
The notification area is mainly for notifications and status. Most programs do not need to constantly show notifications and status. This is true especially if the program is a standalone program such as a widget viewer. Any additional user interface should be off by default and can possibly allow the user to opt-in for convenience. Also when the user has not chosen to have the program’s presence in the notification area, in most cases the program should not continue to run in the background. Another option to a constantly running program is to use the Task Scheduler or if the program has a background service, the service can temporarily start the program to show status or notifications when appropriate.
One of the characteristics of bloatware is unnecessary programs running in the background. In the example last time Application Foo had five programs running and all you needed it for was viewing widgets. Many times these background programs are unnecessary or should be optional. They generally fall into a few categories like providing easier user-interface access, update functionality, extra functionality, and support programs.
Why are there so many background programs? Many times for programmers the easy solution to a problem is to just add another program. It usually requires more engineering to figure out solutions that are more optimized. Software develops tend to think in terms of only their product and not about the cumulative effect of other developers making similar decisions. For example if every program requires 5 unnecessary programs the users machine is soon bogged down with unnecessary programs. Unfortunately the user is left to suffer the consequences of the extra programs. The extra programs require greater power and resource usage. They can slow system startup and keep the system busier. They also clutter process listings like in Task Manager.
What can users do? Sometimes there is an alternative program that provides the same functionality that is less bloated. Other times users are not left with many options if the software is needed for hardware like a printer. In a few cases programs will offer ways to turn of the background programs by disabling unused features. In most cases users are sometimes left to disabling background programs through the registry. In a subsequent post we will look at why a lot of background programs are unnecessary.