@@ -0,0 +1,74 @@
3+title = "Membrane" date = "2022-06-02"
5+[taxonomies] grant_type = ["Proposal"] grant_category = ["App Dev"]
7+[extra] image = "" description = "Urbit address space explorer" reward = "5 stars" assignee = "~midlev-mindyr" champion = "~norsyr-torryn" grant_id = "P0120" completed = false canceled = false link = ""
13+Urbit is an OS, and any good OS needs a spreadsheet program.
15+Like in many other domains, the native affordances of Urbit make it a promising platform in which to handle spreadsheet documents. The identity system allows for easy filesharing and collaboration, and Clay is an ideal environment for storing revisions to refer back to at later date. In addition, Hoon's text-parsing and virtualization affordances make it a promising environment for customizable spreadsheet functions.
17+A fully fleshed out version of a spreadsheet app on the Urbit platform would be a powerful business logic machine capable of performing most of the tasks necessary to a small business without the need for sophisticated app development, with federated networking capabilities to handle complex interactions between multiple small businesses. Any spreadsheet, and the logic therein, could be transformed into a permissioned API as secure as Urbit itself, and serve as the database backbone for any number of applications.
19+This proposal an attempt to lay the foundation for future development by producing a useful tool with the core necessary features of an Urbit-native spreadsheet, in order to accomodate Urbit-native businesses in greater capacity and to provide a concrete basis for what a "Google Sheets killer" app on Urbit should look like.
23+## Milestone 0: Proof of Concept
25+Expected Completion: Finished
29+Our demo has shipped and can be found at `~mister-master-tiller-tolbus/cell`. It is a one-spreadsheet app that can sync its spreadsheet to the user's ship. This represents the first footsteps of spreadsheets on Mars. It is a proof of concept that we can make a spreadsheet application on Urbit.
33+Expected Completion: September 2022
37+* I can create spreadsheets through `Membrane` that are saved to my ship's filesystem through Clay and revision controlled therein.
38+* I can view a selection of all of the spreadsheets I have access to from the homepage.
39+* I can view the homepage as a list or a grid and sort spreadsheets by title, tags, or date modified.
40+* I can give my spreadsheets a title, and a list of metadata tags.
41+* I can customize the appearance of cells within my sheets by changing the format of the text or the color of the background.
42+* I can perform basic arithmetic by referencing other cells, such as `=(A1+B2)`. Basic arithmetic includes addition, subtraction, multiplication, division, and tests for equality.
43+* I can insert rows and columns into my spreadsheet by right-clicking on the column or row header.
44+* I can share my spreadsheets with my pals. This sends them an invite where they can accept my spreadsheet and create a local copy of it on their ship.
48+Expected Completion: November 2022
52+* I can organize my spreadsheets into folders that are visible from my homepage.
53+* I can view an edit history of the sheet I'm working on and revert back to an arbitrary date.
54+* I can use any formula from the [Formula.JS](https://formulajs.info/) library to reference other cells within my sheet, and have those formulas automatically update when their referenced cells change.
55+* I can select a group of consecutive cells and copy-paste them into another group of consecutive cells.
56+* I can search my spreadsheet, or a selection within my spreadsheet, for a pattern of characters, and perform find/replace within my search.
57+* I can select a group of cells matching a pattern such as `A1 = 1, A2 = 2, A3 = 3...` and drag so that the following cells follow the pattern, ex. `A4 = 4, A5 = 5...`.
58+* I can export my spreadsheets to CSV format and download them onto my Terran computer.
59+* I can import CSV spreadsheets from my Terran computer onto Membrane.
60+* I can read about the features of `Membrane` by looking at its page in the `Documentation` app.
61+* My spreadsheets expose an API that can be accessed by third-party front-ends, as well as other Urbit apps. All pokes and scries are documented in the `Documentation` app.
63+# The Future of Spreadsheets on Urbit
65+In the future, we'd like to see the following things implemented on `Membrane` to make it the killer app it should be. Upon completion of this project, we will construct two new grant proposals to implement the following features:
67+* Evaluation of spreadsheet formulas in Hoon rather than in the browser, with fields updating automatically in the background upon interaction with the API from third party clients.
68+* Spreadsheets can be diffed and merged with each other, on one computer or over the network, with a visual interface for conflict resolution.
72+Pir tea, is a two-man cohort of `~tiller-tolbus` and `~randes-losrep`. Our duo currently works by splitting the front-end and back-end considerations evenly. In simple terms, `~tiller-tolbus` works on Martian code, while `~randes-losrep` works on Terran code.
74+As we are both remaining pseudonymous to whatever degree possible, we have developed a demo app showcasing our ability to write and distribute apps on Urbit.