This is a roadmap for the Bedrock project as a whole.
Documentation
Specification (revision 3)
The third revision of the Bedrock specification is partially complete. This revision will be shorter and more readable than the previous revisions. It will also include specifications for the tone and waveform devices, which were omitted in previous revisions.
Implementation handbook
The implementation handbook will be a guide to implementing a Bedrock system from the specification, with guidance on best practices over a wide range of different hardwares ad constraints.
Bitmap font format
A specification needs to be written for a bitmap font format for Bedrock. The format has mostly been developed, and is designed to be a compact and efficient bitmap font format for fonts that cover chunks of the Unicode basic multilingual plane.
Implementations
bedrock-pc
This emulator will need to be rewritten to ensure it matches the third revision of the specification, including implementing the new tone and waveform devices and properly implementing the stream, clipboard, and registry devices. This emulator is supposed to be the ‘flagship’ emulator that acts as a good rolemodel for others to come.
In addition, it would be useful to implement a more robust core as an option, that will run a lot slower but will catch any undefined behaviour and throw a warning. Finally, I want to add some useful features like taking screenshots and GIF screen recordings, and setting constraints on things like processor speed and available devices in order to simulate less capable devices.
bedrock-js
This emulator also needs to be rewritten from scratch, but to be more readable and easy to work with. It was originally written to use the oldest JavaScript constructs it could, but it would be better and more useful to lean on modern constructs to be more concise and to allow more opportunities for automatic optimisation.
I also want to use the ‘shadow DOM’ feature to encapsulate the emulator component so that the CSS doesn’t get messed up when embedded into someone else’s webpage. It should be more or less a drag and drop affair to get a Bedrock program embedded into a webpage, by adding a script tag and a <bedrock> tag into a webpage.
bedrock-nds
This emulator needs to be updated to implement the new tone and waveform devices specified by specification (revision 3), and a decent clipboard and registry device implemented using the file system. The functionality for multitasking has been implemented, this just needs to be stitched together with the fork port of the system device.
Tools
Bedrock decompiler
It would be useful for the future to design and implement a halfway decent Bedrock program decompiler.
GrID
The Graphical Interactive Debugger will be an integrated development environment for Bedrock programs, including facilities for authoring, exporting, debugging, and decompiling Bedrock programs. Very big, very cool, very a lot of work.
Bedrock Public Library
An online repository of Bedrock programs written and submitted by the community, something like the Lexaloffle BBS for PICO-8.
Proposals
macOS emulator
Ideally this will be done using the bedrock-pc codebase. The winit library used by bedrock-pc supports macOS.
I would have to somehow obtain Apple hardware to build on. This will not be a priority for a long time.
Android emulator
Ideally this will be done using the bedrock-pc codebase. The winit library used by bedrock-pc supports Android.
This will be straightforward enough to build and test, the effort will be in learning how to connect everything together.
iOS emulator
Ideally this will be done using the bedrock-pc codebase. The winit library used by bedrock-pc supports iOS.
I would have to somehow obtain Apple hardware to build on and an iPhone to test on. This will not be a priority for a long time.