{"id":18466094,"url":"https://github.com/willfaught/orm-and-rpc","last_synced_at":"2026-03-13T00:31:39.242Z","repository":{"id":66728828,"uuid":"45560624","full_name":"willfaught/orm-and-rpc","owner":"willfaught","description":"Presentation \u0026 prototype for ORM \u0026 RPC frameworks","archived":false,"fork":false,"pushed_at":"2022-08-18T22:30:38.000Z","size":5654,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-17T12:17:46.433Z","etag":null,"topics":["go","golang","orm","rpc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willfaught.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}},"created_at":"2015-11-04T18:59:13.000Z","updated_at":"2022-12-22T11:06:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc8c03ca-fa87-410b-92b0-2a6930602b6f","html_url":"https://github.com/willfaught/orm-and-rpc","commit_stats":null,"previous_names":["willfaught/services"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/willfaught/orm-and-rpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willfaught%2Form-and-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willfaught%2Form-and-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willfaught%2Form-and-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willfaught%2Form-and-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willfaught","download_url":"https://codeload.github.com/willfaught/orm-and-rpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willfaught%2Form-and-rpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30451538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T21:31:01.033Z","status":"ssl_error","status_checked_at":"2026-03-12T21:30:43.161Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["go","golang","orm","rpc"],"created_at":"2024-11-06T09:15:03.224Z","updated_at":"2026-03-13T00:31:39.220Z","avatar_url":"https://github.com/willfaught.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ORM and RPC prototypes and slides\n\n## Goals\n\n- Adaptive\n- Faster\n- Generateable\n- Safer\n- Simpler\n\n## Features\n\n- General\n    - Smaller APIs from simpler error handling: panics for unrecoverable errors, including unrecoverable network errors\n    - Value types used wherever possible to avoid GC load\n    - Services and models are independent, can mix and match\n- Services\n    - No complicated and vague HTTP semantics: direct RPC for all service methods\n    - Service interface versions and migration\n    - Faster RPC\n        - Gob encoding is more efficient than JSON encoding\n        - [JSON is not a good fit for internal communication](https://www.hakkalabs.co/articles/distributed-systems-go-good-bad-otherwise)\n    - Standalone services that can be mixed arbitrarily with any RPC server\n    - Support multiple, simultaneous encodings, like gob and HTTP JSON-RPC\n    - Service interfaces enable:\n         - Two services with high-bandwidth communication to be co-located in the same process as an optimization, only violating deployment isolation as a tradeoff for better performance\n         - Easy proxying\n         - Tests that double as unit and integration tests\n- Models\n    - Separate packages for separate namespaces\n    - [Clean architecture](https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html): models use repositories that know nothing about implementation details\n    - Models are independent of services with methods that plug into compatible services\n    - Model versions and schema migration\n    - Rich Go types for model fields\n    - Zero configuration: default column and JSON field names\n\n## To do\n\n- Fix the JSON-RPC example\n\n## Notes\n\nThe shell scripts have not been tested.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillfaught%2Form-and-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillfaught%2Form-and-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillfaught%2Form-and-rpc/lists"}