moses.md
#3

Monolithic vs composable

Two different philosophies for building systems with large capabilities.

Monolithic approach

  • Build one giant system that does everything
  • All functionality integrated inside the system
  • Your data lives inside it
  • Proprietary formats internal to the system
  • No interchange format (or very limited - maybe an API, maybe export)
  • User works entirely within the monolith
  • Examples: Notion (tries to be notes + database + wiki + project management), Salesforce (giant integrated CRM), Adobe Creative Cloud (integrated suite with proprietary formats), 60s mainframe systems

Composable approach

  • Build many small tools that each do one thing well
  • Tools work together via standard interchange formats
  • Your data lives in files that any tool can access
  • Open formats (text, markdown, etc)
  • Files/text streams are the universal interchange format
  • User controls how tools compose
  • Examples: Unix tools (grep, sed, awk, git), markdown files (write in any editor), Git, Obsidian (works with files on your filesystem)

The tradeoffs

Monolithic systems can be easier initially — everything is integrated, works together out of the box, consistent interface.

Composable systems require more initial setup but give you more control — you choose your tools and customize them, create your own workflows, own your data in open formats. Over time, arguably, the ceiling is higher.