Where it runs
Dev workflow and DevOps
Writing code is only part of shipping software. Around it sits a workflow: saving every change with Git, reviewing it on GitHub, pulling in other people's packages, testing each change automatically and deploying it so it runs the same way every time.
The pieces form a chain. Code lives in a Git repository; a package manager such as npm fetches the libraries it depends on; a CI/CD pipeline tests and builds every change; Docker can package the result for any server; and logging and error tracking report back when something breaks for real users.
21 terms · 4 comparisons · prices checked September 2026
21 terms, click any to open
Code and collaboration
Git
ToolOpen sourceThe standard tool for tracking changes to code. It saves snapshots of a project so you can see who changed what, undo mistakes and work on several things at once.
Git records a project as a series of commits: each one is a snapshot of every file, with a message, an author and a link to the commit before it. Branches let a feature be built alongside the main line of work, and merging brings the two back together. Every copy of a repository (a clone) holds the full history, so Git works offline and no single server is a point of failure.
Linus Torvalds wrote Git in 2005 to manage the Linux kernel, and it has since replaced older systems such as Subversion almost everywhere. It is a command-line program at heart; editors such as VS Code and apps such as GitHub Desktop add a visual layer. Git is not GitHub: Git is the tool, while GitHub, GitLab and Bitbucket are services that host Git repositories online.
Pros
- Full history of every change, with who made it and why
- Works offline, and every clone is a complete backup
- Cheap branches make parallel work and experiments safe
- Free, open source and supported by every developer tool
Cons
- Confusing at first: staging, rebasing and merge conflicts take practice
- Handles large binary files such as video poorly without Git LFS
- A committed secret stays in the history until it is scrubbed out
Pick it when
- Any code project, even a solo one
- Several people change the same files
- You want to roll back a bad change quickly
Skip it when
- Tracking big design or video files, where a cloud drive or Git LFS fits better
What it costs · Open source
Free (GPL 2.0).
Approximate, checked September 2026.
Also called: version control, source control, git commit, repository
GitHub
PlatformFree tierThe most widely used website for hosting Git repositories, where people share code, review each other's changes, track issues and automate builds.
GitHub stores Git repositories online and wraps them in collaboration tools: pull requests for reviewing changes line by line, issues and project boards for planning, and discussions and wikis for documentation. Most open-source software lives there, which makes it the default place developers look for code, report bugs and contribute fixes.
Around that core sit many services: GitHub Actions for CI/CD, GitHub Pages for static sites, Packages for private package and container registries, Dependabot for dependency updates, Codespaces for cloud development environments and Copilot for AI coding help. Microsoft has owned GitHub since 2018. GitLab and Bitbucket offer similar features, and GitLab can also run on your own servers.
Pros
- Unlimited free public and private repositories
- Pull requests, reviews, issues and CI in one place
- Home of most open-source projects and developer profiles
- Large marketplace of Actions and integrations
Cons
- Advanced security and compliance features cost extra per user
- An outage stalls reviews and deploys for everyone who depends on it
- Issues, pull requests and workflows do not move easily to another host
Pick it when
- Almost any team or solo project that wants hosted Git
- Open-source work, where contributors already have accounts
- You want code, reviews and CI/CD without running servers
Skip it when
- Code must stay on your own servers (GitLab self-managed or GitHub Enterprise Server)
What it costs · Free tier
Free plan with unlimited public and private repositories. Team about $4 and Enterprise from about $21 per user a month (listed as introductory first-year prices).
GitHub pricing (opens in a new tab)Approximate, checked September 2026.
Related
Also called: GitHub.com, gh, GitHub Enterprise
Branches and pull requests
ConceptA branch is a separate line of work inside a repository; a pull request asks for that work to be reviewed and merged into the main code.
A developer creates a branch from main, commits a feature or fix to it and opens a pull request (GitLab calls it a merge request). Reviewers read the changes line by line and comment, while automated checks run the tests. Once approved, the branch is merged: its commits kept as they are, squashed into one, or rebased onto main.
Branch protection rules can require reviews and passing checks before anything reaches main. Many teams prefer short-lived branches merged within a day or two (trunk-based development), which keeps conflicts small. Hosts such as Vercel and Netlify deploy every pull request to its own preview URL, so anyone can try a change before it ships.
Also called: pull request, PR, merge request, MR, code review, feature branch
Monorepo
PatternOne repository that holds several apps and shared packages together, such as a website, a mobile app and the code they share.
Instead of one repository per project, a monorepo keeps them side by side, so a change to a shared package and to every app that uses it can land in one commit and one review. Package managers link local packages together through workspaces (npm, pnpm, Yarn and Bun all support them), and build tools such as Turborepo and Nx cache results and rebuild only what changed.
The opposite is a polyrepo, one repository per project. A monorepo makes sharing code and keeping versions in step easier; the cost is more tooling, slower CI without caching, and access that is all or nothing unless the host offers finer rules. Google and Meta famously keep most of their code in giant monorepos.
Also called: mono repository, workspaces, Turborepo, Nx
Open-source licences
ConceptThe legal terms that say what anyone may do with published code (use it, change it, sell it) and what they must give back in return.
Permissive licences such as MIT, BSD and Apache 2.0 let anyone use the code in any product, closed-source ones included, as long as the copyright notice is kept; Apache 2.0 adds an explicit patent grant. Copyleft licences such as the GPL require anyone who distributes a modified version to share its source under the same terms, and the AGPL extends that to software offered over a network.
Code published with no licence is not free to use: by default all rights are reserved. Some projects have moved to source-available licences such as the SSPL or the Business Source License, which restrict competing hosted services and are not approved by the Open Source Initiative. Before shipping a commercial product it is worth listing every dependency's licence, which tools can do automatically.
Related
Also called: MIT License, GPL, Apache 2.0, copyleft, software license, SPDX
Packages
npm and npx
ToolFree tiernpm is the package manager that comes with Node.js: it downloads the open-source libraries a JavaScript project depends on. npx runs a package's command without installing it first.
The npm registry is the world's largest software registry, with millions of JavaScript packages. Running npm install reads package.json, fetches every dependency (and their dependencies) into a node_modules folder, and records the exact versions in package-lock.json. npm run executes the scripts a project defines, such as dev, build and test.
npx fetches a package temporarily and runs its command, which is how one-off tools and project starters work: npx create-next-app sets up a new app without installing anything globally. GitHub has owned npm since 2020. Because anyone can publish, the registry has seen hijacked and malicious packages, so lockfiles, two-factor sign-in for publishers and care with new dependencies all matter. pnpm, Yarn and Bun install from the same registry.
Pros
- Ships with Node.js, so there is nothing extra to install
- Millions of packages in one registry
- Works with every tool, host and CI service out of the box
- npx turns one-off tools and project starters into a single command
Cons
- Slower installs and bigger node_modules folders than pnpm or Bun
- Deep dependency trees make supply-chain attacks a real risk
- The flat node_modules lets code import packages it never declared
Pick it when
- You want the default that every tutorial and tool assumes
- Small and medium projects where install speed is not a problem
- Publishing your own packages for others to install
Skip it when
- Large monorepos, where pnpm's workspaces and shared store save real time
What it costs · Free tier
The CLI and public packages are free. Private packages cost about $7 a month for a personal Pro account, or $7 per member a month for an organisation.
npm and npx pricing (opens in a new tab)Approximate, checked September 2026.
Related
Also called: npm, npx, Node Package Manager, npm registry, npm install
Open npm and npx as a pageOfficial site (opens in a new tab)
pnpm
ToolOpen sourceA fast package manager for JavaScript that stores each package once on your machine and links it into projects, saving time and disk space.
npm copies every dependency into every project's node_modules. pnpm keeps one content-addressed store per machine and hard-links files from it, so ten projects using the same library share a single copy on disk, and repeat installs are quick. It uses the same npm registry and the same package.json, with its own lockfile, pnpm-lock.yaml.
Its node_modules layout is strict: code can only import packages it has declared, which catches missing dependencies that npm's flat layout hides. Strong workspace support and filtering (run a command in one package and everything that depends on it) have made it a common choice for monorepos. A few older tools that assume a flat layout need a setting to work.
What it costs · Open source
Free (MIT).
Approximate, checked September 2026.
Also called: performant npm, pnpm workspaces
Yarn
ToolOpen sourceAn alternative to npm, first released by Facebook in 2016, that installs JavaScript packages from the same registry with its own lockfile and extras.
Yarn arrived when npm was slow and installs were unpredictable, and it introduced ideas npm later adopted: a lockfile (yarn.lock), parallel downloads and workspaces for monorepos. Yarn Classic (version 1) now only receives maintenance fixes, yet many older projects still use it.
Modern Yarn (often called Berry) is a rewrite. Its Plug'n'Play mode drops the node_modules folder in favour of a single map of where each package lives, which makes installs quick and dependency errors strict, and zero-installs lets a repository commit its package cache so a fresh clone runs without installing. Some tools need extra setup for Plug'n'Play, so Yarn can also use a normal node_modules folder.
What it costs · Open source
Free (BSD 2-Clause).
Approximate, checked September 2026.
Also called: Yarn Berry, Yarn Classic, Plug'n'Play, PnP
package.json and lockfiles
Formatpackage.json is the file that describes a JavaScript project and lists the packages it needs; the lockfile beside it pins the exact versions that were installed.
package.json holds the project's name, version and scripts (such as dev, build and test), plus two lists: dependencies needed to run and devDependencies needed only to build and test. Each entry names a version range such as ^2.1.0, which allows newer compatible releases, so two installs a few months apart could pull in different code.
The lockfile (package-lock.json, pnpm-lock.yaml, yarn.lock or bun.lock) fixes that by recording the exact version and checksum of every package in the whole tree. It belongs in Git, and CI should install with npm ci or its equivalent so every machine gets identical code. Deleting the lockfile to fix a problem usually just swaps it for a different, unknown one.
Also called: package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lock, dependencies
Semantic versioning
ConceptA rule for version numbers such as 2.4.1, where each part tells you how risky an upgrade is: breaking change, new feature or bug fix.
A version has three parts, MAJOR.MINOR.PATCH. A patch release (2.4.1 to 2.4.2) only fixes bugs, a minor release (2.4 to 2.5) adds features without breaking anything, and a major release (2 to 3) may break existing code. Versions below 1.0.0 make no promises at all, and tags such as 3.0.0-beta.1 mark pre-releases.
Package managers build on it. In package.json, ^2.4.1 accepts any 2.x release from 2.4.1 up, and ~2.4.1 accepts only 2.4.x patches. The scheme only works if maintainers follow it, and not all do, which is one more reason to commit a lockfile and read the changelog before a major upgrade.
Also called: SemVer, version numbers, major.minor.patch, caret range
Shipping
CI/CD
ConceptAutomation that tests every code change as soon as it is pushed (CI) and then ships it to users without manual steps (CD).
Continuous integration means every push or pull request starts a pipeline on a fresh machine: install dependencies, lint, type-check, run the tests and build. A failing run blocks the merge, so broken code is caught in minutes rather than in production. Continuous delivery keeps the main branch ready to release at the press of a button; continuous deployment goes one step further and releases every change that passes.
Pipelines are described in files that live in the repository, such as a GitHub Actions workflow or a .gitlab-ci.yml. Common services include GitHub Actions, GitLab CI, CircleCI, Bitbucket Pipelines and the long-established, self-hosted Jenkins. Hosting platforms such as Vercel, Netlify and Cloudflare Pages build a simple CD pipeline in: connect a repository, and every push deploys.
Pros
- Bugs are caught minutes after they are written
- Releases become routine and repeatable instead of risky events
- Every change is built the same way on a clean machine
- Frees developers from manual testing and deploy chores
Cons
- Only as good as the tests it runs
- Slow or flaky pipelines frustrate teams and get ignored
- Build minutes and runners cost money at scale
Pick it when
- More than one person works on the code
- You deploy often and want each release to be uneventful
- A broken release would cost real money or trust
Skip it when
- A throwaway prototype, where a host's automatic deploys are enough
Related
Also called: continuous integration, continuous delivery, continuous deployment, pipeline, build pipeline
GitHub Actions
ServiceFree tierGitHub's built-in automation service: it runs tests, builds, deploys or any script whenever something happens in a repository.
A workflow is a YAML file in .github/workflows that says when to run (on a push, a pull request, a schedule or a button press) and what to do. Each job runs on a fresh virtual machine called a runner, with Linux, Windows or macOS, and is made of steps: shell commands or reusable actions from the Marketplace, such as checking out code or setting up Node.js. Secrets such as deploy keys are stored encrypted and passed in at run time.
Jobs can run in parallel, across a matrix of versions and operating systems, and can deploy to any cloud. Scheduled workflows use cron syntax in UTC and may start late when GitHub is busy. Teams can also run jobs on their own machines (self-hosted runners). Third-party actions run with access to the code and its secrets, so pinning each one to a specific commit is a sensible habit.
Pros
- Built into GitHub, with no separate service to connect
- Free for public repositories, with a monthly allowance for private ones
- Thousands of ready-made actions in the Marketplace
- Linux, Windows and macOS runners, plus your own machines
Cons
- YAML workflows are awkward to debug and to test locally
- macOS minutes cost roughly ten times as much as Linux minutes
- Ties the pipeline to GitHub, and third-party actions are a supply-chain risk
Pick it when
- Your code already lives on GitHub
- Tests, builds and deploys on every push or pull request
- Scheduled chores such as nightly jobs, backups or dependency checks
Skip it when
- Code is hosted on GitLab or Bitbucket, which have their own CI
- Heavy iOS build pipelines, where your own Macs or a dedicated service cost less
What it costs · Free tier
Free for public repositories and self-hosted runners. Private repositories get 2,000 minutes a month on Free (3,000 on Team), then about $0.006 a minute on Linux, $0.01 on Windows and $0.062 on macOS.
GitHub Actions pricing (opens in a new tab)Approximate, checked September 2026.
Also called: GitHub workflows, Actions, workflow YAML, runners
Open GitHub Actions as a pageOfficial site (opens in a new tab)
Docker
ToolFree tierA tool that packages an app with everything it needs into a container, so it runs the same way on a laptop, a test server and in production.
A Dockerfile lists the steps to build an image: start from a base such as node or python, copy the code in, install dependencies and name the command to run. The image is a sealed, layered bundle, and a container is a running copy of it. Containers share the host's operating system kernel, so they start in seconds and use far less memory than full virtual machines.
Images are pushed to a registry such as Docker Hub or GitHub's container registry, then pulled by servers, CI runners and cloud platforms (Cloud Run, Fly.io, AWS ECS, Kubernetes). Docker Compose starts several containers together from one file, which is the usual way to run an app and its database locally. Images follow the open OCI standard, so other tools such as Podman run them too.
Pros
- Ends 'works on my machine': the same image runs everywhere
- Starts a database or any other service locally in one command
- Supported by nearly every host, cloud and CI service
- Lighter and quicker to start than virtual machines
Cons
- Another layer to learn: images, volumes, networks and ports
- On Mac and Windows it runs inside a hidden Linux VM that costs memory
- Docker Desktop needs a paid plan at larger companies
Pick it when
- Running an app with its database and services locally
- Deploying to a VPS, Cloud Run, Fly.io or Kubernetes
- Builds that must be reproducible across machines and CI
Skip it when
- Static sites and serverless apps, where the host builds and runs the code for you
What it costs · Free tier
Docker Engine is open source. Docker Desktop is free for individuals and companies under 250 staff and $10 million revenue; otherwise Pro about $9, Team $15 or Business $24 per user a month, billed yearly.
Docker pricing (opens in a new tab)Approximate, checked September 2026.
Also called: containers, Dockerfile, Docker Compose, container image, Docker Hub, Docker Desktop
Kubernetes
PlatformOpen sourceAn open-source system that runs containers across a group of machines, restarting them when they fail and adding more when traffic grows.
You describe what should run in YAML files (this image, three copies, this much memory, reachable at this address) and Kubernetes keeps reality matching that description. The control plane schedules pods (one or more containers) onto worker machines called nodes, replaces crashed ones, rolls out new versions gradually and scales with load. Services and ingress rules route traffic to the right pods.
It grew out of Google's internal systems and is now looked after by the Cloud Native Computing Foundation. Most teams use a managed version, such as Amazon EKS, Google GKE or Azure AKS, where the cloud runs the control plane and you pay for the nodes. Helm packages common setups as charts, and small distributions such as k3s, kind and minikube run it on one machine for learning and testing.
Pros
- Self-healing: crashed containers are replaced automatically
- Scales services up and down with traffic
- Rolling updates without downtime, and quick rollbacks
- Runs on every major cloud and on your own servers, which limits lock-in
Cons
- Steep learning curve and a lot of YAML
- Needs ongoing care: upgrades, security, networking and monitoring
- Overkill, and costly, for a handful of services
Pick it when
- Many services and teams sharing the same infrastructure
- Workloads that must scale automatically and survive machine failures
- You need one platform across several clouds or your own hardware
Skip it when
- A single app or a small team, where a managed platform or one VPS is far simpler
- Nobody on the team has time to run and upgrade it
What it costs · Open source
Free (Apache 2.0). Managed control planes cost about $0.10 per cluster an hour on EKS and GKE (GKE covers one cluster free); AKS is free without an uptime SLA. Nodes are billed on top.
Kubernetes pricing (opens in a new tab)Approximate, checked September 2026.
Related
Also called: K8s, kubectl, EKS, GKE, AKS, Helm
Environments
Environment variables
ConceptNamed settings, such as a database address or an API key, that are handed to an app from outside its code, so the same code can run anywhere.
An app reads values such as DATABASE_URL or STRIPE_SECRET_KEY from its environment when it starts (process.env in Node.js, os.environ in Python). Locally they usually live in a .env file that is kept out of Git; in production they are set in the host's dashboard or a secrets manager. The same build can then use a test database in staging and the real one in production.
Frameworks decide which variables reach the browser. In Next.js only names starting with NEXT_PUBLIC_ are bundled into client code, and in Vite only those starting with VITE_; anything bundled is visible to every visitor, so secret keys must stay on the server. A committed .env file is one of the most common ways secrets leak, and a .env.example file with dummy values is the usual way to document what is needed.
Related
Also called: env vars, .env, dotenv, process.env, secrets, config vars
Staging, preview and production
ConceptSeparate copies of an app for different stages: development on a laptop, previews and staging for testing, and production for real users.
Production is the live app that real customers use. Staging is a copy set up as close to production as possible, with its own database, keys and test payment accounts, where a release is checked before it goes out. Preview deployments are short-lived copies built for each pull request, each at its own URL, so a reviewer or client can click through a change before it is merged.
Vercel, Netlify and Cloudflare Pages create previews automatically. The environments differ mainly in their environment variables, and keeping them apart matters: a staging site pointed at the production database, or test emails sent to real customers, are classic accidents. Previews of unfinished work are best kept out of search engines, and behind a password where needed.
Related
Also called: environments, staging, preview deployments, prod, dev environment
Everyday tools
VS Code
ToolFreeA free code editor from Microsoft, and the most widely used one, with extensions for almost every language and tool.
VS Code combines a quick editor with many features of a heavier IDE: autocomplete and error checking through language servers, a debugger, Git integration, a built-in terminal and a huge extension marketplace for languages, linters, formatters and themes. It runs on Windows, macOS and Linux, and its remote extensions let it edit code on a server over SSH, inside a container or in WSL.
It is built with Electron, and its core, Code - OSS, is open source under the MIT License; Microsoft's own build adds branding and telemetry under a free product licence. It is a different product from Visual Studio, Microsoft's larger IDE for .NET and C++. AI editors such as Cursor and Windsurf are forks of VS Code, and VSCodium ships the open-source build without Microsoft's telemetry.
Pros
- Free, quick to start and available on every desktop system
- Extensions for practically every language, framework and tool
- Built-in Git, terminal and debugger
- Remote editing over SSH, in containers and in WSL
Cons
- Its Electron base uses more memory than lighter editors
- Piles of extensions slow it down and can conflict
- Forks cannot use Microsoft's extension marketplace and rely on Open VSX
Pick it when
- Web, JavaScript, Python and most everyday development
- You want one editor for many languages and projects
Skip it when
- Native Android or iOS apps, where Android Studio and Xcode fit better
- Large Java, Kotlin or C# codebases that benefit from a full IDE
What it costs · Free
Free for any use, including commercial work. Some extensions, such as GitHub Copilot, have paid plans.
Approximate, checked September 2026.
Also called: Visual Studio Code, code editor, VSCodium, Code - OSS
Terminal and CLI
ToolA text window where you type commands instead of clicking buttons. Most developer tools, from Git to npm to Docker, are driven this way.
The terminal is the window; the shell is the program inside it that reads commands and runs them: bash on most Linux servers, zsh on macOS, PowerShell on Windows. A CLI (command-line interface) is any program built to be used this way, such as git, npm, docker or a cloud provider's own tool. Commands can be chained together and saved in scripts, which is why automation and CI are built on the command line.
Servers usually have no graphical interface at all, so managing one means connecting over SSH and working in the shell. Windows developers often add WSL to get a real Linux shell. Terminal apps such as Windows Terminal, iTerm2 and the one built into VS Code differ in comfort features, but the commands are the same.
Also called: command line, shell, bash, zsh, PowerShell, console
ESLint
ToolOpen sourceA tool that reads JavaScript and TypeScript code and flags likely bugs and risky patterns before the code ever runs.
ESLint parses code and checks it against rules: a variable that is never used, a comparison that is always false, a React hook called inside a condition, a missing await. Each rule can be an error, a warning or switched off, and many can fix the code automatically. Plugins add rules for React, TypeScript (typescript-eslint), accessibility, imports and more, and frameworks such as Next.js ship a ready-made set.
It runs in the editor as you type, in a pre-commit hook and in CI, where a failing lint blocks the merge. Configuration now lives in a single eslint.config.js file (the flat config), which replaced the older .eslintrc files. Biome and oxlint are newer linters written in Rust that run much faster and cover many of the same rules, with fewer plugins.
What it costs · Open source
Free (MIT).
Approximate, checked September 2026.
Also called: linter, linting, eslint.config.js, typescript-eslint
Prettier
ToolOpen sourceA code formatter that rewrites code into one consistent style automatically, so nobody has to argue about spaces, quotes or line breaks.
Prettier ignores how the code was typed: it parses it and prints it back out in its own style, wrapping lines at a set width. It handles JavaScript, TypeScript, JSX, CSS, HTML, JSON, Markdown, YAML and GraphQL, and plugins add more, such as sorting Tailwind classes. It deliberately has very few options (line width, quotes, semicolons, trailing commas), so there is little to configure or debate.
Most teams run it on save in the editor and check it in CI, which keeps code reviews focused on real changes. It does not look for bugs; that is ESLint's job, and eslint-config-prettier switches off ESLint's style rules so the two never fight. Biome includes a largely Prettier-compatible formatter that runs much faster.
What it costs · Open source
Free (MIT).
Approximate, checked September 2026.
Also called: code formatter, formatting, .prettierrc
Keeping it healthy
Logging and error tracking
ConceptFree tierThe tools that tell you what an app is doing in production and alert you when it breaks, ideally before users start to complain.
Logs are timestamped lines an app writes as it works (request received, payment failed), best written as structured JSON so they can be searched. Error tracking tools such as Sentry go further: an SDK in the app catches every crash with its stack trace, the browser or device, the release and the steps that led up to it, groups identical errors into one issue and alerts the team. Uploading source maps turns minified browser code back into readable lines.
Metrics (response times, error rates, memory) and traces (one request followed across services) complete the picture; together these are often called observability, and OpenTelemetry is the open standard for collecting them. Common tools include Sentry, Datadog, New Relic, Grafana, Better Stack and Axiom, and Firebase Crashlytics is widely used for mobile crashes. Uptime monitors check a site from outside and alert when it stops answering.
Pros
- Find and fix bugs that users never report
- See exactly which release, device and step caused a crash
- Alerts reach the team in minutes instead of days
- Performance data shows which pages and queries are slow
Cons
- Costs grow with traffic and the volume of events sent
- Noisy alerts get ignored unless they are tuned
- Logs can capture personal data or secrets unless they are scrubbed
Pick it when
- Anything real users depend on, from launch day
- Mobile apps, where crashes happen on devices you never see
- Serverless apps, where there is no server to log into
Skip it when
- A short-lived prototype with a handful of friendly testers
What it costs · Free tier
Sentry has a free Developer plan for one user; Team from about $26 a month (billed yearly, 50,000 errors included) and Business from about $80 a month.
Logging and error tracking pricing (opens in a new tab)Approximate, checked September 2026.
Related
Also called: observability, Sentry, logs, APM, crash reporting, OpenTelemetry
Side by side
Differences
How the options in this area compare on the questions that usually decide the choice.
Git vs GitHub
Open as a page: Git vs GitHubThe two names are often used as if they meant the same thing. Git is the program that records a project's history on your machine; GitHub is a website that hosts Git repositories and adds collaboration on top.
| Compare | Git | GitHub |
|---|---|---|
| What it is | A version control program | A hosting and collaboration service |
| Where it runs | On your computer, even offline | In the cloud, or on your servers with Enterprise Server |
| Main job | Record, branch and merge history | Share repos, review code, run CI, track issues |
| Works without the other | Yes, alone or with GitLab or Bitbucket | No, every GitHub repository is a Git repository |
| Interface | Command line, editors and desktop apps | Website, GitHub Desktop and the gh CLI |
| Who makes it | Open-source project started by Linus Torvalds | GitHub, owned by Microsoft |
| Cost | Free (GPL 2.0) | Free plan; Team and Enterprise per user |
| Alternatives | Mercurial, Subversion (now rare) | GitLab, Bitbucket, Codeberg |
How to choose
- Use Git for any code project; it is the standard way to track changes.
- Pick GitHub when you want hosting, pull request reviews and CI in one place; GitLab and Bitbucket are the main alternatives.
- Moving hosts is straightforward for the code and its history, because every clone holds all of it; issues and pull requests take more work to move.
npm vs pnpm vs Yarn vs Bun
Open as a page: npm vs pnpm vs Yarn vs BunAll four install packages from the same npm registry and read the same package.json. They differ in speed, disk use, strictness and what else comes bundled with them.
| Compare | npm | pnpm | Yarn | Bun |
|---|---|---|---|---|
| What it is | The package manager bundled with Node.js | A fast, disk-saving alternative | An alternative first built at Facebook | A JavaScript runtime with a built-in installer |
| Setup | None, it comes with Node.js | Install it, or enable it with Corepack | Install it, or enable it with Corepack | Install Bun |
| Install speed | Slower than the others | Fast | Fast | Very fast |
| Disk use | A full copy in every project | One shared store, linked into projects | Copies, or no node_modules with Plug'n'Play | A global cache shared by projects |
| Strictness | Loose: undeclared imports often work | Strict: only declared packages resolve | Strict in Plug'n'Play mode | Loose for single apps, strict in new workspaces |
| Lockfile | package-lock.json | pnpm-lock.yaml | yarn.lock | bun.lock |
| Monorepos | Workspaces | Workspaces with strong filtering | Workspaces (Yarn introduced them) | Workspaces |
| Watch out for | Heavy node_modules folders | Tools that assume a flat node_modules | Classic v1 and modern Yarn differ a lot | Younger, with occasional compatibility gaps |
How to choose
- Pick npm for zero setup and compatibility with every tool; tutorials assume it.
- Pick pnpm for monorepos or many projects on one machine, where its shared store saves time and disk space.
- Pick Yarn when a project already uses it, and Bun when the project runs on Bun or install speed matters most.
- Switching later is usually a small job: delete node_modules and the old lockfile, then install with the new tool.
Docker vs Kubernetes
Open as a page: Docker vs KubernetesThey are partners more than rivals. Docker packages an app into a container and runs it; Kubernetes runs many containers across a fleet of machines and keeps them healthy.
| Compare | Docker | Kubernetes |
|---|---|---|
| What it is | Builds and runs containers | Orchestrates containers across machines |
| Scale | One machine; Compose for a few services | Clusters of a few to thousands of machines |
| Main job | Package an app with its dependencies | Schedule, heal, scale and update containers |
| Setup | Install Docker, write a Dockerfile | A cluster, YAML manifests, often Helm |
| Learning curve | Gentle | Steep |
| Cost | Engine free; Desktop paid at larger firms | Free software; managed control planes and nodes cost |
| Typical user | Every developer, locally and in CI | Platform teams running many services |
| Watch out for | Bloated images and secrets baked into them | Operational overhead for small teams |
How to choose
- Use Docker to package apps and run them locally or on a single server, often with Docker Compose.
- Add Kubernetes when many services must run across several machines with automatic scaling and self-healing.
- For a small product, platforms such as Cloud Run, Fly.io or Render run containers without the Kubernetes overhead.
ESLint vs Prettier
Open as a page: ESLint vs PrettierThey answer different questions. ESLint asks whether code is likely to be wrong; Prettier decides how it should look. Most JavaScript projects run both.
| Compare | ESLint | Prettier |
|---|---|---|
| What it does | Finds bugs and risky patterns | Rewrites layout into one style |
| Example catch | Unused variables, misused React hooks | Quotes, semicolons, indentation, line breaks |
| Changes your code | Reports problems; auto-fixes some rules | Reformats the whole file every time |
| Configuration | Many rules and plugins to choose from | A handful of options, by design |
| Languages | JavaScript and TypeScript, more via plugins | JS, TS, CSS, HTML, JSON, Markdown, YAML |
| Speed | Slower on big codebases, above all with type-aware rules | Fast |
| Where it runs | Editor, pre-commit hook and CI | Editor on save, pre-commit hook and CI |
| Faster alternatives | Biome, oxlint | Biome, dprint |
How to choose
- Use both: Prettier for formatting and ESLint for code quality, with eslint-config-prettier switching off the style rules that overlap.
- Consider Biome when one fast tool that both lints and formats is worth giving up some ESLint plugins.
Crafted in the dark. Shipped to the world.
Tell us what you are building. You get a private project space with a proposal and a line-by-line quote within a day.