{"guid":"24a3523a-b9e4-4352-9316-00ccd2a00416","title":"Local-first Distributed Applications with REScala","subtitle":null,"slug":"bob2022-local-first-distributed-applications-with-rescala-mogk","link":"https://bobkonf.de/2022/mogk.html","description":"Local-first software is a new term for interactive\nend-user applications, which provide data ownership and privacy while\nstill enabling data to be shared, and which allow working offline\nwhile ensuring data consistency. Developing such applications is often\nperceived as hard, because of the use of unsuited general purpose\nprogramming models. REScala is a mature research project that\naddresses these issues and provides a specialized programming model\ndesigned to be understandable by developers while still providing the\nflexibility for efficient implementations that automatically ensure\nall desired properties.\n\nIn this talk, we will show how a combination of functional reactive\nprogramming (the mostly classical variant) and conflict-free\nreplicated data types (specifically join semilattices) provide\nabstract reasoning about all points in space and time for local-first\napplications. Specifically why reasoning in the abstract is actually\nmuch easier for developers than reasoning about all the hundreds and\nthousands of possible special cases their implementation admits.\n\nWe hope that this talk helps to spread such better suited programming\nmodels, thus leading to most software being local-first by\ndefault. Then, we may see a future where individuals own their data\nand not have it stolen by advertisers, and companies keep their\nsovereignty without being at the mercy of the biggest players.","original_language":"eng","persons":["Ragnar Mogk"],"tags":["bob2022","113","2022","Talk","BOB","BOBKonferenz"],"view_count":50,"promoted":false,"date":"2022-03-11T17:10:00.000+01:00","release_date":"2022-09-05T00:00:00.000+02:00","updated_at":"2026-02-22T20:45:10.349+01:00","length":2444,"duration":2444,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2022/113-24a3523a-b9e4-4352-9316-00ccd2a00416.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2022/113-24a3523a-b9e4-4352-9316-00ccd2a00416_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2022/113-24a3523a-b9e4-4352-9316-00ccd2a00416.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2022/113-24a3523a-b9e4-4352-9316-00ccd2a00416.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob2022-local-first-distributed-applications-with-rescala-mogk","url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_title":"BOB Konferenz 2022","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022","related":[],"recordings":[{"size":91,"length":2444,"mime_type":"video/webm","language":"eng","filename":"bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-09-05T15:32:05.461+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/webm-hd/bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/61526","event_url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":44,"length":2444,"mime_type":"video/webm","language":"eng","filename":"bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-09-05T15:17:05.042+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/webm-sd/bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/61523","event_url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":23,"length":2444,"mime_type":"audio/opus","language":"eng","filename":"bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2022-09-05T15:12:03.313+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/opus/bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_opus.opus","url":"https://api.media.ccc.de/public/recordings/61521","event_url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":45,"length":2444,"mime_type":"video/mp4","language":"eng","filename":"bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-09-05T15:11:04.159+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/h264-sd/bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_sd.mp4","url":"https://api.media.ccc.de/public/recordings/61520","event_url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":37,"length":2444,"mime_type":"audio/mpeg","language":"eng","filename":"bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2022-09-05T15:08:15.993+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/mp3/bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/61518","event_url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":65,"length":2444,"mime_type":"video/mp4","language":"eng","filename":"bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-09-05T15:07:54.794+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/h264-hd/bob2022-113-eng-Local-first_Distributed_Applications_with_REScala_hd.mp4","url":"https://api.media.ccc.de/public/recordings/61516","event_url":"https://api.media.ccc.de/public/events/24a3523a-b9e4-4352-9316-00ccd2a00416","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"}]}