---
# System prepended metadata

title: Robius Bi-weekly Meeting Notes

---

# December 7, 2023

## Robrix Updates

* Working on refactoring display logic to be less strongly coupled with view structure
    * Experienced lots of (ideally-avoidable) overhead of modifying code based on the `news-feed` example to slot it into the `wechat` example
* Working on support for system notifications as OSIRIS's first API that supplements Makepad
    * Not true push notifications yet, just displaying information through system notification API
* Next steps: finish transfer of app logic into existing `wechat` app structure, then migrate to new Makepad widget/action API



## Makepad updates
* Redesigned how state can be passed into the widget tree
    * Needs basic migration to new API surface
    * New structure is already on `rik` branch
* New pattern for emitting actions based on data changes
    * And also for mutating data and its associated view in a React-like style
* Refactored websocket layer inside makepad
    * printf macros are routed to an output sink that "always works", but iOS 17 broke that
    * rewrote logs to send info over websockets
* Working on building a profiler based on these websocket logs
* Stijn working on line drawing, which allows displaying charts/graphs
*  eddyb working on SDF fonts
    * Currently, fonts use pixel-aligned atlases, using a lot of performance and memory (must be recreated in a pixel-perfect framebuffer)
    * SDF fonts allow rendering a scalable zoom/pan/scroll 
    * Generate SDFs from glyphs in an on-demand manner


## OSIRIS updates
### Building
* Building applications: initially we wanted something akin to Flutter, e.g., `flutter build <platform>`
* Goal: defer as much work as possible to cargo
* Problem: cannot run any arbitrary procedure *after* the cargo build process completes
* OSIRIS build tool takes artifacts created by cargo and packages them up into an application
    * Can use package metadata in `Cargo.toml` to specify ...
    * OSIRIS build tool will read this metadata and compute all artifacts required to be packaged into the application
        * e.g., can have a crate published to `crates.io` that has Java files it depends on, and the build tool will discover and build/integrate these Java files into the build
* Open question: which names to adopt on `crates.io`, lots of namesquatting going on
    * Sid: should be addressed in the next couple of months
* OSIRIS build tool can generate app pkg configurations on the fly based on default values
* It'd be great to use `androidx` APIs, but those are nigh impossible to depend on properly without using Gradle as the build tool

### Platform APIs
* Started working on Notification APIs
    * First problem: requires metadata in the manifest file to describe which notification channels an application is permitted to use
    * Current solution: use manifest "merger" that allows a base manifest to be "extended" with other manifests (e.g., app-specific manifests) and merged into a single one
        * Supported by default via Android build tools
    * Note from Rik: Unity and Xamarin probably already solve this
    

## WyeWorks Makepad updates
* Wonderous app moving forward.
    * The main screen with content about The Great Wall is fully implemented.
    * The image gallery section is in progress.
* Video player now works, experimenting with using it everywhere
    * Working now on integrating this new widget in some of the demo apps
* We are also working on a new demo application which is a clone of an existing iOS demo app.
    * The app is a showcase of different animations and effects.
    * A few ones were quite easy to implement with Makepad
    * But others would require more work. We are prioritizing to have done a blur effect over images and widgets, if possible.
 
