Conference Presentation, Keynote
A Language-Oriented System Design
- The system architecture combines a dependently typed language and English, with a UI that hides internal syntax to present only natural language interfaces and string templates.
- Data representation utilizes three methods—tables, rules, and hard-coded primitives—with rules generally defining propositions in terms of nouns, while exceptions and primitives like IP ranges remain hard-coded.
- The core logic functions as a deductive database with types as propositions, enforcing data well-formedness via a type checker and supporting easily defined transitive closures.
- Read permissions operate transitively to restrict data views, while deletion requests trigger a mandatory two-week delay to manage the computational expense of cascading cleanup.
- Configuration changes and non-extensional data require versioning and upgrade steps, whereas extensional data and new type declarations can be synchronized externally or uploaded without core system upgrades.
- An approval workflow routes permission or group change requests to responsible approvers via email for rejection or approval, triggering automatic execution upon approval.
- The system anticipates infinite query loops due to its Prolog-like core, necessitating an execution budget limit, though the current error handling for budget violations is acknowledged as suboptimal.
- Implementation involves a custom domain-specific language that re-implements various database and programming language concepts, with internal ontology data shared between systems via subscriptions or periodic queries.