The current story for developers is "meh", so these items help improve and modernize the developer experience.
project
IP
milestones/description
vs code extension
(1.) Syntax highlighting, (2.) Language server protocol (LSP) - local, (3) LSP - cloud, (4) new ".adama.deploy" file to have 1-click shipping
sublime extension
Since sublime is so fast, try to get core Adama language support for syntax highlighting
improve command line experience
X
(1) Create a new "micro-language" for defining the CLI api to leverage code generation, (2) use language to create new execution framework, (3) shell prediction and completion, (4) address issues #130, #132, #133, and #134
Android client
(1) Write a simplified web-socket interface, (2) implement interface with OkHttp, (3) update apikit code generator to produce a SDK talking to the web socket interface.
bootstrap
Build a tool to bootstrap an RxHTML application from an Adama file
integrate-linter
integrate the linter to detect issues prior launch; address #62
The lexocongraphical ordering of typing is problematic, #126
index-tensor
Tables should be indexable based on integer tuples. Beyond efficiency, language extensions can help work with tables in a more natural array style (think 2D grids)
index-graph
Tables should be able to become hyper graphs for efficient navigation between records using a graph where edges can be annotated (this maps)
full-text-index
introduce full indexing where records describe a rich query language
dynamic-order
introduce a special command language for runtime ordering of lists
dynamic-query
introduce a special language for queries to be dynamic
math-matrix
The type system and math library should come with vectors and matrices out of the box
xml support
Convert messages to XML
rxhtml-static
Embed rxhtml into compile process
rxhtml-dynamic
Embed rxhtml as a first class language feature
metrics emit id;
The language should have first class support for metrics (counters, inflight, distributions)
auto-convert-msg
the binding of messages can be imprecise, need to simplify and automate @convert primarily for services
bubble + privacy
Add a way to annotate a bubble with a privacy policy to simplify a privacy
privacy-policy caching
instead of making privacy policies executable every single time, cache them by person and invalidate on data changes
table-protocol
introduce a way to expose a table protocol for reading and writing tables via a data-grid component
sum types
a sum type is going to be a special type of message
(1) Define a log format that leverages binary serialization and compacts field definitions, (2) convert JSON deltas to binary in the logger to measure impact (throughput and latency), (3) leverage format upstream to minimize future network
healing log
Implement a log data structure that can heal (anti entropy) across machines using Adama's network stack
raft
Implement raft leader election and log append using Adama's network stack
the language should allow specification of a endpoint to replace a piece of data to on data changes. This requires maintaining a local copy in the document along with a state machine about status. The tricky bit requires a delete notification. There is also the need to load every document on a deployment.
replication-search
provide a "between document" search using replication tech
replication-graph
similar to search, replicate part of the document into a graph database
metrics
documents should able to emit metrics
fix-keys
document keys are stored with both private and public keys, and this is really bad; we should only store the public key and version the keys along with an expiry
op-query-engine
a tool to debug the status of a document live
portlets
maybe part of replication, but a subdocument that can emit messages that are independent subscriptions (for SSE/MQTT) and for Adama to consume
adama-actor
implement Adama as a special first class service
twilio-service
implement twilio as a first party service
stripe-service
X
implement stripe as a first party service
BUG: doc-ids
need to make the relationship between document id and key/space ironclad on adama service; it's possible to resurrect old data due to id resurrection
results-stream
figure out how to ensure deliveries can overwrite prior entries
RxHTML is a small set of extensions to allow HTML to be dynamic on the fly. The spiritual question is "what minimal number of things does HTML need to build apps?"
project
IP
milestones/description
headwindcss
Port tailwindcss to Java for vertical control
components
Bring clarity for single javascript extentions for new controls
time
Custom component for selecting a time of day (Blocked on components model)
date
Custom component for selecting a date or a date range (Blocked on components model)
color
Custom component for selecting a color (Blocked on components model)
graph
Custom component with rich config to visualize graphs
server-side
Create a customized shell for each page such that server side rendering allows faster presence
convert-react
Convert the RxHTML forest into a complete React app
gc
figure out if there is still a bug with "rxhtml fire delete" isn't cleaning up pubsub
remove-col
remove the rxhtml column from the spaces column and move into document; #127
Similar to RxHTML, the question is how to build a minimal runtime for iOS and Android applications. Tactically speaking, we can use RxHTML with capacitor.
project
IP
milestones
design document
design a simple XML only way to build Android applications using reactive data binding similar to RxHTML