# Tooling for a Personal Operating System

> I believe this is the future of tooling for the personal Operating System

Source: https://curiouslychase.com/posts/tooling-for-a-personal-operating-system/

Any tool should provide these critical concepts for a user to have an effective personal operating system:
- **Quick capture** - a user must be able to easily capture the object with simplicity while also being able to make a capture more complex. As an example, I should be able to capture a simple daily log ("started working on a blog post") or capture a book (by its title) and easily input the author, my status of reading it and automatically capture that it is of a type (a reference to a **Books** object)
- **Objects** - An object is a "document" or "file". The important part is that it is abstract enough that it isn't _required_ to have any special attributes for it to work.
- **Properties** - An object should be able to have properties: extra data that can be attached to the object. This extra data is the key to being able to easily filter and bucket objects. It lets a user see "what is alike, what is different and what is unique". For a book, a property could be **author** (and it's a reference to an **author** object) or topic (and its a reference to a **topic** object). 
- **Contexts** - A context is the _way_ a user thinks about their data. The flexibility of context is largely dependent on the flexibility of properties. As an example: A "book" is a context ("what is this?") and will have similar properties based on the fact that it is a book. Context can also be "what time of day is it?", "where am I?"
- **Views** - A view is a concrete way to _view_ data (rather than organizing it). A view allows a user to say "I want to see all objects with these properties in these contexts". The view is the "focus mode" of a context. As an example,  a view would allow me to say "I want to see all books that I read last year." And give me a list of the books that I read last year. I can add as much context and filter by as many properties as I'd like. The critical part here is that a view is an alternative to the need to organize to see things based on context.

# Thoughts
- **On Properties**: Properties should _reference_ other objects as much as possible, rather than being "plain-text" values. As an example, if I read a book by "Douglas Adams", the property should reference an object with the name of "Douglas Adams" that is its own document or file with its own data _about_ "Douglas Adams". Within "Douglas Adams", because it's a reference, I could create a view that shows me results for every _other object_ that references "Douglas Adams"
- If a tool provides these 4 concepts, it opens the doors for better capture, thinking and pattern recognition
