Misplaced Pages

GnuTLS

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

GnuTLS ( / ˈ ɡ n uː ˌ t iː ˌ ɛ l ˈ ɛ s / , the GNU Transport Layer Security Library ) is a free software implementation of the TLS, SSL and DTLS protocols. It offers an application programming interface (API) for applications to enable secure communication over the network transport layer , as well as interfaces to access X.509 , PKCS #12 , OpenPGP and other structures.

#132867

81-411: GnuTLS consists of a library that allows client applications to start secure sessions using the available protocols. It also provides command-line tools, including an X.509 certificate manager, a test client and server, and random key and password generators. GnuTLS has the following features: GnuTLS was initially created around March to November 2000, by Nikos Mavrogiannopoulos to allow applications of

162-438: A data serialisation format akin to, but simpler and more general than, well known ones such as XML , JSON , and YAML . In this way there is little difference in practice between customising existing features and writing new ones, both of which are accomplished in the same basic way. This is operatively different from most modern extensible editors, for instance such as VS Code , in which separate languages are used to implement

243-429: A free software alternative to the proprietary Gosling Emacs. GNU Emacs was initially based on Gosling Emacs, but Stallman's replacement of its Mocklisp interpreter with a true Lisp interpreter required that nearly all of its code be rewritten. This became the first program released by the nascent GNU Project. GNU Emacs is written in C and provides Emacs Lisp , also implemented in C, as an extension language. Version 13,

324-455: A linker . The GNU system required its own C compiler and tools to be free software, so these also had to be developed. By June 1987, the project had accumulated and developed free software for an assembler , an almost finished portable optimizing C compiler ( GCC ), an editor ( GNU Emacs ), and various Unix utilities (such as ls , grep , awk , make and ld ). They had an initial kernel that needed more updates. Once

405-450: A mode line at the bottom (usually displaying buffer name, the active modes and point position of the buffer among others). The bottom of every frame is used for output messages (then called 'echo area') and text input for commands (then called 'minibuffer'). In general, Emacs display elements (windows, frames, etc.) do not belong to any specific data or process. Buffers are not associated with windows, and multiple windows can be opened onto

486-455: A Linux distribution) qualifies as free (libre), and helps distribution developers make their distributions qualify. The list mostly describes distributions that are a combination of GNU packages with a Linux-libre kernel (a modified Linux kernel that removes binary blobs, obfuscated code, and portions of code under proprietary licenses) and consist only of free software (eschewing proprietary software entirely). Distributions that have adopted

567-477: A buffer but not bundled into a mode can be handled by simply focussing that buffer and live modifying the relevant data directly. Any interaction with the editor (like key presses or clicking a mouse button) is realized by evaluating Emacs Lisp code, typically a command , which is a function explicitly designed for interactive use. Keys can be arbitrarily redefined and commands can also be accessed by name; some commands evaluate arbitrary Emacs Lisp code provided by

648-458: A default line editor known as Tape Editor and Corrector (TECO). Unlike most modern text editors, TECO used separate modes in which the user would either add text, edit existing text, or display the document. One could not place characters directly into a document by typing them into TECO, but would instead enter a character ('i') in the TECO command language telling it to switch to input mode, enter

729-691: A different dialect of Lisp or a different programming language altogether. Although not all are still actively maintained, these clones include: Emacs is primarily a text editor and is designed for manipulating pieces of text, although it is capable of formatting and printing documents like a word processor by interfacing with external programs such as LaTeX , Ghostscript or a web browser. Emacs provides commands to manipulate and differentially display semantic units of text such as words , sentences , paragraphs and source code constructs such as functions . It also features keyboard macros for performing user-defined batches of editing commands. GNU Emacs

810-478: A fully free (libre) GNU/Linux distribution. From the mid-1990s onward, with many companies investing in free software development, the Free Software Foundation redirected its funds toward the legal and political support of free software development. Software development from that point on focused on maintaining existing projects, and starting new projects only when there was an acute threat to

891-550: A general package of functions and commands relevant to a buffer's data and the way users might be interacting with it (e.g. editing source code in a specific language, editing hex , viewing the filesystem, interacting with git , etc.), and minor modes define subsidiary collections of functionality applicable across many major modes (such as auto-save-mode ). Minor modes can be toggled on or off both locally to each buffer as well as globally across all buffers, while major modes can only be toggled per-buffer. Any other data relevant to

SECTION 10

#1732800723133

972-493: A multi-monitor setup, or a terminal frame connected via ssh from a remote system and a graphical frame displaying the same Emacs process via the local system's monitor. Just as buffers don't require windows, running Emacs processes do not require any frames, and one common usage pattern is to deploy Emacs as an editing server : running it as a headless daemon and connecting to it via a frame-spawning client. This server can then be made available in any situation where an editor

1053-466: A result, any user who obtains the software legally has the same freedoms as the rest of its users do. The GNU Project and the Free Software Foundation sometimes differentiate between "strong" and "weak" copyleft. "Weak" copyleft programs typically allow distributors to link them together with non-free programs, while "strong" copyleft strictly forbids this practice. Most of the GNU Project's output

1134-508: A stable, practical, and responsive editing environment for novice users. The main text editing data structure is the buffer , a memory region containing data (usually text) with associated attributes. The most important of these are: Modes , in particular, are an important concept in Emacs, providing a mechanism to disaggregate Emacs' functionality into sets of behaviours and keybinds relevant to specific buffers' data. Major modes provide

1215-493: A time). Because of its relatively large vocabulary of commands, Emacs features a long-established command language , to concisely express the keystrokes necessary to perform an action. This command language recognises the following shift and modifier keys: Ctrl , Alt , ⇧ Shift , Meta , Super , and Hyper . Not all of these may be present on an IBM-style keyboard, though they can usually be configured as desired. These are represented in command language as

1296-569: A version of GNU/Hurd that is suitable for production environments since the commencement of the GNU/Hurd project over 33 years ago. A stable version (or variant) of GNU can be run by combining the GNU packages with the Linux kernel , making a functional Unix-like system. The GNU project calls this GNU/Linux, and the defining features are the combination of: Within the GNU website, a list of projects

1377-455: Is a free software , mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaboratively developing and publishing software that gives everyone the rights to freely run the software, copy and distribute it, study it, and modify it. GNU software grants these rights in its license . In order to ensure that

1458-461: Is a real-time display editor, as its edits are displayed onscreen as they occur. This is standard behavior for modern text editors but EMACS was among the earliest to implement this. The alternative is having to issue a distinct command to display text, (e.g. before or after modifying it). This was common in earlier (or merely simpler) line and context editors, such as QED (BTS, CTSS, Multics), ed (Unix), ED (CP/M), and Edlin (DOS). Almost all of

1539-506: Is a family of text editors that are characterized by their extensibility . The manual for the most widely used variant, GNU Emacs , describes it as "the extensible, customizable, self-documenting, real-time display editor". Development of the first Emacs began in the mid-1970s, and work on GNU Emacs, directly descended from the original, is ongoing; its latest version is 29.4   [REDACTED] , released June 2024. Emacs has over 10,000 built-in commands and its user interface allows

1620-600: Is also used to express the actions needed to invoke commands with no assigned shortcut: for example, the command scratch-buffer (which initialises a buffer in memory for temporary text storage and manipulation), when invoked by the user, will be reported back as M-x scra <return> , with Emacs scanning the namespace of contextually available commands to return the shortest sequence of keystrokes which uniquely lexicate it. Because Emacs predates modern standard terminology for graphical user interfaces , it uses somewhat divergent names for familiar interface elements. Buffers,

1701-484: Is implemented through a scripting language called Emacs Lisp . Because about 70% of GNU Emacs is written in the Emacs Lisp extension language, one only needs to port the C core which implements the Emacs Lisp interpreter. This makes porting Emacs to a new platform considerably less difficult than porting an equivalent project consisting of native code only. GNU Emacs development was relatively closed until 1999 and

SECTION 20

#1732800723133

1782-487: Is laid out and each project has specifics for what type of developer is able to perform the task needed for a certain piece of the GNU project. The skill level ranges from project to project but anyone with background knowledge in programming is encouraged to support the project. The packaging of GNU tools, together with the Linux kernel and other programs, is usually called a Linux distribution (distro). The GNU Project calls

1863-463: Is launched with no file to edit. The tutorial is by Stuart Cracraft and Richard Stallman. The Church of Emacs , formed by Richard Stallman , is a parody religion created for Emacs users. While it refers to vi as the editor of the beast (vi-vi-vi being 6-6-6 in Roman numerals), it does not oppose the use of vi; rather, it calls it proprietary software anathema . ("Using a free version of vi

1944-545: Is not a sin but a penance ." ) The Church of Emacs has its own newsgroup , alt.religion.emacs , that has posts purporting to support this parody religion. Supporters of vi have created an opposing Cult of vi . Stallman has jokingly referred to himself as St I  GNU  cius , a saint in the Church of Emacs. This is in reference to Ignatius of Antioch , an early Church father venerated in Christianity. The word emacs

2025-550: Is now independently managed by the GNOME Project . GNU Enterprise ( GNUe ) was a meta-project started in 1996, and can be regarded as a sub-project of the GNU Project. GNUe's goal is to create free "enterprise-class data-aware applications" ( enterprise resource planners , etc.). GNUe is designed to collect Enterprise software for the GNU system in a single location (much like the GNOME project collects Desktop software),it

2106-490: Is released under a strong copyleft, although some is released under a weak copyleft or a lax, push-over free software license. The first goal of the GNU project was to create a whole free-software operating system. Because UNIX was already widespread and ran on more powerful machines, compared to contemporary CP/M or MS-DOS machines of time, it was decided it would be a Unix-like operating system. Richard Stallman later commented that he considered MS-DOS "a toy". By 1992,

2187-449: Is required, simply by declaring the client program to be the user's EDITOR or VISUAL variable. Such a server continues to run in the background, managing any child processes, accumulating stdin from open pipes, ports, or fifos, performing periodic or pre-programmed actions, and remembering buffer undo history, saved text snippets, command history, and other user state between editing sessions. In this mode of operation, Emacs overlaps

2268-457: Is supplied, the universal argument is 1 : every command implicitly runs once, but may be called multiply, or in a different way, when supplied with such a prefix. Such arguments may also be non-positive where it makes sense for them to be so - it is up to the function accepting the argument to determine, according to its own semantics, what a given number means to it. One common usage is for functions to perform actions in reverse simply by checking

2349-562: Is the same detailed history as at their web site. The GNU Manifesto was written by Richard Stallman to gain support and participation in the GNU Project. In the GNU Manifesto, Stallman listed four freedoms essential to software users: freedom to run a program for any purpose, freedom to study the mechanics of the program and modify it, freedom to redistribute copies, and freedom to improve and change modified versions for public use. To implement these freedoms, users needed full access to

2430-489: The C programming language , which enables GNU Emacs to be ported to a wide variety of operating systems and architectures without modifying the implementation semantics of the Lisp system where most of the editor lives. In this Lisp environment, variables and functions can be modified with no need to rebuild or restart Emacs, with even newly redefined versions of core editor features being asynchronously compiled and loaded into

2511-401: The Free Software Foundation . Richard Stallman opposed this move and suggested forking the project instead. Soon afterward, developer Paolo Bonzini ended his maintainership of GNU Sed and Grep , expressing concerns similar to those of GnuTLS maintainer Mavrogiannopoulos. Software packages using GnuTLS include(d): GNU Project The GNU Project ( / ɡ n uː / )

GnuTLS - Misplaced Pages Continue

2592-479: The GNU General Public License . Combined with the operating system utilities already developed by the GNU project, it allowed for the first operating system that was free software, commonly known as Linux . The project's current work includes software development, awareness building, political campaigning, and sharing of new material. Richard Stallman announced his intent to start coding

2673-638: The GNU Project to use secure protocols such as TLS . Although OpenSSL already existed, OpenSSL's license is not compatible with the GPL; thus software under the GPL, such as GNU software, could not use OpenSSL without making a GPL linking exception . The GnuTLS library was licensed originally under the GNU Lesser General Public License v2, while included applications to use the GNU General Public License . In August 2011

2754-511: The Lisp machine by Mike McMahon and Daniel Weinreb , and Sine ( Sine Is Not Eine ), which was written by Owen Theodore Anderson. Weinreb's EINE was the first Emacs written in Lisp. In 1978, Bernard Greenberg wrote Multics Emacs almost entirely in Multics Lisp at Honeywell 's Cambridge Information Systems Lab. Multics Emacs was later maintained by Richard Soley , who went on to develop

2835-564: The TENEX and TOPS-20 operating systems. Other contributors to early versions of Emacs include Kent Pitman , Earl Killian , and Eugene Ciccarelli . By 1979, Emacs was the main editor used in MIT's AI lab and its Laboratory for Computer Science. In the following years, programmers wrote a variety of Emacs-like editors for other computer systems. These included EINE ( EINE Is Not EMACS ) and ZWEI ( ZWEI Was EINE Initially ), which were written for

2916-449: The entire software of a computer grants its users all freedom rights (use, share, study, modify), even the most fundamental and important part, the operating system (including all its numerous utility programs) needed to be free software. Stallman decided to call this operating system GNU (a recursive acronym meaning " GNU's not Unix! "), basing its design on that of Unix , a proprietary operating system. According to its manifesto,

2997-556: The free software community . One of the most notable projects of the GNU Project is the GNU Compiler Collection , whose components have been adopted as the standard compiler system on many Unix-like systems. The copyright of most works by the GNU Project is owned by the Free Software Foundation. The GNOME desktop effort was launched by the GNU Project because another desktop system, KDE ,

3078-458: The kernel and the compiler were finished, GNU was able to be used for program development . The main goal was to create many other applications to be like the Unix system. GNU was able to run Unix programs but was not identical to it. GNU incorporated longer file names, file version numbers, and a crash-proof file system. The GNU Manifesto was written to gain support and participation from others for

3159-426: The sign of the universal argument, such as a sort command which sorts in obverse by default and in reverse when called with a negative argument, using the absolute value of its argument as the sorting key (e.g. -7 sorting in reverse by column index (or delimiter) 7), or undo/redo, which are simply negatives of each other (traversing forward and backward through a recursive history of diffs by some number of steps at

3240-415: The source code . To ensure code remained free and provide it to the public, Stallman created the GNU General Public License (GPL), which allowed software and the future generations of code derived from it to remain free for public use. Although most of the GNU Project's output is technical in nature, it was launched as a social, ethical, and political initiative. As well as producing software and licenses,

3321-578: The AI Lab and soon accumulated a large collection of custom macros whose names often ended in MAC or MACS , which stood for macro . Two years later, Guy Steele took on the project of unifying the diverse macros into a single set. Steele and Stallman's finished implementation included facilities for extending and documenting the new macro set. The resulting system was called EMACS, which stood for Editing MACroS or, alternatively, E with MACroS . Stallman picked

GnuTLS - Misplaced Pages Continue

3402-510: The GNU FSDG include Dragora GNU/Linux-Libre , GNU Guix System , Hyperbola GNU/Linux-libre , Parabola GNU/Linux-libre , Trisquel GNU/Linux , PureOS , and a few others. The Fedora Project's distribution license guidelines were used as a basis for the FSDG. The Fedora Project's own guidelines, however, currently do not follow the FSDG, and thus the GNU Project does not consider Fedora to be

3483-423: The GNU Project has published a number of writings, the majority of which were authored by Richard Stallman. The GNU project uses software that is free for users to copy, edit, and distribute. It is free in the sense that users can change the software to fit individual needs. The way programmers obtain the free software depends on where they get it. The software could be provided to the programmer from friends or over

3564-475: The GNU Project in a Usenet message in September 1983. Despite never having used Unix prior, Stallman felt that it was the most appropriate system design to use as a basis for the GNU Project, as it was portable and "fairly clean". When the GNU project first started they had an Emacs text editor with Lisp for writing editor commands, a source level debugger , a yacc -compatible parser generator, and

3645-456: The GNU project had completed all of the major operating system utilities, but had not completed their proposed operating system kernel , GNU Hurd . With the release of the Linux kernel , started independently by Linus Torvalds in 1991, and released under the GPLv2 with version 0.12 in 1992, for the first time it was possible to run an operating system composed completely of free software. Though

3726-460: The Internet, or the company a programmer works for may purchase the software. Proceeds from associate members, purchases, and donations support the GNU Project. Copyleft is what helps maintain free use of this software among other programmers. Copyleft gives the legal right to everyone to use, edit, and redistribute programs or programs' code as long as the distribution terms do not change. As

3807-507: The Linux kernel is not part of the GNU project, it was developed using GCC and other GNU programming tools and was released as free software under the GNU General Public License . Most compilation of the Linux kernel is still done with GNU toolchains, but it is currently possible to use the Clang compiler and the LLVM toolchain for compilation. As of present, the GNU project has not released

3888-859: The NILE Emacs-like editor for the NIL Project, and by Barry Margolin. Many versions of Emacs, including GNU Emacs, would later adopt Lisp as an extension language. James Gosling , who would later invent NeWS and the Java programming language , wrote Gosling Emacs in 1981. The first Emacs-like editor to run on Unix , Gosling Emacs was written in C and used Mocklisp , a language with Lisp-like syntax, as an extension language. Early Ads for Computer Corporation of America 's CCA EMACS (Steve Zimmerman) appeared in 1984. 1985 comparisons to GNU Emacs, when it came out, mentioned free vs. $ 2,400. Richard Stallman began work on GNU Emacs in 1984 to produce

3969-564: The best-known early forks in free software development occurred when the codebases of the two Emacs versions diverged and the separate development teams ceased efforts to merge them back into a single program. Lucid Emacs has since been renamed XEmacs . Its development is currently inactive, with the most recent stable version 21.4.22 released in January 2009 (while a beta was released in 2013), while GNU Emacs has implemented many formerly XEmacs-only features. Other notable forks include: In

4050-456: The combination of GNU and the Linux kernel "GNU/Linux", and asks others to do the same, resulting in the GNU/Linux naming controversy . Most Linux distros combine GNU packages with a Linux kernel which contains proprietary binary blobs . The GNU Free System Distribution Guidelines (GNU FSDG) is a system distribution commitment that explains how an installable system distribution (such as

4131-480: The data that Emacs users interact with, are displayed to the user inside windows , which are tiled portions of the terminal screen or the GUI window, which Emacs refers to as frames ; in modern terminology, an Emacs frame would be a window and an Emacs window would be a split. Depending on configuration, windows can include their own scroll bars, line numbers, sometimes a 'header line' typically to ease navigation, and

SECTION 50

#1732800723133

4212-399: The features of text terminal frames. The first Emacs contained a help library that included documentation for every command, variable and internal function. Because of this, Emacs proponents described the software as self-documenting in that it presents the user with information on its normal features and its current state. Each function includes a documentation string that is displayed to

4293-431: The first public release, was made on March 20, 1985. The first widely distributed version of GNU Emacs was version 15.34, released later in 1985. Early versions of GNU Emacs were numbered as 1.x.x , with the initial digit denoting the version of the C core. The 1 was dropped after version 1.12, as it was thought that the major number would never change, and thus the numbering skipped from 1 to 13 . In September 2014, it

4374-468: The founding goal of the project was to build a free operating system, and if possible, "everything useful that normally comes with a Unix system so that one could get along without any software that is not free." Development was initiated in January 1984. In 1991, the Linux kernel appeared, developed outside the GNU project by Linus Torvalds , and in December 1992 it was made available under version 2 of

4455-483: The functionality in Emacs, including basic editing operations such as the insertion of characters into a file, is achieved through functions written in a dialect of the Lisp programming language . The dialect used in GNU Emacs is known as Emacs Lisp (Elisp), and was developed expressly to port Emacs to GNU and Unix . The Emacs Lisp layer sits atop a stable core of basic services and platform abstraction written in

4536-406: The functionality of programs like screen and tmux . Because of its separation of display concerns from editing functionality, Emacs can display roughly similarly on any device more complex than a dumb terminal , including providing typical graphical WIMP elements on sufficiently featureful text terminals - though graphical frames are the preferred mode of display, providing a strict superset of

4617-422: The interface and features of the editor and to encode its user-defined configuration and options. The goal of Emacs' open design is to transparently expose Emacs' internals to the Emacs user during normal use in the same way that they would be exposed to the Emacs developer working on the git tree , and to collapse as much as possible of the distinction between using Emacs and programming Emacs, while still providing

4698-728: The key used to call it. For example, pressing the f key in a buffer that accepts text input evaluates the code ( self-insert-command 1 ?f ) , which inserts one copy of the character constant ?f at point . The 1 , in this case, is determined by what Emacs terms the universal argument : all Emacs command code accepts a numeric value which, in its simplest usage, indicates repetition of an action, but in more complex cases (where repetition doesn't make sense) can yield other behaviours. These arguments may be supplied via command prefices, such as Control + u 7 f , or more compactly Meta + 7 f , which expands to ( self-insert-command 7 ?f ) . When no prefix

4779-405: The lab's E editor, written by Fred Wright. He was impressed by the editor's intuitive WYSIWYG (What You See Is What You Get) behavior, which has since become the default behavior of most modern text editors. He returned to MIT where Carl Mikkelsen, a hacker at the AI Lab, had added to TECO a combined display/editing mode called Control-R that allowed the screen display to be updated each time

4860-539: The library was updated to the LGPLv3 . After it was noticed that there were new license compatibility problems introduced, especially with other free software with the license change, after discussions the license was downgraded again to LGPLv2.1 in March 2013. GnuTLS was created for the GNU Project , but in December 2012 its maintainer, Nikos Mavrogiannopoulos, dissociated the project from GNU after policy disputes with

4941-448: The live environment to replace existing definitions. Modern GNU Emacs features both bytecode and native code compilation for Emacs Lisp. All configuration is stored in variables, classes, and data structures, and changed by simply updating these live. The use of a Lisp dialect in this case is a key advantage, as Lisp syntax consists of so-called symbolic expressions (or sexprs), which can act as both evaluatable code expressions and as

SECTION 60

#1732800723133

5022-607: The most part, compatible with each other. XEmacs development is inactive. GNU Emacs is, along with vi , one of the two main contenders in the traditional editor wars of Unix culture. GNU Emacs is among the oldest free and open source projects still under development. Emacs development began during the 1970s at the MIT AI Lab , whose PDP-6 and PDP-10 computers used the Incompatible Timesharing System (ITS) operating system that featured

5103-416: The name Emacs "because <E> was not in use as an abbreviation on ITS at the time." An apocryphal hacker koan alleges that the program was named after Emack & Bolio's , a popular Boston ice cream store. The first operational EMACS system existed in late 1976. Stallman saw a problem in too much customization and de facto forking and set certain conditions for usage. He later wrote: EMACS

5184-634: The past, projects aimed at producing small versions of Emacs proliferated. GNU Emacs was initially targeted at computers with a 32-bit flat address space and at least 1  MiB of RAM. Such computers were high end workstations and minicomputers in the 1980s, and this left a need for smaller reimplementations that would run on common personal computer hardware. Today's computers have more than enough power and capacity to eliminate these restrictions, but small clones have more recently been designed to fit on software installation disks or for use on less capable hardware. Other projects aim to implement Emacs in

5265-439: The project. Programmers were encouraged to take part in any aspect of the project that interested them. People could donate funds, computer parts, or even their own time to write code and programs for the project. The origins and development of most aspects of the GNU Project (and free software in general) are shared in a detailed narrative in the Emacs help system. (C-h g runs the Emacs editor command describe-gnu-project .) It

5346-491: The required characters, during which time the edited text was not displayed on the screen, and finally enter a character (<esc>) to switch the editor back to command mode. (A similar technique was used to allow overtyping.) This behavior is similar to that of the program ed . By the 1970s, TECO was already an old program, initially released in 1962. Richard Stallman visited the Stanford AI Lab in 1976 and saw

5427-641: The respective prefices: C- , A- , S- , M- , s- , and H- . Keys whose names are only printable with more than one character are enclosed in angle brackets. Thus, a keyboard shortcut such as Ctrl + Alt + ⇧ Shift + F9 (check dependent formulas and calculate all cells in all open workbooks in Excel ) would be rendered in Emacs command language as C-A-S-<f9> , while an Emacs command like Meta + s f Ctrl + Meta + s (incremental file search by filename-matching regexp ), would be expressed as M-s f C-M-s . Command language

5508-408: The role at times. Stefan Monnier and Chong Yidong were maintainers from 2008 to 2015. John Wiegley was named maintainer in 2015 after a meeting with Stallman at MIT. As of early 2014, GNU Emacs has had 579 individual committers throughout its history. Lucid Emacs, based on an early alpha version of GNU Emacs 19, was developed beginning in 1991 by Jamie Zawinski and others at Lucid Inc. One of

5589-416: The same buffer, for example to track different parts of a long text side-by-side without scrolling back and forth, and multiple buffers can share the same text, for example to take advantage of different major modes in a mixed-language file. Similarly, Emacs instances are not associated with particular frames, and multiple frames can be opened displaying a single running Emacs process, e.g. a frame per screen in

5670-458: The user entered a keystroke. Stallman reimplemented this mode to run efficiently and then added a macro feature to the TECO display-editing mode that allowed the user to redefine any keystroke to run a TECO program. E had another feature that TECO lacked: random-access editing. TECO was a page-sequential editor that was designed for editing paper tape on the PDP-1 at a time when computer memory

5751-428: The user in various ways (e.g. a family of eval- functions, operating on the buffer , region , or individual expression ). Even the simplest user inputs (such a printable characters ) are effectuated as Emacs Lisp functions, such as the self-insert-command , bound by default to most keyboard keys in a typical text editing buffer, which parameterises itself with the locale -defined character associated with

5832-405: The user on request, a practice that subsequently spread to programming languages including Lisp , Java , Perl , and Python . This help system can take users to the actual code for each function, whether from a built-in library or an added third-party library. Emacs also has a built-in tutorial . Emacs displays instructions for performing simple editing commands and invoking the tutorial when it

5913-559: The user to combine these commands into macros to automate work. Implementations of Emacs typically feature a dialect of the Lisp programming language, allowing users and developers to write new commands and applications for the editor. Extensions have been written to, among other things, manage files , remote access , e-mail , outlines , multimedia , Git integration, RSS feeds, and collaborative editing , as well as implementations of ELIZA , Pong , Conway's Life , Snake , Dunnet , and Tetris . The original EMACS

5994-423: Was GNOME, which tackled the same issue from a different angle. It aimed to make a replacement for KDE that had no dependencies on proprietary software. The Harmony project did not make much progress, but GNOME developed very well. Eventually, the proprietary component that KDE depended on ( Qt ) was released as free software. GNOME has since dissociated itself from the GNU Project and the Free Software Foundation, and

6075-542: Was announced on the GNU emacs-devel mailing list that GNU Emacs would adopt a rapid release strategy and version numbers would increment more quickly in the future. GNU Emacs offered more features than Gosling Emacs, in particular a full-featured Lisp as its extension language, and soon replaced Gosling Emacs as the de facto Unix Emacs editor. Markus Hess exploited a security flaw in GNU Emacs' email subsystem in his 1986 cracking spree in which he gained superuser access to Unix computers. Most of GNU Emacs functionality

6156-519: Was becoming popular but required users to install Qt , which was then proprietary software . To prevent people from being tempted to install KDE and Qt, the GNU Project simultaneously launched two projects. One was the Harmony toolkit . This was an attempt to make a free software replacement for Qt. Had this project been successful, the perceived problem with the KDE would have been solved. The second project

6237-475: Was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed. The original Emacs, like TECO, ran only on the PDP-10 running ITS. Its behavior was sufficiently different from that of TECO that it could be considered a text editor in its own right, and it quickly became the standard editing program on ITS. Mike McMahon ported Emacs from ITS to

6318-511: Was generally small due to cost, and it was a feature of TECO that allowed editing on only one page at a time sequentially in the order of the pages in the file. Instead of adopting E's approach of structuring the file for page-random access on disk, Stallman modified TECO to handle large buffers more efficiently and changed its file-management method to read, edit, and write the entire file as a single buffer. Almost all modern editors use this approach. The new version of TECO quickly became popular at

6399-498: Was later Decommissioned . In 2001, the GNU Project received the USENIX Lifetime Achievement Award for "the ubiquity, breadth, and quality of its freely available redistributable and modifiable software, which has enabled a generation of research and commercial development". Emacs Emacs ( / ˈ iː m æ k s / ), originally named EMACS (an acronym for "Editor Macros"),

6480-673: Was used as an example of the Cathedral development style in The Cathedral and the Bazaar . The project has since adopted a public development mailing list and anonymous CVS access. Development took place in a single CVS trunk until 2008 and was then switched to the Bazaar DVCS . On November 11, 2014, development was moved to Git . Richard Stallman has remained the principal maintainer of GNU Emacs, but he has stepped back from

6561-546: Was written in 1976 by David A. Moon and Guy L. Steele Jr. as a set of macros for the TECO editor. It was inspired by the ideas of the TECO-macro editors TECMAC and TMACS. The most popular, and most ported, version of Emacs is GNU Emacs, which was created by Richard Stallman for the GNU Project . XEmacs is a variant that branched from GNU Emacs in 1991. GNU Emacs and XEmacs use similar Lisp dialects and are, for

#132867