Skip to content
This repository has been archived by the owner on Nov 18, 2023. It is now read-only.

Hihaheho/Desk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Desk

๐Ÿ”ฎ The application platform for your cyberpunk desk

Demo MIT/Apache 2.0 GitHub Sponsors GitHub Repo stars

Release soon!

Status: All releases are behind the previous schedule for several reasons, so I updated it below.

Reasons:

  • I'm building query-flow for deskc and dworkspace.
  • I plan to discard the current mirgen and design a new MIR intervening between Desk-lang and low-level IR to generate a GC-less binary, which is fast as Rust in theory (in my mind).
  • I've switched to Ubuntu Desktop from M1 Macbook Pro mainly for financial reasons. As a subsequence of it, I can utilize the mold linker.
  • I've returned to Neovim after several years of a temporary stay in the VSCode.
  • With the lowest priority, I have about three my own projects now to improve IDE experience with the Neovim ecosystem.
  • I've built a Keyball39, a split keyboard placing a injection-molded trackball slot in the really ergonomic position.

Pre-release (several months later)

Pre-release includes:

  • incremental Desk-lang compiler
  • DeskVM with an official scheduler
  • a file system for Desk-lang
  • Desk-lang visual editor
  • A web demo like Rust Playground for Desk-lang

The first release (within the year)

The first release includes:

  • MVP of Desk Craft, a game engine
  • a platformer game demo
  • a space to publish created games
  • real-time collaboration on Web
  • paid plans for Desk X (official hosting)

See the draft of the first release

Goals and Philosophy

๐ŸŽฏ Blur the line between living and coding ๐ŸŽฏ Make every software programmable

  • ๐ŸŽฎ Intuitive like games
  • ๐Ÿฅผ Pragmatic like professional tools
  • ๐Ÿ—บ๏ธ๏ธ Versatile like spreadsheets
  • ๐Ÿ’— Accessible to everyone
  • ๐Ÿ›น Minimalist design

Why Desk?

Desk apps are inherently:

  • ๐ŸŽผ code-oriented like data-oriented
  • ๐Ÿ”’ statically-typed (data and UI)
  • ๐Ÿค– programmable (extensible by code)
  • ๐Ÿงฒ interoperable with other Desk apps
  • ๐Ÿ“ฑ running on everywhere (web, desktop, mobile)

How does Desk work?

Desk is consist of:

  • Desk Programming Language and Desk Compiler (deskc)
  • Desk Workspace System (dworkspace)
  • DeskVM (deskvm)
  • Desk-plugins (dplugins)

Desk Programming Language (Desk-lang)

Desk-lang is a programming language that has:

  • minimalistic syntax and semantics
  • type system with inference
  • algebraic effects
  • content-addressable by type and UUID
  • incremental compilation

Most of the data and programs on Desk apps are finally evaluated as a snippet of Desk-lang.

Desk Compiler (deskc)

Desk compiler is an incremental compiler for Desk-lang.

Crates

Desk-workspace (dworkspace)

Desk-workspace is a platform-agnostic environment for editing Desk-lang.

Desk-workspace provides these features:

  • file system for Desk-lang
  • permission management system
  • realtime collaboration support

Crates

DeskVM (deskvm)

DeskVM is a runtime for Desk-lang influenced by Erlang VM.

Features

  • platform-agnostic
  • capable of running many programs as a d-process
  • type-driven message passing and pub/sub
  • interpreter-agnostic: DeskVM can run anything as a d-process
  • preemptive scheduling
  • custom scheduler support

Crates

Desk-plugins (dplugins)

There are many Desk-plugins. Each Desk-plugin implements a single feature as a Bevy Plugin.

  • ๐Ÿšง Desk Craft for game development
  • ๐Ÿšง Desk Brain for productivity
  • ๐Ÿšง Desk Verse for communication
  • ๐Ÿšง Desk Robot for automation
  • ๐Ÿšง Desk Board for BI
  • ๐Ÿšง Desk Calendar for scheduling
  • ๐Ÿšง Desk Pages for hosting

๐Ÿšง not yet implemented

Is it any good?

Yes.

Resources

Join our community

๐Ÿ‘‰ Q&A Have a question?

๐Ÿ‘‰ GitHub Discussions

๐Ÿ‘‰ GitHub Repo stars

๐Ÿ‘‰ Twitter Follow

๐Ÿ‘‰ Discord