{"id":16131482,"url":"https://github.com/thislight/tractor-prototype0","last_synced_at":"2025-04-06T14:32:54.388Z","repository":{"id":171529393,"uuid":"313562477","full_name":"thislight/tractor-prototype0","owner":"thislight","description":null,"archived":false,"fork":false,"pushed_at":"2020-11-21T03:10:25.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-12T20:37:56.376Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thislight.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-17T09:02:05.000Z","updated_at":"2020-11-21T03:10:27.000Z","dependencies_parsed_at":"2024-05-11T17:15:39.082Z","dependency_job_id":null,"html_url":"https://github.com/thislight/tractor-prototype0","commit_stats":null,"previous_names":["thislight/tractor-prototype0"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thislight%2Ftractor-prototype0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thislight%2Ftractor-prototype0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thislight%2Ftractor-prototype0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thislight%2Ftractor-prototype0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thislight","download_url":"https://codeload.github.com/thislight/tractor-prototype0/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247495935,"owners_count":20948128,"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":[],"created_at":"2024-10-09T22:25:20.893Z","updated_at":"2025-04-06T14:32:54.383Z","avatar_url":"https://github.com/thislight.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tractor-Prototype0\nThis is a showcase prototype for the network structure of tractor.\n\n## Run\n### Requirements\n- libzmq 4.2 or later\n- Python 3.6+ (you need to install `dataclasses` on pypi for Python 3.6)\n- Programs are tested under Python 3.9.0 and Fedora 33\n- pyzmq 20.0.0 (you can use the `requirements.txt` to install though pip, `pip install -r requirements.txt`)\n\n### Project Structure\n- `server/`: files for directory server\n- `storage/`: files for storage \"server\"\n- `app/`: files for a minial application to upload and download files\n\n### Steps\nThe directory server is the centre of the network, then you need to one or more storage server to store files (in this storage server implementation just allow one instance).\n\n1. (optional) create a virtual environment and use. `virtualenv venv \u0026\u0026 source venv/bin/activate`\n2. install python-side requirements. `pip install -r requirements.txt`\n3. run directory server. `python server/server.py`\n4. run storage server (maybe you need a new terminal window). `python storage/storage.py`\n\nThen open a new terminal window to use app: `cd app`\n- `python app.py declare testdata1.txt`: read `testdata1.txt` into a ramfs-like space and declare the app has it on directory server\n- `python app.py disown testdata1.txt`: disown `testdata1.txt` on directory server\n- `python app.py show testdata1.txt`: show the content of testdata1.txt on remote server\n\n## Notice\nThis prototype just a showcase for the powerful network design and it does not cover many keys in the complete design.\n\n## LICENSE\n````\n    tractor-prototype0\n    Copyright (C) 2020 thisLight\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Affero General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n     any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Affero General Public License for more details.\n\n    You should have received a copy of the GNU Affero General Public License\n    along with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n````\nDisclaim: The `testdata1.txt` under `app` is not a part of tractor-prototype0 and it is not a copyrighted content owned by anyone\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthislight%2Ftractor-prototype0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthislight%2Ftractor-prototype0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthislight%2Ftractor-prototype0/lists"}