{"id":21452933,"url":"https://github.com/arindas/mit-6.824-distributed-systems","last_synced_at":"2025-08-31T20:04:59.864Z","repository":{"id":44392258,"uuid":"445126221","full_name":"arindas/mit-6.824-distributed-systems","owner":"arindas","description":"Template repository to work on the labs from MIT 6.824 Distributed Systems course.","archived":false,"fork":false,"pushed_at":"2022-07-10T12:51:10.000Z","size":1489,"stargazers_count":55,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-06-22T03:26:15.598Z","etag":null,"topics":["distributed-systems","mapreduce","raft-consensus-algorithm"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arindas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-06T10:17:04.000Z","updated_at":"2024-04-24T20:50:42.000Z","dependencies_parsed_at":"2022-07-14T20:46:59.270Z","dependency_job_id":null,"html_url":"https://github.com/arindas/mit-6.824-distributed-systems","commit_stats":null,"previous_names":[],"tags_count":2,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Fmit-6.824-distributed-systems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Fmit-6.824-distributed-systems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Fmit-6.824-distributed-systems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arindas%2Fmit-6.824-distributed-systems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arindas","download_url":"https://codeload.github.com/arindas/mit-6.824-distributed-systems/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226002954,"owners_count":17558152,"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":["distributed-systems","mapreduce","raft-consensus-algorithm"],"created_at":"2024-11-23T04:33:09.572Z","updated_at":"2024-11-23T04:33:09.990Z","avatar_url":"https://github.com/arindas.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MIT 6.824 Distributed Systems\nLabs and related materials from the [MIT 6.824 Distributed Systems](https://pdos.csail.mit.edu/6.824) course.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./assets/logo.png\" alt=\"distributed-systems\" width=\"300\" /\u003e   \n\u003c/p\u003e \n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/arindas/mit-6.824-distributed-systems/actions/workflows/ci-tests.yml\"\u003e\u003cimg src=\"https://github.com/arindas/mit-6.824-distributed-systems/actions/workflows/ci-tests.yml/badge.svg\" alt=\"ci-tests status\"\u003e\u003c/a\u003e \n\u003c/p\u003e\n\n**This repository will contain no solutions as requested by rtm \u003crtm@csail.mit.edu\u003e** \u003cbr\u003e\nIf you use this template, please make your resulting repository with solutions private.\n\n## Overview\nFrom the official [website](https://pdos.csail.mit.edu/6.824):\n\u003e### What is 6.824 about?\n\u003e6.824 is a core 12-unit graduate subject with lectures, readings, programming labs, an optional project, a mid-term exam,\n\u003eand a final exam. It will present abstractions and implementation techniques for engineering distributed systems. Major\n\u003etopics include fault tolerance, replication, and consistency. Much of the class consists of studying and discussing case\n\u003estudies of distributed systems.\n\nThis repository was created to serve as an environment for working on the labs.\n\nThe tests from the original source tree at [git://g.csail.mit.edu/6.824-golabs-2021](git://g.csail.mit.edu/6.824-golabs-2021)\nhave been preserved to a great extent to ensure the authenticity of the labs. The only changes to the tests are updated paths\nfor different artefacts due to the changes in the directory structure.\n\n## Organization\nThe repository is organized as follows:\n```\n.\n├── assets\n│   └── logo.png\n├── cmd\n│   ├── diskvd\n│   ├── lockservice\n│   ├── mr\n│   ├── pbservice\n│   └── viewd\n├── datasets\n│   └── project-gutenberg\n├── LICENSE\n├── pkg\n│   ├── kvraft\n│   ├── labgob\n│   ├── labrpc\n│   ├── models\n│   ├── mr\n│   ├── porcupine\n│   ├── raft\n│   ├── shardctrler\n│   └── shardkv\n└── README.md\n```\n\nThe core of each module is represented as a package under the `pkg/` subdirectories. Most of these packages are\naccompanied by tests in the same directory. The user facing utlitiy command/program binaries are kept under `cmd/`.\n\n## Labs Progress\nMark your progress with this checklist.\n\n- [ ] Lab 1: MapReduce\n- [ ] Lab 2: Raft Consensus Algorithm\n  - [ ] Lab 2A: Raft Leader Election\n  - [ ] Lab 2B: Raft Log Entries Append\n  - [ ] Lab 2C: Raft state persistence\n- [ ] Lab 3: Fault-tolerant Key/Value Service\n  - [ ] Lab 3A: Key/value Service Without Log Compaction\n  - [ ] Lab 3B: Key/value Service With Log Compaction\n- [ ] Lab 4: Sharded Key/Value Service\n\n## Testing\nAll of the labs from the original source tree has been migrated to go modules. Except for mapreduce, the tests for all\nlabs may be run as follows:\n\n```shell\ngit clone https://github.com/arindas/mit-6.824-distributed-systems.git\ncd mit-6.824-distributed-systems\ncd pkg/${PACKAGE_TO_TEST}\ngo test\n```\n\nFor the mapreduce lab, run the tests as follows:\n```shell\ncd cmd/mr/scripts\nbash test-mr.sh  # single trial\nbash test-mr-many.sh $N_TRIALS  # multiple trials\n```\n\n## Building\nRequired binaries can be built by running `go build` in the respective `cmd/` subdirectories.\n\n## Attribution\nMaterials presented in this repository are based on the materials from [MIT 6.824 Distributed Systems](https://pdos.csail.mit.edu/6.824) course, which are distributed under the Creative Commons License, as mentioned on their website. This repository falls under fair use of the Creative Commons License.\n\nIn case of any disputes, please contact: Arindam Das \u003cdasarindam.mails@gmail.com\u003e\n\n## License\nThis restructured repository is licensed under the MIT License. See [LICENSE](./LICENSE) for full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farindas%2Fmit-6.824-distributed-systems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farindas%2Fmit-6.824-distributed-systems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farindas%2Fmit-6.824-distributed-systems/lists"}