Cruft

Last updated

Cruft is a jargon word for anything that is left over, redundant and getting in the way. It is used particularly for defective, superseded, useless, superfluous, or dysfunctional elements in computer software.

Contents

History

Harvard Cruft Laboratory Harvard Cruft Hall.png
Harvard Cruft Laboratory

Around 1958, the term was used in the sense of "garbage" by students frequenting the Tech Model Railroad Club (TMRC) at the Massachusetts Institute of Technology (MIT). [1] In the 1959 edition of the club's dictionary, it was defined as "that which magically amounds in the Clubroom just before you walk in to clean up. In other words, rubbage". [2] Its author Peter Samson later explained that this was meant in the sense of "detritus, that which needs to be swept up and thrown out. The dictionary has no definition for 'crufty,' a word I didn't hear until some years later". [2] In 2008 it was also used to refer to alumni who remain socially active at MIT. [3]

The origin of the term is uncertain, but it may be derived from Harvard University's Cruft Laboratory. Built in 1915 as a gift from a donor named Harriet Otis Cruft, [4] it housed the Harvard Physics Department's radar lab during World War II.

Software

The FreeBSD handbook uses the term to refer to leftover or superseded object code that accumulates in a folder or directory when software is recompiled and new executables and data files are produced. [5] Such cruft, if required for the new executables to work properly, can cause the BSD equivalent of dependency hell. [6] The word is also used to describe instances of unnecessary, leftover or just poorly written source code in a computer program that is then uselessly, or even harmfully, compiled into object code. [7]

Cruft accumulation may result in technical debt, which can subsequently make adding new features or modifying existing features—even to improve performance—more difficult and time-consuming.

In the context of Internet or Web addresses (Uniform Resource Locators or "URLs"), cruft refers to the characters that are relevant or meaningful only to the people who created the site, such as implementation details of the computer system which serves the page. Examples of URL cruft could include filename extensions such as .php or .html, and internal organizational details such as /public/ or /Users/john/work/drafts/. [8]

Computer hardware

Cruft may also refer to unused and out-of-date computer paraphernalia, collected through upgrading, inheritance, or simple acquisition, both deliberate and through circumstance. [9] This accumulated hardware, however, often has benefit when IT systems administrators, technicians, and the like have need for critical replacement parts. An unused machine or component similar to a production unit could allow near-immediate restoration of the failed unit, as opposed to waiting for a shipped replacement.

See also

Related Research Articles

<span class="mw-page-title-main">Free software</span> Software licensed to be freely used, modified and distributed

Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, not price; all users are legally free to do what they want with their copies of a free software regardless of how much is paid to obtain the program. Computer programs are deemed "free" if they give end-users ultimate control over the software and, subsequently, over their devices.

<span class="mw-page-title-main">Foobar</span> Placeholder names in programming

The terms foobar, foo, bar, baz, qux, quux, and others are used as metasyntactic variables and placeholder names in computer programming or computer-related documentation. They have been used to name entities such as variables, functions, and commands whose exact identity is unimportant and serve only to demonstrate a concept. The style guide for Google developer documentation recommends against using them as example project names because they are unclear and can cause confusion.

<span class="mw-page-title-main">Hacker</span> Person skilled in information technology

A hacker is a person skilled in information technology who achieves goals by non-standard means. The term has become associated in popular culture with a security hacker – someone with knowledge of bugs or exploits to break into computer systems and access data which would otherwise be inaccessible to them. In a positive connotation, though, hacking can also be utilized by legitimate figures in legal situations. For example, law enforcement agencies sometimes use hacking techniques to collect evidence on criminals and other malicious actors. This could include using anonymity tools to mask their identities online and pose as criminals.

<span class="mw-page-title-main">Kludge</span> Unmaintainable solution

A kludge or kluge is a workaround or makeshift solution that is clumsy, inelegant, inefficient, difficult to extend, and hard to maintain. This term is used in diverse fields such as computer science, aerospace engineering, Internet slang, evolutionary neuroscience, animation and government. It is similar in meaning to the naval term jury rig.

The hacker culture is a subculture of individuals who enjoy—often in collective effort—the intellectual challenge of creatively overcoming the limitations of software systems or electronic hardware, to achieve novel and clever outcomes. The act of engaging in activities in a spirit of playfulness and exploration is termed hacking. However, the defining characteristic of a hacker is not the activities performed themselves, but how it is done and whether it is exciting and meaningful. Activities of playful cleverness can be said to have "hack value" and therefore the term "hacks" came about, with early examples including pranks at MIT done by students to demonstrate their technical aptitude and cleverness. The hacker culture originally emerged in academia in the 1960s around the Massachusetts Institute of Technology (MIT)'s Tech Model Railroad Club (TMRC) and MIT Artificial Intelligence Laboratory. Hacking originally involved entering restricted areas in a clever way without causing any major damage. Some famous hacks at the Massachusetts Institute of Technology were placing of a campus police cruiser on the roof of the Great Dome and converting the Great Dome into R2-D2.

<span class="mw-page-title-main">Tech Model Railroad Club</span>

The Tech Model Railroad Club (TMRC) is a student organization at the Massachusetts Institute of Technology (MIT). Historically, it has been a wellspring of hacker culture and the oldest such hacking group in North America. Formed in 1946, its HO scale layout specializes in the automated operation of model trains.

In software development, when software has been forked or uses a chain of libraries/dependencies, upstream refers to an issue that occurs in software related to the chain. It is the direction that is toward the original authors or maintainers of software. It is usually used in the context of a version, a bug, or a patch.

In software engineering, a project fork happens when developers take a copy of source code from one software package and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a development branch, but also a split in the developer community; as such, it is a form of schism. Grounds for forking are varying user preferences and stagnated or discontinued development of the original software.

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

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.

<span class="mw-page-title-main">Daemon (computing)</span> Computer program that runs as a background process

In multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user. Traditionally, the process names of a daemon end with the letter d, for clarification that the process is in fact a daemon, and for differentiation between a daemon and a normal computer program. For example, syslogd is a daemon that implements system logging facility, and sshd is a daemon that serves incoming SSH connections.

<span class="mw-page-title-main">GNU/Linux naming controversy</span> Issues of what to call a system with the GNU toolchain and the Linux kernel

The GNU/Linux naming controversy is a controversy regarding whether computer operating systems that use GNU software and the Linux kernel should be referred to as "GNU/Linux" or "Linux" systems.

In computer programming jargon, lava flow is an anti-pattern that occurs when computer source code written under sub-optimal conditions is deployed into a production environment and subsequently expanded upon while still in a developmental state. The term derives from the natural occurrence of lava which, once cooled, solidifies into rock that is difficult to remove. Similarly, such code becomes difficult to refactor or replace due to dependencies that arise over time, necessitating the maintenance of backward compatibility with the original, incomplete design.

Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages.

A permissive software license, sometimes also called BSD-like or BSD-style license, is a free-software license which instead of copyleft protections, carries only minimal restrictions on how the software can be used, modified, and redistributed, usually including a warranty disclaimer. Examples include the GNU All-permissive License, MIT License, BSD licenses, Apple Public Source License and Apache license. As of 2016, the most popular free-software license is the permissive MIT license.

In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first asserted the observer effect of quantum mechanics, which states that the act of observing a system inevitably alters its state. In electronics, the traditional term is probe effect, where attaching a test probe to a device changes its behavior.

Cruft is a jargon word for anything that is left over, redundant and getting in the way.

<span class="mw-page-title-main">Emulator</span> System allowing a device to imitate another

In computing, an emulator is hardware or software that enables one computer system to behave like another computer system. An emulator typically enables the host system to run software or use peripheral devices designed for the guest system. Emulation refers to the ability of a computer program in an electronic device to emulate another program or device.

The Jargon File is a glossary and usage dictionary of slang used by computer programmers. The original Jargon File was a collection of terms from technical cultures such as the MIT AI Lab, the Stanford AI Lab (SAIL) and others of the old ARPANET AI/LISP/PDP-10 communities, including Bolt, Beranek and Newman (BBN), Carnegie Mellon University, and Worcester Polytechnic Institute. It was published in paperback form in 1983 as The Hacker's Dictionary, revised in 1991 as The New Hacker's Dictionary.

References

  1. Levy, Steven (2010). Hackers: Heroes of the Computer Revolution (25th Anniversary ed.). O'Reilly Media. p. 8. ISBN   9781449393748.
  2. 1 2 Samson, Peter (2005) [June 1959]. "AN ABRIDGED DICTIONARY of the TMRC LANGUAGE" . Retrieved 30 May 2018.
  3. "Speaking MITese". Massachusetts Institute of Technology. Retrieved 8 June 2016.
  4. "Bronze Tablet Erected in Cruft Memorial Laboratory". thecrimson.com. Retrieved 26 November 2014.
  5. "20.4.16.6. What do I do if something goes wrong?". FreeBSD Handbook (3rd ed.). Retrieved 2007-08-18.
  6. "A nice picture of (dependency) hell" (blog). disfunksioneel. Retrieved 30 May 2018.
  7. "Cruft". TechTarget. Retrieved 30 May 2018.
  8. Berners-Lee, Tim (1998). "Hypertext Style: Cool URIs don't change". W3C Style. Retrieved 2007-08-18. What makes a cool URI? /A cool URI is one which does not change. /What sorts of URI change? /URIs don't change: people change them.
  9. "crufty". The Jargon File, version 4.4.7.