Assumptions
- Generative coding is going to be the dominant way of coding soon
- lack of generative coding will mean users won't want to use dark
- The Dark language remains incomplete
- Our attention to backwards compatibility for existing users+code has made iterating on the language slow
- The code editing experience in dark isn't great (fluid, client)
- The client is a mess, lots of tech debt, hard to iterate and make good progress on
Goals
- We need to switch to be AI-first
- it doesn't need to be chatgpt, maybe other models will be more appropriate
- We need to aggressively skip forward in our development of the language and ecosystem
- We need to dump a ton of technical debt
Solutions
Technical debt
- Stop working on the existing client
- find new ways of creating/editing code
- Switch to ChatGPT for creating code
- abandon Fluid editor for now
- Make a CLI to get started
- Make a VS Code extension/LSP later
- Skip the language forward
- Leave existing backend running for current customers
- Make a new repo and adapt the language to what we know we want with no backwards compatibility concerns
- verb-noun-number.darklang.io instead of builtwithdark.com
- remove null
- DB should use types
- remove old broken type-checking
- new HTTP handlers
- no queue for now
- Remove any JSON.NET (esp JWT fns)
- Remove all legacy stuff
- async-first
- new if
- sum-types
- records vs dicts
- reference dbs, functions, etc, by ID, not by name
- remove deprecated functions
- Drop the old HttpClient in favor of HttpBaseClient
- build entire Apiserver portion in Dark
Drop existing support of Static Assets hosting/serving (done)
- Skip the infra forward
- No k8s
- Google Cloud Run
- managed certs
- cloud storage
- static assets?
- new DB?
- we can start with a clean DB, allowing users to migrate later
- a cloud-native (no downtime) DB would be great (eg Alloy, Neon, Spanner, Cockroach)
ChatGPT-first
- Develop a straight-forward way to send a prompt to chatgpt to create darklang code
- Need to validate that we can, in fact, do this
- Focus on our strengths
- high-level, immutable language
- built-in packages (raise level of abstraction, use chatGPT to build them)
- deployless (locking, migrations, feature flags - how to change existing code)
- managed infra
- Use it with full language
Implementation
- Validate
- Confirm we can write apps like this, today or in the near future
- write an simple app using a dark-like model and chatgpt
- write a complex app using a dark-like model and chatgpt
- how do we make chatgpt create dark code
- make an entire dark app using chatgpt