Note: this article is part of the "Building a graphical multi-user spreadsheet editor in Zig" series. Read all the articles here:
The design process was: uses -> data model -> file format and encoding (where each arrow means "determine"). So let's get started!
What are the legitimate uses for spreadsheets? Are there any? Does mixing data and computing logic even make sense? To be honest, I'm pretty sure that using them for anything other than specific, one-time tasks is a bad idea. Still, I do believe spreadsheets are a rather unique computing engine.
Then, what am I reaching for when I fire up a spreadsheet editor?
The data model should target this use.
A spreadsheet file is a set of definitions and metadata (such as sheet names).
Each definition is:
I want grid to be a good UNIX citizen, that interoperates well with other tools. I have command-line scriptability and .csv-awareness in mind, but the most important point is the use of a textual file format.
Plain text unties the data from the tool. It allows the use of any text editor or UNIX tool (grep, sed, piping...). It allows version control. Plain text is power for everyone.
The encoding of data as text should:
The details of the encoding are not ready yet.