Split View: 지금 주목받는 오픈소스 (2) 빌드·에디터·CLI·터미널
지금 주목받는 오픈소스 (2) 빌드·에디터·CLI·터미널
들어가며 — 대기 시간이 사라지자 습관이 바뀌었다
개발자 도구에서 지난 몇 년간 벌어진 변화는 기능 추가가 아니라 속도였습니다. 의존성 설치, 린트, 번들링처럼 하루에 수십 번 반복되는 작업이 네이티브 언어로 다시 쓰이면서 대기 시간이 크게 줄었습니다.
이건 단순한 편의가 아닙니다. 린트가 3초 걸리면 커밋 전에 한 번 돌리지만, 30밀리초면 저장할 때마다 돌립니다. 도구가 빨라지면 사용 빈도가 바뀌고, 빈도가 바뀌면 워크플로가 바뀝니다.
아래는 순위가 아니라 역할별 지도입니다.
스냅숏
| 프로젝트 | 라이선스(저장소 선언 기준) | 스타 | 최근 푸시 |
|---|---|---|---|
oven-sh/bun | MIT (LGPL-2 라이브러리 정적 링크) | 95,389 | 2026-08-12 |
astral-sh/uv | Apache-2.0 | 88,667 | 2026-08-12 |
zed-industries/zed | GPL-3.0 및 Apache 병존 | 88,472 | 2026-08-12 |
vitejs/vite | MIT | 82,322 | 2026-08-12 |
jesseduffield/lazygit | MIT | 81,252 | 2026-08-12 |
ghostty-org/ghostty | MIT | 59,539 | 2026-08-12 |
astral-sh/ruff | MIT | 49,163 | 2026-08-12 |
helix-editor/helix | MPL-2.0 | 45,802 | 2026-08-11 |
zellij-org/zellij | MIT | 34,853 | 2026-08-12 |
atuinsh/atuin | MIT | 31,123 | 2026-08-12 |
biomejs/biome | Apache-2.0 | 25,549 | 2026-08-12 |
oxc-project/oxc | MIT | 22,281 | 2026-08-12 |
모두 2026-08-12 기준입니다.
런타임과 패키지 관리
oven-sh/bun은 런타임, 패키지 매니저, 번들러, 테스트 러너를 하나의 실행 파일에 넣었습니다. 여러 도구를 조합하던 자리를 하나로 대체하려는 시도입니다. Node 호환은 넓어졌지만 완전하지는 않으니, 기존 서비스를 옮길 계획이라면 의존성부터 실제로 돌려 보세요.
astral-sh/uv는 파이썬 쪽에서 같은 일을 합니다. 가상 환경 생성, 의존성 해석, 잠금 파일, 인터프리터 설치까지 하나로 묶었고 체감 속도 차이가 큽니다. 다만 소스 빌드가 필요한 과학 계산 패키지나 사내 사설 인덱스처럼 경로가 특이한 환경에서는 아직 예외를 만나기도 합니다. CI를 먼저 옮겨 보고 로컬을 나중에 바꾸는 순서가 안전합니다.
# 예시: 프로젝트 초기화부터 실행까지
uv init myproj && cd myproj
uv add httpx
uv run python -c "import httpx; print(httpx.__version__)"
린터와 빌드
astral-sh/ruff는 여러 파이썬 린터가 나눠 하던 규칙을 한 바이너리에 모으고 포매팅까지 포함합니다. 규칙 이름이 기존 도구와 호환되도록 설계되어 이주 비용이 낮은 편입니다.
biomejs/biome는 자바스크립트 쪽에서 린터와 포매터를 통합합니다. 다만 기존 ESLint 플러그인 생태계 전체를 대체하지는 못하므로, 팀이 의존하는 커스텀 규칙 목록을 먼저 확인해야 합니다.
oxc-project/oxc는 파서, 린터, 변환기 같은 자바스크립트 툴체인 부품을 Rust로 만드는 모음집입니다. 다른 도구가 부품으로 가져다 쓰는 성격이 강하고, 구성 요소마다 완성도가 다릅니다. 최종 사용자 도구를 기대하고 접근하면 어긋납니다.
vitejs/vite는 이제 새로 만드는 프론트엔드 프로젝트의 기본 선택지에 가깝습니다. 내부 엔진 교체가 진행 중인 영역이므로, 플러그인을 직접 만든다면 상위 API에 붙는 편이 안전합니다.
에디터
helix-editor/helix는 LSP와 트리시터를 내장한 모달 에디터입니다. 플러그인 없이도 바로 쓸 수 있게 만든 대신 확장성은 제한적입니다. 라이선스가 MPL-2.0이라 수정한 파일 단위로 공개 의무가 붙는 약한 카피레프트입니다.
zed-industries/zed는 Rust로 만든 협업 지향 에디터입니다. 라이선스가 특히 중요합니다. 저장소에 LICENSE-GPL과 LICENSE-APACHE가 함께 있어 GitHub이 단일 라이선스로 분류하지 못하고 Other로 표시합니다. 즉 구성 요소마다 조건이 다르니, 사내 배포나 제품 내장 계획이 있다면 어느 부분에 어떤 파일이 적용되는지 확인해야 합니다.
터미널과 CLI
ghostty-org/ghostty는 Zig로 만든 GPU 가속 터미널로, 각 플랫폼의 네이티브 UI를 쓰는 점이 특징입니다. 공개 저장소가 열린 시점이 상대적으로 최근이라 플랫폼별 지원 범위가 고르지 않을 수 있으니, 원격 접속 환경이나 특수 키 바인딩에 의존한다면 미리 확인하세요.
zellij-org/zellij는 tmux가 차지하던 자리를 노리는 터미널 멀티플렉서로, 기본 레이아웃과 플러그인 구조를 앞에 내세웁니다. 손에 익은 tmux 설정이 있다면 굳이 옮길 이유는 크지 않습니다.
jesseduffield/lazygit은 스테이징, 리베이스, 체리픽 같은 작업을 터미널 화면에서 처리합니다. 명령어를 외우는 대신 눈으로 보고 고르게 해 주지만, git이 무엇을 하는지 모르는 상태에서 쓰면 실수를 더 빠르게 만들 뿐입니다.
atuinsh/atuin은 셸 히스토리를 SQLite에 넣고 검색과 기기 간 동기화를 붙입니다. 동기화 서버는 직접 운영할 수 있습니다. 명령 이력에는 자격 증명이 섞이기 쉬우니 어디에 저장되는지 확인하고 쓰세요.
도입 전 확인
라이선스 전문을 직접 확인하고, 상업적 도입은 법무 검토를 거치세요. 이 글은 법률 자문이 아닙니다.
특히 oven-sh/bun은 LICENSE 파일이 Bun 자체는 MIT라고 밝히면서, LGPL-2 라이브러리를 정적 링크한다는 점과 그에 따른 재링크 조건을 함께 설명합니다. 사내에서 쓰는 것과 제품에 넣어 재배포하는 것은 검토 범위가 다릅니다.
도구 자체는 대개 개인이 먼저 도입합니다. 팀 표준으로 올릴 때는 CI 이미지, 잠금 파일 형식, 신규 입사자 설치 절차까지 함께 바뀐다는 점을 계산에 넣으세요.
저장소 정보(스타 수·라이선스·최근 활동)는 2026-08-12에 GitHub에서 직접 확인한 시점 값입니다. 수치와 상태는 바뀝니다.
링크
시리즈: 이전 글 — AI 에이전트와 LLM 도구 · 다음 글 — 인프라와 데이터베이스
이 블로그의 관련 글:
Open Source Worth Watching Right Now (2) Build Tools, Editors, CLIs, and Terminals
- Introduction — once the waiting disappeared, habits changed
- Snapshot
- Runtimes and package management
- Linters and builds
- Editors
- Terminals and CLIs
- Before you adopt
- Links
Introduction — once the waiting disappeared, habits changed
The change that happened in developer tooling over the past few years was not added features but speed. Work that gets repeated dozens of times a day, such as installing dependencies, linting, and bundling, was rewritten in native languages, and the waiting shrank sharply.
This is not a matter of simple convenience. If a lint run takes 3 seconds you run it once before committing, but at 30 milliseconds you run it every time you save. When a tool gets faster, how often you use it changes, and when the frequency changes, the workflow changes.
What follows is not a ranking but a map grouped by role.
Snapshot
| Project | License (as declared by the repo) | Stars | Last push |
|---|---|---|---|
oven-sh/bun | MIT (statically links an LGPL-2 library) | 95,389 | 2026-08-12 |
astral-sh/uv | Apache-2.0 | 88,667 | 2026-08-12 |
zed-industries/zed | GPL-3.0 and Apache side by side | 88,472 | 2026-08-12 |
vitejs/vite | MIT | 82,322 | 2026-08-12 |
jesseduffield/lazygit | MIT | 81,252 | 2026-08-12 |
ghostty-org/ghostty | MIT | 59,539 | 2026-08-12 |
astral-sh/ruff | MIT | 49,163 | 2026-08-12 |
helix-editor/helix | MPL-2.0 | 45,802 | 2026-08-11 |
zellij-org/zellij | MIT | 34,853 | 2026-08-12 |
atuinsh/atuin | MIT | 31,123 | 2026-08-12 |
biomejs/biome | Apache-2.0 | 25,549 | 2026-08-12 |
oxc-project/oxc | MIT | 22,281 | 2026-08-12 |
All figures as of 2026-08-12.
Runtimes and package management
oven-sh/bun put a runtime, a package manager, a bundler, and a test runner into a single executable. It is an attempt to replace with one thing the place where you used to combine several tools. Node compatibility has widened but it is not complete, so if you plan to move an existing service across, start by actually running your dependencies on it.
astral-sh/uv does the same job on the Python side. It ties together virtual environment creation, dependency resolution, lock files, and even interpreter installation, and the difference in perceived speed is large. That said, in environments with unusual paths, such as scientific computing packages that need a source build or an internal private index, you still run into exceptions. Moving CI across first and changing local machines later is the safe order.
# Example: from project initialization through to running it
uv init myproj && cd myproj
uv add httpx
uv run python -c "import httpx; print(httpx.__version__)"
Linters and builds
astral-sh/ruff gathers into one binary the rules that several separate Python linters used to divide up, and it includes formatting as well. The rule names were designed to stay compatible with the existing tools, so the migration cost tends to be low.
biomejs/biome unifies the linter and the formatter on the JavaScript side. It does not replace the entire existing ESLint plugin ecosystem, though, so you have to check the list of custom rules your team depends on first.
oxc-project/oxc is a collection that builds JavaScript toolchain parts, such as a parser, a linter, and a transformer, in Rust. It leans strongly toward being something other tools pull in as a component, and the individual pieces differ in how finished they are. Approach it expecting an end-user tool and it will not line up.
vitejs/vite is by now close to the default choice for a newly created front-end project. Its internal engine is an area where replacement is in progress, so if you write plugins yourself, attaching to the higher-level API is the safer route.
Editors
helix-editor/helix is a modal editor with LSP and Tree-sitter built in. It was made so you can use it right away without plugins, and in exchange extensibility is limited. Its license is MPL-2.0, a weak copyleft under which the disclosure obligation attaches at the level of each modified file.
zed-industries/zed is a collaboration-oriented editor written in Rust. The license matters especially here. The repository holds both LICENSE-GPL and LICENSE-APACHE, so GitHub cannot classify it under a single license and shows it as Other. That is, the terms differ by component, so if you plan internal distribution or embedding it in a product, you have to check which file applies to which part.
Terminals and CLIs
ghostty-org/ghostty is a GPU-accelerated terminal built in Zig, and what marks it out is that it uses each platform's native UI. The public repository opened relatively recently, so the range of per-platform support may be uneven; if you depend on remote-access environments or unusual key bindings, check in advance.
zellij-org/zellij is a terminal multiplexer aiming at the place tmux has occupied, and it leads with built-in layouts and a plugin structure. If you already have a tmux configuration your hands know, there is not much reason to move.
jesseduffield/lazygit handles work such as staging, rebasing, and cherry-picking on a terminal screen. It lets you look and choose instead of memorizing commands, but used without knowing what git is doing, it only makes you produce mistakes faster.
atuinsh/atuin puts shell history into SQLite and attaches search and sync across machines. You can run the sync server yourself. Credentials easily get mixed into command history, so check where it is stored before you use it.
Before you adopt
Check the full licence text yourself, and route commercial adoption through legal review. This post is not legal advice.
oven-sh/bun in particular has a LICENSE file that states Bun itself is MIT while also explaining that it statically links an LGPL-2 library and the relinking condition that comes with it. Using something inside the company and putting it into a product you redistribute are different scopes of review.
The tools themselves are usually adopted by an individual first. When you raise one to a team standard, factor in that the CI image, the lock file format, and the setup procedure for new joiners all change along with it.
Repository details (stars, licence, recent activity) were checked directly on GitHub on 2026-08-12 and are point-in-time values. The numbers and the status change.
Links
Series: Previous — AI Agents and LLM Tooling · Next — Infrastructure and Databases
Related posts on this blog:
Tools: Text Diff · Regex Tester