{"id":16526175,"url":"https://github.com/gbaranski/eb","last_synced_at":"2025-06-19T21:35:23.164Z","repository":{"id":46506939,"uuid":"410380867","full_name":"gbaranski/eb","owner":"gbaranski","description":"Experimental backend for collaborative code editors following a client server architecture. 🚧","archived":false,"fork":false,"pushed_at":"2022-02-23T14:19:41.000Z","size":492,"stargazers_count":13,"open_issues_count":3,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-08T18:11:10.493Z","etag":null,"topics":["editor","hacktoberfest","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gbaranski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-25T21:00:12.000Z","updated_at":"2025-01-05T20:31:35.000Z","dependencies_parsed_at":"2022-07-19T22:04:02.111Z","dependency_job_id":null,"html_url":"https://github.com/gbaranski/eb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gbaranski/eb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Feb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Feb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Feb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Feb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gbaranski","download_url":"https://codeload.github.com/gbaranski/eb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Feb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260836437,"owners_count":23070480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["editor","hacktoberfest","rust"],"created_at":"2024-10-11T17:26:23.850Z","updated_at":"2025-06-19T21:35:18.152Z","avatar_url":"https://github.com/gbaranski.png","language":"Rust","readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gbaranski/eb\"\u003eeb - Editor Backend\u003c/a\u003e\n\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003eExperimental backend for code editors following a client server architecture.\u003c/h4\u003e\n\n- [Architecture](#architecture)\n- [Project status](#project-status)\n- [Problem](#problem)\n- [Q\u0026A](#qa)\n    - [Why not Vim over SSH/Mosh?](#why-not-vim-over-sshmosh)\n    - [What's different from Kakoune server?](#whats-different-from-kakoune-server)\n    - [Why not `xi-editor`?](#why-not-xi-editor)\n\n\n# Architecture\n\n![Architecture](docs/architecture.png)\n\n# Project status\n\nI'm trying to develop a working proof-of-concept.\n\n# Problem\n\nNo separation of client/server in current editors.\n\nSeparating editors to client and a server has few advanteges: \n\n1. Server can be started on a beefy machine while running frontend on a small and slow laptop, without slowing down your development experience or consuming battery.\n2. Easy collaborative programming.\n3. Easier to create a new frontend which can use native GUI toolkits such as GTK and Cocoa, or a frontend which will be have Vim-like editing. Without need of implementing LSP communication or filesystem operations. \n4. Long-running sessions. You can run the server in background, while having editor closed, that'd greatly improve it's startup time. \n5. Frontend can be implemented on almost any platform, it could be made for Web and work similarly to Github Codespaces.\n\n\n# Protocol\n\nJSON-RPC is used for communication between frontend and backend.\n\nCheck [protocol.md](docs/protocol.md) for more information\n\n# Q\u0026A\n\n### Why not Vim over SSH/Mosh?\n\nI've been doing this for a long time, this works, but it has few cons:\n- Quite high input latency.\n- Mosh doesn't support true color, unless we use `master` branch which isn't available on Termux.\n- No native feeling. Not a big issue on Laptop/PC, but on mobile it is hard to use.\n\n### What's different from Kakoune server?\n\n[Kakoune](https://github.com/mawww/kakoune) makes server used only by the kakoune frontend. `eb` wants to be something that can be used by many editors such as VSCode. Similarly how Microsoft came up with LSP which is now used by most of the editors right now. \n\n### Why not `xi-editor`?\n\n`xi-editor` is dead, but I'd like to take some inspiration from it's design.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbaranski%2Feb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgbaranski%2Feb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbaranski%2Feb/lists"}