{"id":18556856,"url":"https://github.com/urbit/gsoc-2015-ideas","last_synced_at":"2026-03-19T05:03:21.527Z","repository":{"id":27565589,"uuid":"31047737","full_name":"urbit/gsoc-2015-ideas","owner":"urbit","description":null,"archived":false,"fork":false,"pushed_at":"2015-02-20T02:18:14.000Z","size":124,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-06-15T20:24:46.074Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/urbit.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":"2015-02-20T02:17:57.000Z","updated_at":"2020-01-08T18:03:19.000Z","dependencies_parsed_at":"2022-09-02T15:42:12.822Z","dependency_job_id":null,"html_url":"https://github.com/urbit/gsoc-2015-ideas","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/urbit/gsoc-2015-ideas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbit%2Fgsoc-2015-ideas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbit%2Fgsoc-2015-ideas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbit%2Fgsoc-2015-ideas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbit%2Fgsoc-2015-ideas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/urbit","download_url":"https://codeload.github.com/urbit/gsoc-2015-ideas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbit%2Fgsoc-2015-ideas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29867561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T18:27:06.972Z","status":"ssl_error","status_checked_at":"2026-02-26T18:26:57.848Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2024-11-06T21:33:35.620Z","updated_at":"2026-02-26T18:36:33.984Z","avatar_url":"https://github.com/urbit.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project ideas\n\nurbit is a complete computing stack written from scratch. arvo, our operating system, is written in hoon, our programming language, which is a thin wrapper around nock, our equivalent of assembly. Everything runs inside a virtual machine on top of unix. \n\nNaturally, the majority of these projects will require writting hoon at either intermediate or advanced levels. We definitely do *not* expect students to have previous experience in hoon. Having some functional programming experience can be helpful, but even that is not really needed. It is easy to pick up. Last year we had several interns, all of whom were up to speed within two weeks.\n\n---\n\n## Expand the library of API connectors for urbit\n\n### Brief description\n\nAt the moment your data is spread out across cloud services. With a personal cloud computer like urbit, you should be able to control all of these services from one place. The framework for doing this in urbit is in place, and the more outside data types we can handle the better. \n\n### Difficulty\n\nMedium. Student should be familiar with common web APIs, and will need to program in hoon.\n\n### Mentor\n\nGalen Wolfe-Pauly\n\n---\n\n## Run JS in urbit\n\n### Brief description\n\nBecause urbit can also be accessed through a browser we use a lot of JavaScript. To make the development of client-side urbit applications smoother it would be great to implement JavaScript / ES5 inside of urbit and bind it to V8 or equivalent. \n\n### Difficulty\n\nMedium-hard. Student would need to learn hoon quite thoroughly. Student would also need either a strong languages background or have a lot of JS experience.\n\n### Mentor\n\nCurtis Yarvin\n\n---\n\n## hoon language improvements\n\n### Brief description\n\nThere are a large set of rough spots and small weaknesses in the hoon language. Better comprehension macro libraries, better container libraries, improved defaulting, memoization at the compiler layer and so on. \n\n### Difficulty\n\nMedium-hard. Student would need a solid FP background and the desire to gain a deep knowledge of the hoon langauge.\n\n### Mentor\n\nCurtis Yarvin\n\n---\n\n## Floating point in hoon\n\n### Brief description\n\nOur support of floating point is rudimentary at present. It would be ideal to build not just fully fleshed-out floating point support, but also a well-chosen set of standard primitives with C implementations to boot. Ideally similar to the BLAS library: http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms.\n\n### Difficulty\n\nHard. Student would need to learn the hoon langauge thoroughly and have at least rudimentary C skills. \n\n### Mentor\n\nCurtis Yarvin\n\n---\n\n## Client side framework\n\n### Brief description\n\nWe currently have a bare-bones framework for communicating with urbit from a browser. It works reasonably well, but could easily be expanded to become more fully featured for developers. Our client-side applications have evolved to use the React / Flux framework, and we could improve our tooling to fit properly within that framework. \n\nOne stretch goal for this project could include producing some developer tools to run in the browser. Imagine using emscripten to actually run vere inside a browser, or modifying browserify to run in the browser while pulling content from the urbit filesystem, `%clay`. \n\n### Difficulty\n\nMedium to hard. Student would need solid JavaScript / CoffeeScript experience and would need to have communication skills for to engaging with the developer community. There's a lot of flexibility here depending on the student's background and experience.\n\n### Mentor\n\nGalen Wolfe-Pauly\n\n---\n\n## Native mobile application\n\n### Brief description\n\nBringing a fundamental urbit application, such as `:talk`, to mobile would be a great project. With the annoucement of React Native and our reliance on React, it would be really exciting for us to try to have our existing client-side framework used natively. \n\n### Difficulty\n\nMedium-hard. Student would need to have experience working on native mobile applications, preferably iOS. Design experience or interest would be a huge benefit here.\n\n### Mentor\n\nGalen Wolfe-Pauly\n\n---\n\n## Optimize the fsck out of our interpreter\n\n### Brief description\n\nWe like to say that 'everything in urbit reduces to nock', and it does. Everything in urbit also runs in our interpreter, and we think it could be faster. A lot faster. There are a few potential strategies for this. One could include LLVM.\n\n### Difficulty\n\nHard. This is pretty serious work, and the student would need to be either determined or simply have real technical chops.\n\n### Mentor\n\nCurtis Yarvin\n\n---\n\n## WebRTC for urbit\n\n### Brief description\n\nurbit could easily act as the broker for WebRTC connections. This would nicely compliment the communication tools we're building into urbit.\n\n### Difficulty\n\nEasy - medium. \n\n### Mentor\n\nGalen Wolfe-Pauly\n\n---\n\n## Blob storage\n\n### Brief description\n\nurbit lives in memory and our filesystem `%clay` is strictly referentially transparent. This provides challenges for blob storage. There are a range of possible solutions to this problem. We have considered a few, and would be excited to work with a determined student interested in this problem. \n\n### Difficulty\n\nHard. The student would need to have a solid foundation of systems development. \n\n### Mentor\n\nCurtis Yarvin\n\n---\n\n## You decide\n\n### Brief description\n\nIf we all had personal cloud computers, what would they absolutely need? We try to ask ourselves that question quite a lot and want urbit to be simultaneously clean and concise and fully featured. If there's a project you would really like to implement on top of or as a part of urbit feel free to pitch it to us. \n\n### Difficulty\n\nHard. If you're going to propose something that's not on this list it should be substantial — but we're open to hearing any ideas you might have.\n\n### Mentor\n\nCurtis Yarvin or Galen Wolfe-Pauly depending on the project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furbit%2Fgsoc-2015-ideas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furbit%2Fgsoc-2015-ideas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furbit%2Fgsoc-2015-ideas/lists"}