Software bloat

Last updated

Software bloat is a process whereby successive versions of a computer program become perceptibly slower, use more memory, disk space or processing power, or have higher hardware requirements than the previous version, while making only dubious user-perceptible improvements or suffering from feature creep. The term is not applied consistently; it is often used as a pejorative by end users, including to describe undesired user interface changes even if those changes had little or no effect on the hardware requirements. In long-lived software, perceived bloat can occur from the software servicing a large, diverse marketplace with many differing requirements. Most end users will feel they only need some limited subset of the available functions, and will regard the others as unnecessary bloat, even if end users with different requirements require those functions.

Contents

Actual (measurable) bloat can occur due to de-emphasising algorithmic efficiency in favour of other concerns like developer productivity, or possibly through the introduction of new layers of abstraction like a virtual machine or other scripting engine for the purposes of convenience when developer constraints are reduced. The perception of improved developer productivity, in the case of practising development within virtual machine environments, comes from the developers no longer taking resource constraints and usage into consideration during design and development; this allows the product to be completed faster but it results in increases to the end user's hardware requirements and/or compromised performance as a result.

The term "bloatware" is also used to describe unwanted pre-installed software or bundled programs. [1]

Types of bloat

Program bloat

In computer programming, code bloat refers to the presence of program code (source code or machine code) that is perceived as unnecessarily long, slow, or otherwise wasteful of resources.

Causes

Software inefficiency

Software developers involved in the industry during the 1970s had severe limitations on processing power, disk space and memory. Every byte and clock cycle was taken into account, and much work went into fitting the programs into available resources. Achieving this efficiency was one of the highest values of computer programmers, and the best programs were often called "elegant", a term used by mathematicians to describe a proof which is tidy, parsimonious and powerful.

By the 21st century, the situation had reversed. Resources were perceived as cheap, and rapidity of coding and headline features for marketing seen as priorities. [2] In part, this is because technological advances have since increased processing capacity and storage density by orders of magnitude, while reducing the relative costs by similar orders of magnitude (see Moore's law). Additionally, the spread of computers through all levels of business and home life has produced a software industry many times larger than it was in the 1970s. Programs are now usually churned out by teams, directed by committees in software development studios (also known as software houses or software factories) where each programmer works on only a part of the whole, on one or more subroutines.[ citation needed ]

Finally, software development tools and approaches often result in changes throughout a program to accommodate each feature, leading to a large-scale inclusion of code which affects the main operation of the software, and is required in order to support functions that themselves may be only rarely used. In particular, the advances in resources available have led to tools which allow easier development of code, again with less priority given to end efficiency.

Another cause of bloat is independently competing standards and products, which can create a demand for integration. There are now more operating systems, browsers, protocols, and storage formats than there were before, causing bloat in programs due to interoperability issues. For example, a program that once could only save in text format is now required to save in HTML, XML, XLS, CSV, PDF, DOC, and other formats.

Niklaus Wirth has summed up the situation in Wirth's law, which states that software speed is decreasing more quickly than hardware speed is increasing.

In his 2001 essay Strategy Letter IV: Bloatware and the 80/20 Myth, [3] Joel Spolsky argues that while 80% of the users only use 20% of the features (a variant on the Pareto principle), each one uses different features. Thus, "lite" software editions turn out to be useless for most, as they miss the one or two special features that are present in the "bloated" version. Spolsky sums the article with a quote by Jamie Zawinski referring to the Mozilla Application Suite (which later became SeaMonkey):

"Convenient though it would be if it were true, Mozilla is not big because it's full of useless crap. Mozilla is big because your needs are big. Your needs are big because the Internet is big. There are lots of small, lean web browsers out there that, incidentally, do almost nothing useful. [...] But being a shining jewel of perfection was not a goal when we wrote Mozilla." [4]

Software bloat may also be a symptom of the second-system effect, described by Fred Brooks in The Mythical Man-Month.

Bloatware

“Bloatware" is software that has become bloated through inefficiency or accretion of features as outlined above. [3] The term is also commonly used for preinstalled software bundled on a device, usually by the hardware manufacturer, that is mostly unwanted by the purchaser.

The term may also be applied to the accumulation of unwanted and unused software elements that remain after partial and incomplete uninstallation. These elements may include whole programs, libraries, associated configuration information, or other data. Performance may deteriorate overall as a result of such remnants, as the unwanted software or software components can occupy both hard disk memory and RAM, waste processing time, add disk I/O, and cause delays at system startup and shutdown. In the worst cases, the leftover software may interfere with the correct operation of wanted software. [5]

On Android devices some of the bloatware can be hidden from a user account with ADB, although this doesn't remove the application and will still take disk space, it won't run and slow down the system. [6] [7] By unlocking the bootloader, users can remove the bloatware's files, install a custom firmware or gain root privileges which allows the app to be fully uninstalled. [8]

Examples

Comparison of Microsoft Windows minimum hardware requirements (for x86 versions (except Windows 11) )
Windows versionProcessorMemoryHard disk
Windows 95 [9] (1995)25 MHz4 MB~50 MB
Windows 98 [10] (1998)66 MHz16 MB~200 MB
Windows 2000 [11] (1999)133 MHz32 MB650 MB
Windows XP [12] (2001)233 MHz64 MB1.5 GB
Windows Vista [13] (2006)800 MHz512 MB15 GB
Windows 7 [14] (2009)1 GHz1 GB16 GB
Windows 8 [15] (2012)1 GHz1 GB16 GB
Windows 10 [16] (2015)1 GHz1 GB16 GB
Windows 11 [17] (2021)1 GHz
64-bit
Dual-Core
4 GB64 GB

Apple's iTunes has been accused of being bloated by efforts to turn it from a simple media player to an e-commerce and advertising platform, [18] [19] with former PC World editor Ed Bott accusing the company of hypocrisy in its advertising attacks on Windows for similar practices. [20] In 2019, Apple announced the impending closure of the program, a move described by a commentator from The Guardian as being "long overdue", stating that the program had "become baroquely bloated, a striking anomaly for a company that prides itself on elegant and functional design." [21]

Microsoft Windows has also been criticized as being bloated – with reference to Windows Vista and discussing the new, greatly slimmed down Windows 7 core components, Microsoft engineer Eric Traut commented that "This is the core of Windows 7. This is a collection of components that we've taken out. A lot of people think of Windows as this really large, bloated operating system, and that may be a fair characterization, I have to admit. It is large. It contains a lot of stuff in it. But at its core, the kernel and the components that make up the very core of the operating system actually is pretty streamlined." [22] [23] Ed Bott also expressed skepticism, noting that nearly every operating system that Microsoft has ever sold has been criticized as "bloated" on first release, even those now regarded as the exact opposite, such as MS-DOS. [24] Quoting Paul Thurrott, Bott agreed that the bloat stems from numerous enterprise-level features included in the operating system that were largely irrelevant to the average home user.

CD- and DVD-burning applications such as Nero Burning ROM have become criticized for being bloated. [25] Superfluous features not specifically tailored to the end user are sometimes installed by default through express setups.

A number of technology blogs have also covered the issue of increased bloatware on cell phones. However, they refer to a different issue, specifically that of wireless carriers loading phones with software that, in many cases, cannot be easily, if at all, deleted. This has been most frequently cited with respect to Android devices, although this phenomenon exists on phones running many other operating systems. [26] [27]

Some of the most popular current messaging apps, which were previously only focused on instant messaging, have been criticized for being bloated due to feature creep. [28] [29] [30] [31] WeChat added additional features such as games, subscription services, WeChat Pay e-wallet, [28] a news aggregator, e-commerce hub, e-government [29] feature, cinema booking system, restaurant finder and ridesharing company, [31] which has increased the size of the app from 2 MB in 2011 to 58 MB in 2018.[ citation needed ] Facebook Messenger, which has been separated from the Facebook app, is similarly criticized for adding additional features such as games, bots and features which copied from Snapchat such as Messenger Day (Stories), face filters, a camera with the ability to edit photos, doodle draw and added emojis and stickers. [32] [33] In January 2018, the head of Facebook Messaging, David A. Marcus, admitted that the app itself is extremely bloated and promised to redesign the whole app to remove unnecessary features and streamline it. [30] The redesigned and streamlined Facebook Messenger app was announced in October 2018, in which its features are reduced to messaging, stories, discover tab and camera. [34]

Alternatives

Some applications, such as GIMP, and software with additional functionality from plug-ins, use extensions or add-ons which are downloaded separately from the main application. These can be created by either the software developer or by third-party developers. Plug-ins, extensions, and add-ons add extra functionality which might have otherwise been packaged in the main program.

Allowing these plug-ins, extensions, and/or add-ons reduces the space used on any one machine, because even though the application, the "plug-in interface", and all the plug-ins combined are larger than the same functionality compiled into one monolithic application, it allows each user to install only the particular add-on features they require, rather than forcing every user to install a much larger monolithic application that includes all of the available features. This results in a "stripped-down" or "out-of-the-box" application that is delivered in a compact package yet is ready for users to add any missing functionality.

Open source software may use a similar technique using preprocessor directives to include features at compile time selectively. This is easier to implement and more secure than a plugin system, but has the disadvantage that a user who wants a specific set of features must compile the program from source.

Sometimes software becomes bloated because of "creeping featurism" [35] (Zawinski's law of software envelopment). One way to reduce that kind of bloat is described by the Unix philosophy of "writing programs that do one thing and do it well," and breaking what would be a single, complicated piece of software into numerous simpler components which can be chained together using pipes, shell scripts, or other forms of interapplication communication.

Security Risk

Software bloat as a vulnerability

Software bloat may induce more vulnerabilities due to raise of difficulty in managing a large number of code and dependencies. Furthermore, it may make software developer difficulty to understand the code they ship, increasing the difficulty for spot and fix vulnerabilities. [36] [37]

Bloatware as a vulnerability

Although bloatware is not a form of malware and is not designed for malicious purposes, bloatware may introduce some vulnerabilities unintentionally and may cause the user's computer to have a higher risk for infection by computer viruses or ransomware. [38] [39]

See also

Related Research Articles

<span class="mw-page-title-main">Windows XP</span> Microsoft PC operating system released in 2001

Windows XP is a major release of Microsoft's Windows NT operating system. It was released to manufacturing on August 24, 2001, and later to retail on October 25, 2001. It is a direct successor to Windows 2000 for high-end and business users and Windows Me for home users.

Feature creep is the excessive ongoing expansion or addition of new features in a product, especially in computer software, video games and consumer and business electronics. These extra features go beyond the basic function of the product and can result in software bloat and over-complication, rather than simple design.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

A computing platform, digital platform, or software platform is the infrastructure on which software is executed. While the individual components of a computing platform may be obfuscated under layers of abstraction, the summation of the required components comprise the computing platform.

<span class="mw-page-title-main">Graphics Device Interface</span> Microsoft Windows API

The Graphics Device Interface (GDI) is a legacy component of Microsoft Windows responsible for representing graphical objects and transmitting them to output devices such as monitors and printers. It was superseded by DirectDraw API and later Direct2D API. Windows apps use Windows API to interact with GDI, for such tasks as drawing lines and curves, rendering fonts, and handling palettes. The Windows USER subsystem uses GDI to render such UI elements as window frames and menus. Other systems have components that are similar to GDI; for example: Mac OS has QuickDraw, and Linux and Unix have X Window System core protocol.

A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific to a hardware platform and operating system combination. To create applications with advanced functionalities such as advertisements, push notifications, etc; most application software developers use specific software development kits.

<span class="mw-page-title-main">Firefox</span> Free and open-source web browser by Mozilla

Mozilla Firefox is a free and open source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current and anticipated web standards. Firefox is available for Windows 10 and later versions of Windows, macOS, and Linux. Its unofficial ports are available for various Unix and Unix-like operating systems, including FreeBSD, OpenBSD, NetBSD, and other operating systems, such as reactOS. Firefox is also available for Android and iOS. However, as with all other iOS web browsers, the iOS version uses the WebKit layout engine instead of Gecko due to platform requirements. An optimized version is also available on the Amazon Fire TV as one of the two main browsers available with Amazon's Silk Browser.

In computing, minimalism refers to the application of minimalist philosophies and principles in the design and use of hardware and software. Minimalism, in this sense, means designing systems that use the least hardware and software resources possible.

<span class="mw-page-title-main">User Account Control</span> Security software

User Account Control (UAC) is a mandatory access control enforcement feature introduced with Microsoft's Windows Vista and Windows Server 2008 operating systems, with a more relaxed version also present in Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10, and Windows 11. It aims to improve the security of Microsoft Windows by limiting application software to standard user privileges until an administrator authorises an increase or elevation. In this way, only applications trusted by the user may receive administrative privileges and malware are kept from compromising the operating system. In other words, a user account may have administrator privileges assigned to it, but applications that the user runs do not inherit those privileges unless they are approved beforehand or the user explicitly authorises it.

Windows Vista, an operating system released by Microsoft for consumers on January 30, 2007, has been widely criticized by reviewers and users. Due to issues with new security features, performance, driver support and product activation, it has been the subject of a number of negative assessments by various groups.

The various versions of Microsoft's desktop operating system, Windows, have received various criticisms since Microsoft's inception.

<span class="mw-page-title-main">Windows Phone</span> Family of mobile operating systems developed by Microsoft

Windows Phone (WP) is a discontinued mobile operating system developed by Microsoft Mobile for smartphones as the replacement successor to Windows Mobile and Zune. Windows Phone featured a new user interface derived from the Metro design language. Unlike Windows Mobile, it was primarily aimed at the consumer market rather than the enterprise market.

Pre-installed software is software already installed and licensed on a computer or smartphone bought from an original equipment manufacturer (OEM). The operating system is usually factory-installed, but because it is a general requirement, this term is used for additional software apart from the bare necessary amount, usually from other sources.

<span class="mw-page-title-main">Instantbird</span> Cross-platform instant messaging client

Instantbird is a discontinued cross-platform instant messaging client based on Mozilla's XULRunner and the open-source library libpurple used in Pidgin. Instantbird is free software available under the GNU General Public License. Over 250 add-ons allow user customization of, and addition of, features. On October 18, 2017, Florian Quèze announced that "... we are stopping development of Instantbird as a standalone product."

<span class="mw-page-title-main">Windows Phone 7</span> First generation of Microsofts Windows Phone mobile operating system

Windows Phone 7 is the first release of the Windows Phone mobile client operating system, released worldwide on October 21, 2010, and in the United States on November 8, 2010. It runs on the Windows CE 6.0 kernel.

<span class="mw-page-title-main">Universal Windows Platform apps</span> Applications usable across all compatible Microsoft Windows devices

Universal Windows Platform (UWP) apps are applications that can be used across all compatible Microsoft Windows devices. They are primarily purchased and downloaded via the Microsoft Store, Microsoft's digital application storefront.

<span class="mw-page-title-main">Windows Phone 8.1</span> Third generation of Microsofts Windows Phone mobile operating system

Windows Phone 8.1 is the third generation of Microsoft Mobile's Windows Phone mobile operating system, succeeding Windows Phone 8. Rolled out at Microsoft's Build Conference in San Francisco, California on April 2, 2014, it was released in final form to Windows Phone developers on April 14, 2014 and reached general availability on August 4, 2014. All Windows Phones running Windows Phone 8 can be upgraded to Windows Phone 8.1, with release dependent on carrier rollout dates.

<span class="mw-page-title-main">Progressive web app</span> Specific form of single page web application

A progressive web application (PWA), or progressive web app, is a type of web app that can be installed on a device as a standalone application. PWAs are installed using the offline cache of the device's web browser.

<span class="mw-page-title-main">Windows 11</span> Major release of Windows NT, released in 2021

Windows 11 is the latest major release of Microsoft's Windows NT operating system, released on October 5, 2021. It succeeded Windows 10 (2015), and is available for free for any Windows 10 devices that meet the new Windows 11 system requirements.

References

  1. whatisbloatware.com
  2. Raymond, Eric S. (17 September 2003). The Art of Unix Programming (1 ed.). Addison-Wesley Professional. ISBN   0131429019 . Retrieved 16 June 2007. (See also: The Art of Unix Programming)
  3. 1 2 Spolsky, Joel (2001). "Strategy Letter IV: Bloatware and the 80/20 Myth - Joel on Software" . Retrieved 2 October 2006.
  4. Zawinski, Jamie (1998). "easter eggs" . Retrieved 9 January 2008.
  5. Santo Domingo, Joel (13 February 2012). "How to Remove Bloatware". PC Magazine.
  6. "ADB Reference". GitHub. Retrieved 11 August 2024.
  7. Conway, Adam (25 August 2021). "How to uninstall carrier/OEM bloatware without root access". XDA. Retrieved 11 August 2024.
  8. Elmore, John (10 January 2024). "What are the Benefits of Unlocking Bootloader: Exploring the Advantages & User-Freedom" . Retrieved 11 August 2024.
  9. "Microsoft KB: Windows 95 Installation Requirements" . Retrieved 22 July 2007.
  10. "Microsoft KB: Minimum Hardware Requirements for a Windows 98 Installation" . Retrieved 22 July 2007.
  11. "Windows 2000 Server Getting Started: Chapter 3 - Planning Your Windows 2000 Server Installation". Microsoft . Retrieved 29 August 2007.
  12. "Microsoft KB: System requirements for Windows XP operating systems" . Retrieved 22 July 2007.
  13. "Microsoft KB: System requirements for Windows Vista" . Retrieved 22 July 2007.
  14. "Microsoft: System requirements for Windows 7" . Retrieved 9 October 2009.
  15. "Windows 8 Release Preview ISO images" . Retrieved 12 August 2012. Windows 8 Release Preview works great on the same hardware that powers Windows 7
  16. "7 things to remember if you're trying out the Windows 10 preview". computerworld.com. October 2014. Retrieved 29 March 2015.
  17. Lawler, Richard (24 June 2021). "Microsoft is changing the Windows 11 minimum requirements". The Verge . Retrieved 25 June 2021.
  18. Streza, Steve (7 March 2007). "What happened to iTunes?".
  19. Buchanan, Matt (12 October 2009). "iTunes 9 Will Be a Bloated Social Monster". Gizmodo . Retrieved 14 January 2010.
  20. Bott, Ed (3 October 2008). "Slimming down the bloated iTunes installer". ZDNet . Retrieved 14 January 2010.
  21. Naughton, John (9 March 2019). "Farewell then, iTunes, and thanks for saving the music industry from itself". The Guardian . Retrieved 10 March 2019.
  22. McDougall, Paul (28 January 2008). "Software Tool Strips Windows Vista To Bare Bones". informationweek.com.
  23. Bott, Ed (31 March 2008). "Is MinWin really the new Windows 7 kernel?". ZDNet .
  24. Bott, Ed (13 March 2006). "Windows bloat? It's always been that way". ZDNet .
  25. Cassia, Fernando (27 February 2007). "'Nero Lite' and 'Nero Micro': smaller sometimes is better". The Inquirer. Archived from the original on 2 March 2007. Retrieved 7 March 2007.{{cite news}}: CS1 maint: unfit URL (link)
  26. Gartenberg, Michael (12 September 2010). "Entelligence: Will carriers destroy the Android vision?". Engadget. Retrieved 21 September 2010.
  27. Milian, Mark (15 June 2010). "'Junkware' comes standard on Verizon, T-Mobile smart phones". Los Angeles Times. Retrieved 21 September 2010.
  28. 1 2 Bischoff, Paul (12 February 2014). "What WeChat needs to learn from Facebook". Tech in Asia. Retrieved 16 February 2020.
  29. 1 2 Chen, Laurie (22 July 2018). "Why China's tech-savvy millennials are quitting WeChat". South China Morning Post . Hong Kong . Retrieved 16 February 2020.
  30. 1 2 Constine, Josh (16 January 2018). "Bloated Facebook Messenger promises to simplify in 2018". TechCrunch . Retrieved 16 February 2020.
  31. 1 2 "Facebook opens up Messenger to third-party apps". BBC . 25 March 2015. Retrieved 16 February 2020.
  32. Brown, Aaron (7 February 2017). "Facebook almost ruined WhatsApp, and now it has ruined Messenger". Daily Express . Retrieved 16 February 2020.
  33. Welch, Chris (18 May 2017). "How to replace Facebook Messenger with a much simpler, lighter version". The Verge . Retrieved 16 February 2020.
  34. Price, Rob (23 October 2018). "Facebook is giving Messenger an overhaul to try and cut down on bloat – and adding a dark mode". Business Insider . Retrieved 16 February 2020.
  35. Adams, Ernest (1 May 2007). "The Designer's Notebook: "creeping featurism produces a bloated, complicated mess".
  36. Bert Hubert. "Why Bloat Is Still Software's Biggest Vulnerability". IEEE.
  37. Bert Hubert (2024). "Why Bloat is Still Software's Biggest Vulnerability: A 2024 plea for lean software". IEEE. 61 (4): 22–50. doi:10.1109/MSPEC.2024.10491389.
  38. "Bloatware Definition". Fortinet. Some bloatware also introduces vulnerabilities into your computer that can make it easier to infect with malware, including ransomware or scareware.
  39. "What is Bloatware and How Do You Remove It?". Kaspersky. 25 October 2017.