This guide is made to define and explain many of the terms that are commonplace in conversations at the Sourcegraph office but not necessarily outside of it. The goal of this guide is to break down these terms in a way that your average person can comprehend, at least at a very high level. Think of this as an “intro to dev-speak” :)
The simplest form of computer code or programming data. It is a series of 1s and 0s that makes up the “language” that computers understand. It’s also used to refer to a pre-compiled executable program. Source code is generally compiled into a binary to be executed on specific operating systems.
The fundamental component of a computer program that is created by a developer. It can be read and understood by a human and then translated into machine language (binary machine code).
Humans don’t usually write in the language that computers understand since it’s just a series of 1s and 0s. Instead they write in different programming languages that can be “translated” to instructions a computer can understand.
A compiler takes computer programs written in a programming language and converts them into machine language that a computer can understand and run.
For example, if you’re traveling to France, but you only speak English, you will have to figure out how to communicate in French. You will probably need some sort of translator (a friend, a book, an app, etc.) to translate your words from English to French. Compilers “translate” what developers write in a programming language to binary– a language that computers understand.
In software, open source code is any publicly accessible code/project/design that can be read and modified and redistributed for any personal, commercial or educational use.
For example, if you have a recipe for cookies that you want to share with others, so you share it in a public blog– anyone now has the ability to read it, make it, and modify it for whatever they want.
A code editor is a text editor program specifically made for editing code of computer programs by developers. It may be a standalone application or it may be built into an integrated development environment (IDE) or web browser.
Basically, it’s the environment where developers write code. Similar to how someone can use Google Docs or Microsoft Word to write and edit an essay.
A software development tool that is similar to an editor, but has other necessary tools (debugger, tester, compiler, etc.) integrated.
Imagine a Google Doc that has tools built in for error detection, previews, and language translation.
A service like GitHub, GitLab, or Bitbucket which provides storage and remote access to code. It’s basically where your code lives.
A system that tracks changes to a document or project over time in an orderly and systematic way.
This is similar to how a Google Doc allows you to review a document’s history (see what changes occurred, who made which changes, etc.) Version control provides the ability to “time travel” and restore previous versions of the document in case something went wrong with one of the changes.
A version control system, developed for the maintenance of code with particularly strong support for simultaneous efforts by many developers.
This is the file outlining the project and is written by the project developers for others to read. It is comparable to a “front page” of a project, where the project is outlined and described by those that worked on it.
A report of a possible problem with a project or piece of software. (Just like a real issue!) It is something of concern that you want to flag so it can be corrected.
A request in GitHub for someone else to review your work for any possible errors or flaws before finalizing changes. For example, if you had written an article, and you were almost ready to publish it but first you wanted someone else to review it. They would have the option to provide feedback through comments or approve it for publishing.
The act of taking a series of changes in a document or project (commits, for Git) in a branch and applying them to the existing repository. Generally, merging happens once your pull request has been approved.
In Git, a single set of changes. This is how you store changes in your repository.
A collection of (usually related) source code and other files, plus the history of those files. It is a location for your project, similar to a Google Drive folder that stores related documents in one place.
A specific series of changes in a repository, usually used to isolate changes during their development. Branching lets you make changes, test them in a staging area, then merge them into the “main branch” (the “live” part of your code).
The primary branch of a repository, usually holding the actively-developed product and working of features (non-working versions tend to stay in branches). This is the “live” part of a project that can be viewed by the public. Sometimes referred to as the “master” branch.
A copy of a repository, including its full history. Similar to a copy of a Google Doc with all its revision history.
Making of a new repository which starts as a clone of an existing repository. Usually used to create changes for submission back to the repository, but also used to make a version that has changes that the original repository’s owner won’t include.
For example, if you took a Google Doc template and made a copy of it so you could use it and edit it, but you also altered the original template to add things the original template didn’t include.
A word which simply means that you make a feature or product available to customers.
A word to describe the act of using your own feature or product. Software is often deployed internally for employees to use before going live for customers.
A text markup language to allow plain text to convert to styled text using common conventions, such as _ italics _ or ~~ strikethrough ~~ It’s just a shortcut to edit text (bolding, italicizing, underlining, etc.) without having to click the buttons on a toolbar.
A text-based interface for controlling computers by issuing textual commands. Basically, it’s a place where you can enter commands for your computer to execute.
An API allows a piece of software to interact with another piece of software.
A computer (virtual or physical) that runs services and/or “serves information” to other computers. It could also refer to an instance of a computer program. There are several different kinds of servers (application server, web server, cloud server, etc.).