Blocks should be the top level object, not a property of other objects
Objects should inherit from Blocks, not vice-versa. Maintaining Object as the container object for Blocks incurs considerable tech debt.
Any inline functionality for Object creation and management within Blocks must be implemented per Object type instead of inheriting from a top-level Block type.
It also implies that none of the inherent Block behavior -- created time, children, transclusions, etc -- will apply to Objects unless re-impelmented for each new Object sub-type.
We see this in the rollout of Tasks. The Task functionality appears to be an entirely new business logic bolted onto the side of a Block-based note-taking application. Tasks are managed in a separate tab, with separate affordances from blocks. Editing tasks inline, there is no way to type a Tag. Instead that must be re-implemented, or else must be managed separately by the user by having to think, open the Task details, and add the Tag. Even then, one cannot add a new Tag when typing into the Tag creation affordance -- instead that affordance only knows about Tags that the user must have already created. If Task were instead a type of Block, all of this essential note-taking behavior would not have to be re-implemented. If a Task were instead simply a sub-type of Block, then the user could type a task as easily as they type out a Block.
A Task would also then inherit all of the hierarchy management features of a Block, instead of having to re-implement.Tasks cannot contain Tasks at the time of writing this issue, because hierarchy is not re-implemented for Tasks.
Using Block as a a top-level type would work as follow for all other text-based types --
- Idea is just a Block with the notion of "idea" attached to it.
- Person is a Block with special metadata sub-blocks like First Name and Email
- Book is a Block with a Person and other sub-blocks
- etc
Media might need to be its own type of Block, as would Tag and Page.
0 Comments
Sign in to comment
No comments yet. Be the first to share your thoughts!
