Laying the foundations for the data model



Note: this article is part of the "Building a graphical multi-user spreadsheet editor in Zig" series. Read all the articles here:

series homepage


The design process was: uses -> data model -> file format and encoding (where each arrow means "determine"). So let's get started!



Uses


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.



Data model


A spreadsheet file is a set of definitions and metadata (such as sheet names).


Each definition is:



File format and encoding


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.