Misplaced Pages

Eric S. Raymond

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.
#117882

66-737: Eric Steven Raymond (born December 4, 1957), often referred to as ESR , is an American software developer , open-source software advocate, and author of the 1997 essay and 1999 book The Cathedral and the Bazaar . He wrote a guidebook for the Roguelike game NetHack . In the 1990s, he edited and updated the Jargon File , published as The New Hacker's Dictionary . Raymond was born in Boston, Massachusetts in 1957, and lived in Venezuela as

132-773: A Tcl/Tk GUI , which allows users to perform actions such as creating and amending commits, creating and merging branches, and interacting with remote repositories. In addition to the official GUI, many 3rd party interfaces exist that provide similar features to the official GUI distributed with Git, such as GitHub Desktop, SourceTree, and TortoiseGit. GUI clients make Git easier to learn and use, improving workflow efficiency and reducing errors. Popular options include cross-platform GitKraken Desktop (freemium) and Sourcetree (free/paid), or platform-specific choices like GitHub Desktop (free) for Windows/macOS and TortoiseGit (free) for Windows. While Git provides built-in GUI tools (git-gui, gitk),

198-428: A source-code management system. Torvalds explains: In many ways you can just see git as a filesystem—it's content-addressable , and it has a notion of versioning, but I really designed it coming at the problem from the viewpoint of a filesystem person (hey, kernels is what I do), and I actually have absolutely zero interest in creating a traditional SCM system. From this initial design approach, Git has developed

264-702: A build of Git for Windows, still using the MSYS2 environment. The JGit implementation of Git is a pure Java software library, designed to be embedded in any Java application. JGit is used in the Gerrit code-review tool, and in EGit, a Git client for the Eclipse IDE. Go-git is an open-source implementation of Git written in pure Go . It is currently used for backing projects as a SQL interface for Git code repositories and providing encryption for Git. Dulwich

330-436: A child. His family moved to Pennsylvania in 1971. He developed cerebral palsy at birth; his weakened physical condition motivated him to go into computing. Raymond began his programming career writing proprietary software , between 1980 and 1985. In 1990, noting that the Jargon File had not been maintained since about 1983, he adopted it, but not without criticism; Paul Dourish maintains an archived original version of

396-412: A deadline. Software analysis begins with a requirements analysis to capture the business needs of the software. Challenges for the identification of needs are that current or potential users may have different and incompatible needs, may not understand their own needs, and change their needs during the process of software development. Ultimately, the result of analysis is a detailed specification for

462-589: A distributed system that he could use like BitKeeper, but none of the available free systems met his needs. He cited an example of a source-control management system needing 30 seconds to apply a patch and update all associated metadata, and noted that this would not scale to the needs of Linux kernel development, where synchronizing with fellow maintainers could require 250 such actions at once. For his design criterion, he specified that patching should take no more than three seconds, and added three more goals: These criteria eliminated every version-control system in use at

528-471: A file as a unique blob. The relationships between the blobs can be found through examining the tree and commit objects. Newly added objects are stored in their entirety using zlib compression. This can consume a large amount of disk space quickly, so objects can be combined into packs , which use delta compression to save space, storing blobs as their changes relative to other blobs. Additionally, Git stores labels called refs (short for references) to indicate

594-503: A local copy of the entire repository , a.k.a. repo, with history and version-tracking abilities, independent of network access or a central server . A repo is stored on each computer in a standard directory with additional, hidden files to provide version control capabilities. Git provides features to synchronize changes between repos that share history; copied (cloned) from each other. For collaboration, Git supports synchronizing with repos on remote machines. Although all repos (with

660-519: A non-default strategy can be selected at merge time: When there are more than one common ancestors that can be used for a three-way merge, it creates a merged tree of the common ancestors and uses that as the reference tree for the three-way merge. This has been reported to result in fewer merge conflicts without causing mis-merges by tests done on prior merge commits taken from Linux 2.6 kernel development history. Also, this can detect and handle merges involving renames. Git's primitives are not inherently

726-611: A program and sell it, it's neither my business nor anyone else's but his customer's what the terms of sale are." In the same essay he said that the "logic of the system" puts developers into "dysfunctional roles", with bad code the result. Raymond is a member of the Libertarian Party and a gun rights advocate. He has endorsed the open source firearms organization Defense Distributed , calling them "friends of freedom" and writing "I approve of any development that makes it more difficult for governments and criminals to monopolize

SECTION 10

#1732775832118

792-591: A service. The most popular are GitHub , SourceForge , Bitbucket and GitLab . Git, a powerful version control system, can be daunting with its command-line interface. Git GUI clients offer a graphical user interface (GUI) to simplify interaction with Git repositories. These GUIs provide visual representations of your project's history, including branches, commits, and file changes. They also streamline actions like staging changes, creating commits, and managing branches. Visual diff tools help resolve merge conflicts arising from concurrent development. Git comes with

858-598: A source code configuration system; while originally intended for the Linux operating system , it was rejected by kernel developers. (Raymond attributed this rejection to "kernel list politics", but Linus Torvalds said in a 2007 mailing list post that as a matter of policy, the development team preferred more incremental changes.) Raymond's 2003 book The Art of Unix Programming discusses user tools for programming and other tasks. Some versions of NetHack still include Raymond's guide. He has also contributed code and content to

924-507: A subset of Git. GameOfTrees is an open-source implementation of Git for the OpenBSD project. As Git is a distributed version control system, it could be used as a server out of the box. It is shipped with a built-in command git daemon which starts a simple TCP server running on the Git protocol. Dedicated Git HTTP servers help (amongst other features) by adding access control, displaying

990-540: A wider range of third-party options cater to platform-specific user preferences. The Eclipse Foundation reported in its annual community survey that as of May 2014, Git is now the most widely used source-code management tool, with 42.9% of professional software developers reporting that they use Git as their primary source-control system compared with 36.3% in 2013, 32% in 2012; or for Git responses excluding use of GitHub : 33.3% in 2014, 30.3% in 2013, 27.6% in 2012 and 12.8% in 2011. Open-source directory Open Hub reports

1056-432: A working system in short order. These influences led to the following implementation choices: Another property of Git is that it snapshots directory trees of files. The earliest systems for tracking versions of source code, Source Code Control System (SCCS) and Revision Control System (RCS), worked on individual files and emphasized the space savings to be gained from interleaved deltas (SCCS) or delta encoding (RCS)

1122-511: Is a framework that provides the viewpoints on the system and its environment , to be used in the software development process . It is a graphical representation of the underlying semantics of a view. The purpose of viewpoints and views is to enable human engineers to comprehend very complex systems and to organize the elements of the problem around domains of expertise . In the engineering of physically intensive systems, viewpoints often correspond to capabilities and responsibilities within

1188-408: Is a popular way of managing changes made to the software. Whenever a new version is checked in, the software saves a backup of all modified files. If multiple programmers are working on the software simultaneously, it manages the merging of their code changes. The software highlights cases where there is a conflict between two sets of changes and allows programmers to fix the conflict. A view model

1254-418: Is an implementation of Git written in pure Python with support for CPython 3.6 and later and Pypy. The libgit2 implementation of Git is an ANSI C software library with no other dependencies, which can be built on multiple platforms, including Windows, Linux, macOS, and BSD. It has bindings for many programming languages, including Ruby , Python, and Haskell . JS-Git is a JavaScript implementation of

1320-449: Is correctly incorporated with the newer software. Design involves choices about the implementation of the software, such as which programming languages and database software to use, or how the hardware and network communications will be organized. Design may be iterative with users consulted about their needs in a process of trial and error . Design often involves people expert in aspect such as database design , screen architecture, and

1386-833: Is essential to success. This is more easily achieved if the team is small, used to working together, and located near each other. Communications also help identify problems at an earlier state of development and avoid duplicated effort. Many development projects avoid the risk of losing essential knowledge held by only one employee by ensuring that multiple workers are familiar with each component. Software development involves professionals from various fields, not just software programmers but also individuals specialized in testing, documentation writing, graphic design , user support, marketing , and fundraising. Although workers for proprietary software are paid, most contributors to open-source software are volunteers. Alternately, they may be paid by companies whose business model does not involve selling

SECTION 20

#1732775832118

1452-477: Is estimated that, as of March 2018, over $ 30,000 has been raised in this way. Raymond describes himself as neo-pagan . Software developer Software development is the process of designing and implementing a software solution to satisfy a user . The process is more encompassing than programming , writing code , in that it includes conceiving the goal, evaluating feasibility, analyzing requirements , design , testing and release . The process

1518-399: Is helpful for new developers to understand the project when they begin working on it. In agile development, the documentation is often written at the same time as the code. User documentation is more frequently written by technical writers . Accurate estimation is crucial at the feasibility stage and in delivering the product on time and within budget. The process of generating estimations

1584-422: Is inefficient, difficult to understand, or lacking documentation on its functionality. These standards are especially likely to break down in the presence of deadlines. As a result, testing, debugging, and revising the code becomes much more difficult. Code refactoring , for example adding more comments to the code, is a solution to improve the understandability of code. Testing is the process of ensuring that

1650-440: Is often delegated by the project manager . Because the effort estimation is directly related to the size of the complete application, it is strongly influenced by addition of features in the requirements—the more requirements, the higher the development cost. Aspects not related to functionality, such as the experience of the software developers and code reusability, are also essential to consider in estimation. As of 2019 , most of

1716-432: Is often used to break down the customer's requirements into pieces that can be implemented by software programmers. The underlying logic of the program may be represented in data-flow diagrams , data dictionaries , pseudocode , state transition diagrams , and/or entity relationship diagrams . If the project incorporates a piece of legacy software that has not been modeled, this software may be modeled to help ensure it

1782-549: Is part of software engineering which also includes organizational management , project management , configuration management and other aspects. Software development involves many skills and job specializations including programming , testing , documentation , graphic design , user support , marketing , and fundraising . Software development involves many tools including: compiler , integrated development environment (IDE), version control , computer-aided software engineering , and word processor . The details of

1848-401: Is robust to heavy levels of input or usage), integration testing (to ensure that the software is adequately integrated with other software), and compatibility testing (measuring the software's performance across different operating systems or browsers). When tests are written before the code, this is called test-driven development . Production is the phase in which software is deployed to

1914-606: The free software video game The Battle for Wesnoth . Raymond is the main developer of NTPsec , a "secure, hardened replacement" for the Unix utility NTP . Raymond has written numerous open-source tools, including cvs-fast-export, a tool for exporting CVS repositories to Git fast-import streams, and "reposurgeon", a tool for exporting SVN repositories. Raymond coined an aphorism he dubbed Linus's law , inspired by Linus Torvalds : "Given enough eyeballs, all bugs are shallow". It first appeared in his book The Cathedral and

1980-554: The open-source community. Today, Git is the de facto standard version control system. It is the most popular distributed version control system, with nearly 95% of developers reporting it as their primary version control system as of 2022. It is the most widely used source-code management tool among professional developers. There are offerings of Git repository services, including GitHub , SourceForge , Bitbucket and GitLab . Torvalds started developing Git in April 2005 after

2046-471: The programming language ). Documentation comes in two forms that are usually kept separate—that intended for software developers, and that made available to the end user to help them use the software. Most developer documentation is in the form of code comments for each file, class , and method that cover the application programming interface (API)—how the piece of software can be accessed by another—and often implementation details. This documentation

Eric S. Raymond - Misplaced Pages Continue

2112-430: The (mostly similar) versions. Later revision-control systems maintained this notion of a file having an identity across multiple revisions of a project. However, Torvalds rejected this concept. Consequently, Git does not explicitly record file revision relationships at any level below the source-code tree. These implicit revision relationships have some significant consequences: Git implements several merging strategies;

2178-627: The 1970s and got AIDS as a consequence", and that "Police who react to a random black male behaving suspiciously who might be in the critical age range as though he is an near-imminent lethal threat, are being rational, not racist." A progressive campaign, "The Great Slate", was successful in raising funds for candidates in part by asking for contributions from tech workers in return for not posting similar quotes by Raymond. Matasano Security employee and Great Slate fundraiser Thomas Ptacek said, "I've been torturing Twitter with lurid Eric S. Raymond quotes for years. Every time I do, 20 people beg me to stop." It

2244-890: The BSDs ( DragonFly BSD , FreeBSD , NetBSD , and OpenBSD ), Solaris , macOS , and Windows . The first Windows port of Git was primarily a Linux-emulation framework that hosts the Linux version. Installing Git under Windows creates a similarly named Program Files directory containing the Mingw-w64 port of the GNU Compiler Collection , Perl 5, MSYS2 (itself a fork of Cygwin , a Unix-like emulation environment for Windows) and various other Windows ports or emulations of Linux utilities and libraries. Currently, native Windows builds of Git are distributed as 32- and 64-bit installers. The git official website currently maintains

2310-496: The Bazaar as "independent validation" of ideas proposed by Eric Hahn and Jamie Zawinski . Hahn would later describe the 1999 book as "clearly influential". From the late 1990s onward, due in part to the popularity of his essay, Raymond became a prominent voice in the open source movement. He co-founded the Open Source Initiative (OSI) in 1998, taking on the self-appointed role of ambassador of open source to

2376-518: The Bazaar . Raymond has refused to speculate on whether the "bazaar" development model could be applied to works such as books and music, saying that he does not want to "weaken the winning argument for open-sourcing software by tying it to a potential loser". Raymond has had a number of public disputes with other figures in the free software movement . As head of the Open Source Initiative, he argued that advocates should focus on

2442-523: The Git database that is not referred to may be cleaned up by using a garbage collection command or automatically. An object may be referenced by another object or an explicit reference. Git has different types of references. The commands to create, move, and delete references vary. git show-ref lists all references. Some types are: Git (the main implementation in C) is primarily developed on Linux , although it also supports most major operating systems, including

2508-509: The Jargon File, because, he says, Raymond's updates "essentially destroyed what held it together." In 1996, Raymond took over development of the open-source email software "popclient", renaming it to Fetchmail . Soon after this experience, in 1997, he wrote the essay " The Cathedral and the Bazaar ", detailing his thoughts on open-source software development and why it should be done as openly as possible (the "bazaar" approach). The essay

2574-651: The Linux kernel tree at a rate of 6.7 patches per second. On 16 June, Git managed the kernel 2.6.12 release. Torvalds turned over maintenance on 26 July 2005 to Junio Hamano, a major contributor to the project. Hamano was responsible for the 1.0 release on 21 December 2005. Torvalds sarcastically quipped about the name git (which means "unpleasant person" in British English slang): "I'm an egotistical bastard, and I name all my projects after myself. First ' Linux ', now 'git'." The man page describes Git as "the stupid content tracker". The read-me file of

2640-489: The available methodologies are best suited to specific kinds of projects, based on various technical, organizational, project, and team considerations. Another focus in many programming methodologies is the idea of trying to catch issues such as security vulnerabilities and bugs as early as possible ( shift-left testing ) to reduce the cost of tracking and fixing them. In 2009, it was estimated that 32 percent of software projects were delivered on time and budget, and with

2706-423: The code executes correctly and without errors. Debugging is performed by each software developer on their own code to confirm that the code does what it is intended to. In particular, it is crucial that the software executes on all inputs, even if the result is incorrect. Code reviews by other developers are often used to scrutinize new code added to the project, and according to some estimates dramatically reduce

Eric S. Raymond - Misplaced Pages Continue

2772-410: The contents of a Git repository via the web interfaces, and managing multiple repositories. Already existing Git repositories can be cloned and shared to be used by others as a centralized repo. It can also be accessed via remote shell just by having the Git software installed and allowing a user to log in. Git servers typically listen on TCP port 9418. There are many offerings of Git repositories as

2838-408: The end user. During production, the developer may create technical support resources for users or a process for fixing bugs and errors that were not caught earlier. There might also be a return to earlier development phases if user needs changed or were misunderstood. Software development is performed by software developers , usually working on a team. Efficient communications between team members

2904-430: The engineering organization. Fitness functions are automated and objective tests to ensure that the new developments don't deviate from the established constraints, checks and compliance controls. Intellectual property can be an issue when developers integrate open-source code or libraries into a proprietary product, because most open-source licenses used for software require that modifications be released under

2970-491: The free license for BitKeeper , the proprietary source-control management (SCM) system used for Linux kernel development since 2002, was revoked for Linux. The copyright holder of BitKeeper, Larry McVoy , claimed that Andrew Tridgell had created SourcePuller by reverse engineering the BitKeeper protocols . The same incident also spurred the creation of Mercurial , another version-control system. Torvalds wanted

3036-477: The full functionality. An additional 44 percent were delivered, but missing at least one of these features. The remaining 24 percent were cancelled prior to release. Software development life cycle refers to the systematic process of developing applications . The sources of ideas for software products are plentiful. These ideas can come from market research including the demographics of potential new customers, existing customers, sales prospects who rejected

3102-419: The full set of features expected of a traditional SCM, with features mostly being created as needed, then refined and extended over time. Git has two data structures : a mutable index (also called stage or cache ) that caches information about the working directory and the next revision to be committed; and an object database that stores immutable objects. The index serves as a connection point between

3168-490: The locations of various commits. They are stored in the reference database and are respectively: Frequently used commands for Git's command-line interface include: A .gitignore file may be created in a Git repository as a plain text file . The files listed in the .gitignore file will not be tracked by Git. This feature can be used to ignore files with keys or passwords, various extraneous files, and large files (which GitHub will refuse to upload). Every object in

3234-407: The number of bugs persisting after testing is complete. Once the code has been submitted, quality assurance —a separate department of non-programmers for most large companies—test the accuracy of the entire software product. Acceptance tests derived from the original software requirements are a popular tool for this. Quality testing also often includes stress and load checking (whether the software

3300-399: The object database and the working tree. The object store contains five types of objects: Each object is identified by a SHA-1 hash of its contents. Git computes the hash and uses this value for the object's name. The object is put into a directory matching the first two characters of its hash. The rest of the hash is used as the file name for that object. Git stores each revision of

3366-403: The performance of servers and other hardware. Designers often attempt to find patterns in the software's functionality to spin off distinct modules that can be reused with object-oriented programming . An example of this is the model–view–controller , an interface between a graphical user interface and the backend . The central feature of software development is creating and understanding

SECTION 50

#1732775832118

3432-480: The potential for better products. The "very seductive" moral and ethical rhetoric of Richard Stallman and the Free Software Foundation fails, he said, "not because his principles are wrong, but because that kind of language ... simply does not persuade anybody". In a 2008 essay, he defended programmers' right to issue work under proprietary licenses: "I think that if a programmer wants to write

3498-666: The press, business and public. He remains active in OSI, but stepped down as president of the initiative in February 2005. In early March 2020, he was removed from two Open Source Initiative mailing lists due to posts that violated the OSI's Code of Conduct. In 1998, Raymond received and published a Microsoft document expressing worry about the quality of rival open-source software. He named this document, together with others subsequently leaked, " The Halloween Documents ". Between 2000 and 2002, he created Configuration Menu Language 2 (CML2),

3564-463: The process used for a development effort varies. The process may be confined to a formal, documented standard , or it can be customized and emergent for the development effort. The process may be sequential, in which each major phase (i.e. design, implement and test) is completed before the next begins, but an iterative approach – where small aspects are separately designed, implemented and tested – can reduce risk and cost and increase quality. Each of

3630-424: The product that developers can work from. Software analysts often decompose the project into smaller objects, components that can be reused for increased cost-effectiveness, efficiency, and reliability. Decomposing the project may enable a multi-threaded implementation that runs significantly faster on multiprocessor computers. During the analysis and design phases of software development, structured analysis

3696-466: The product, other internal software development staff, or a creative third party. Ideas for software products are usually first evaluated by marketing personnel for economic feasibility, fit with existing channels of distribution, possible effects on existing product lines, required features , and fit with the company's marketing objectives. In the marketing evaluation phase, the cost and time assumptions become evaluated. The feasibility analysis estimates

3762-503: The project's return on investment , its development cost and timeframe. Based on this analysis, the company can make a business decision to invest in further development. After deciding to develop the software, the company is focused on delivering the product at or below the estimated cost and time, and with a high standard of quality (i.e., lack of bugs) and the desired functionality. Nevertheless, most software projects run late and sometimes compromises are made in features or quality to meet

3828-576: The same history) are peers, developers often use a central server to host a repo to hold an integrated copy. Git is a free and open-source software shared under the GPL-2.0-only license . Git was originally created by Linus Torvalds for version control during the development of the Linux kernel . The trademark "Git" is registered by the Software Freedom Conservancy , marking its official recognition and continued evolution in

3894-644: The same license. As an alternative, developers may choose a proprietary alternative or write their own software module. Git Git ( / ɡ ɪ t / ) is a distributed version control system that tracks versions of files . It is often used to control source code by programmers who are developing software collaboratively. Design goals of Git include speed, data integrity , and support for distributed , non-linear workflows — thousands of parallel branches running on different computers. As with most other distributed version control systems, and unlike most client–server systems, Git maintains

3960-427: The software that implements the desired functionality. There are various strategies for writing the code. Cohesive software has various components that are independent from each other. Coupling is the interrelation of different software components, which is viewed as undesirable because it increases the difficulty of maintenance . Often, software programmers do not follow industry best practices, resulting in code that

4026-403: The software, but something else—such as services and modifications to open source software. Computer-aided software engineering (CASE) is tools for the partial automation of software development. CASE enables designers to sketch out the logic of a program, whether one to be written, or an already existing one to help integrate it with new code or reverse engineer it (for example, to change

SECTION 60

#1732775832118

4092-418: The source code elaborates further: "git" can mean anything, depending on your mood. The source code for Git refers to the program as "the information manager from hell". Git's design is a synthesis of Torvalds's experience with Linux in maintaining a large distributed development project, along with his intimate knowledge of file-system performance gained from the same project and the urgent need to produce

4158-417: The time, so immediately after the 2.6.12-rc2 Linux kernel development release, Torvalds set out to write his own. The development of Git began on 3 April 2005. Torvalds announced the project on 6 April and became self-hosting the next day. The first merge of multiple branches took place on 18 April. Torvalds achieved his performance goals; on 29 April, the nascent Git was benchmarked recording patches to

4224-520: The tools for estimating the amount of time and resources for software development were designed for conventional applications and are not applicable to web applications or mobile applications . An integrated development environment (IDE) supports software development with enhanced features compared to a simple text editor . IDEs often include automated compiling , syntax highlighting of errors, debugging assistance, integration with version control , and semi-automation of tests. Version control

4290-571: The use of force. As 3D printers become less expensive and more ubiquitous, this could be a major step in the right direction." In 2015, Raymond accused the Ada Initiative and other women in tech groups of attempting to entrap male open source leaders and accuse them of rape, saying "Try to avoid even being alone, ever, because there is a chance that a 'women in tech' advocacy group is going to try to collect your scalp." Raymond has claimed that "Gays experimented with unfettered promiscuity in

4356-582: Was based in part on his experience in developing Fetchmail. He first presented his thesis at the annual Linux Kongress on May 27, 1997. He later expanded the essay into a book, The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary , in 1999. The essay has been widely cited. The internal white paper by Frank Hecker that led to the release of the Mozilla (then Netscape ) source code in 1998 cited The Cathedral and

#117882