mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-18 21:27:56 +00:00
Road map for 2020
This commit is contained in:
parent
7b964fa700
commit
a2b303e95a
24
doc/news.txt
24
doc/news.txt
@ -3,6 +3,30 @@
|
||||
Genode News
|
||||
===========
|
||||
|
||||
Road Map for 2020 | 2020-01-20
|
||||
##############################
|
||||
|
||||
| In 2019, we will be concerned about dwarfing the barrier of entry into
|
||||
| the Genode world.
|
||||
|
||||
Following the last year's leitmotif of "bridging worlds", we turn our
|
||||
attention to the removal of the hurdles faced by aspiring developers and
|
||||
users. During the annual road-map
|
||||
[https://lists.genode.org/pipermail/users/2019-December/006987.html - discussion]
|
||||
on our mailing list, we identified four tangible approaches towards that
|
||||
goal. First, making Sculpt OS more user friendly. Second, reinforcing trust in
|
||||
Genode by fostering the framework's high quality. Third, making the tooling
|
||||
around Genode a joy to use. And finally, the illustration of Genode's
|
||||
versatility in the form practical use cases.
|
||||
|
||||
Besides this overall theme, we plan to continue our commitment to the
|
||||
NXP i.MX SoC family, revisit Genode's low-latency audio support, and
|
||||
extend the cultivation of Ada/SPARK within (and on top of) Genode.
|
||||
|
||||
More background information about the new road map and a rough schedule are
|
||||
presented at our official [https:/about/road-map - road-map page].
|
||||
|
||||
|
||||
Genode OS Framework release 19.11 | 2019-11-28
|
||||
##############################################
|
||||
|
||||
|
278
doc/road_map.txt
278
doc/road_map.txt
@ -14,122 +14,121 @@ The road map is not fixed. If there is commercial interest of pushing the
|
||||
Genode technology to a certain direction, we are willing to revisit our plans.
|
||||
|
||||
|
||||
Review of 2018
|
||||
Review of 2019
|
||||
##############
|
||||
|
||||
Sculpt is our take on creating a Genode-based general-purpose operating
|
||||
system. When we declared 2018 as Genode's Year of Sculpt one year ago, our
|
||||
vision of how Sculpt OS would shape up was still vague. We were convinced that
|
||||
we had - functionality-wise - all building blocks of a general-purpose OS in
|
||||
place. But it was rather unclear how to best put them together to attain a
|
||||
practical system. The unconquered design space seemed vast, which was both
|
||||
exciting but also - at times - a bit paralyzing.
|
||||
For the road map 2019, we picked "bridging worlds" as our guiding theme:
|
||||
(1) Lowering the friction when combining existing software with Genode,
|
||||
(2) Fostering interoperability with widely used protocols and APIs, and
|
||||
(3) Making Genode easier to approach and generally more practical.
|
||||
|
||||
The Year of Sculpt was more than anything a design-space exploration, not
|
||||
an up-front planned activity. The process was driven by intensive
|
||||
brainstorming, experimentation, and the continuous practical evaluation
|
||||
through the day-to-day use of the system by its developers. For us, this ride
|
||||
was certainly the most rewarding period in Genode's history so far. Now, when
|
||||
looking at the result, we are proud about what we have achieved together.
|
||||
Whenever having the chance to showing off Sculpt running on our laptops,
|
||||
the system doesn't fail to impress.
|
||||
With respect to (1), we identified Genode's custom tooling (build
|
||||
system, run scripts, ports mechanism, depot tools) as a point of
|
||||
friction. They are arguably powerful and flexible but require a lot of
|
||||
up-front learning. This is certainly a burden unacceptable for a casual
|
||||
developer without a black belt in Make and Expect/Tcl. The new
|
||||
[https://genode.org/documentation/release-notes/19.11#New_tooling_for_bridging_existing_build_systems_with_Genode - Goa]
|
||||
tool rearranges the existing tools in a way that puts the concerns of casual
|
||||
developers into focus, allowing for the use of commodity build systems,
|
||||
eliminating Tcl syntax from the equation, running sub-second test cycles, and
|
||||
streamlining the packaging of software.
|
||||
|
||||
Unsurprisingly, many topics of the past year had a direct connection to
|
||||
Sculpt, e.g., the NIC router, the huge device-driver efforts, the GUI-stack
|
||||
improvements, our custom microcode update mechanism, the software packaging
|
||||
and deployment, and the work on the file-system and networking stacks.
|
||||
On account of (2), we
|
||||
[https://genode.org/documentation/release-notes/19.05#Broadened_CPU_architecture_support_and_updated_tool_chain - switched to C++17]
|
||||
by default, fostered the use of
|
||||
[https://genodians.org/ssumpf/2019-02-27-java-19-02 - Java],
|
||||
updated Qt5, and put
|
||||
[https://genode.org/documentation/release-notes/19.11#C_runtime_with_improved_POSIX_compatibility - POSIX]
|
||||
compatibility into the spotlight. We were eventually able to dissolve the need
|
||||
for our custom Unix runtime (Noux) because all features of Noux are covered by
|
||||
our regular libc now.
|
||||
|
||||
The bottom line of the Year of Sculpt is that Sculpt OS has become a
|
||||
surprisingly versatile and robust system. It can be deployed in a few seconds
|
||||
by booting from USB, runs as day-to-day OS on almost all of our laptops, its
|
||||
mechanisms for installing and updating software from packages have become a
|
||||
second nature, and it continues to inspire us to explore new application
|
||||
areas. Even outside of Genode Labs, there is a small and enthusiastic user
|
||||
base.
|
||||
Our biggest step towards (3) is the [https://genodians.org] website we
|
||||
started in winter 2019, which gives individual members of our community
|
||||
an easy way to present thoughts, projects, and experiences.
|
||||
Complementing Genode's formal documentation, it also conserves practical
|
||||
tips and tricks that were previously not covered in written form.
|
||||
|
||||
Besides Sculpt, we set forth a number of other goals one year ago.
|
||||
When speaking of "bridging worlds", we should not forget to mention the
|
||||
tremendous effort to bring Sculpt-OS-like workloads to the 64-bit ARM world.
|
||||
Thanks to the added support for
|
||||
[https://genode.org/documentation/release-notes/19.08#64-bit_ARM_and_NXP_i.MX8 - multi-core AARCH64],
|
||||
hardware-based
|
||||
[https://genode.org/documentation/release-notes/19.11#Virtualization_of_64-bit_ARM_platforms - virtualization],
|
||||
and network/USB/graphics drivers for the i.MX8 SoC, the flexibility of Sculpt
|
||||
OS will eventually become available on PC hardware and ARM-based devices
|
||||
alike.
|
||||
|
||||
:The transition from NOVA to our custom kernel and seL4: is ongoing but
|
||||
the topic received less attention than originally planned. This has
|
||||
two reasons. First, Alexander Boettcher's excellent maintenance and gradual
|
||||
improvement of NOVA keeps us hooked. Over the past year, there has been not
|
||||
much incentive of actual Sculpt users to move away from NOVA. Second, there
|
||||
is renewed interest in NOVA beyond our use of the kernel. Most specifically,
|
||||
we started joining forces with
|
||||
[https://cyberus-technology.de - Cyberus Technology] to improve NOVA
|
||||
together. That's fantastic!
|
||||
|
||||
This development notwithstanding, we still follow our ambition to bring the
|
||||
support for the other kernels like seL4 on par with NOVA to give Genode
|
||||
users the ultimate choice.
|
||||
Speaking of seL4, throughout the year, we have continuously adapted Genode
|
||||
to the kernel's upstream development and enjoy the informal collaboration
|
||||
with seL4 developer community. That said, the seL4 version of Genode still
|
||||
remains a side activity with no commercial backing.
|
||||
|
||||
:NXP i.MX: support has become much better, particularly with respect to
|
||||
network support and performance. Our ongoing commitment to the i.MX
|
||||
platform is also fueled by privacy-advocating projects like the Librem
|
||||
phone that are based on the same SoC.
|
||||
|
||||
:Software quality and resilience: ultimately became the title story of the
|
||||
[https://genode.org/documentation/release-notes/18.11#Raising_the_bar_of_quality_assurance - release 18.11].
|
||||
We greatly intensified the amount and quality of testing, explored static
|
||||
code analysis, and vastly scaled up the complexity of workloads carried
|
||||
by Genode.
|
||||
|
||||
:System monitoring, tracing, profiling: remains a somewhat underdeveloped area
|
||||
of Genode. As a step in the right direction, we introduced a simple
|
||||
trace-logging tool. Also, Sculpt's introspection features like the ability
|
||||
to inspect the runtime's state live on the machine make Genode's behavior
|
||||
easier to capture and to understand. But that said, the use of these
|
||||
features remains a black art mastered only by a few.
|
||||
|
||||
:Java: has found its way into Genode via our port of OpenJDK. Details such as
|
||||
the enabling of the JIT engine on ARM took much more effort than anticipated.
|
||||
We are happy to report that Tomcat works fine. But at the current state, it
|
||||
is still too early to advertise Java as a stable feature.
|
||||
Over the course of 2019, we admittedly skipped a few topics originally
|
||||
mentioned on our road map. In particular, the user-visible side of
|
||||
Sculpt OS received less attention than originally envisioned. We also
|
||||
deferred several ideas we had in mind about reworking our GUI stack.
|
||||
Instead, we expanded our work in the areas of storage (block-level APIs,
|
||||
test infrastructure,
|
||||
[https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - block encryption])
|
||||
and
|
||||
[https://genode.org/documentation/release-notes/19.08#Flexible_keyboard_layouts - input processing].
|
||||
This shift of focus is mostly attributed to the priorities of Genode Labs'
|
||||
customers who fund our work.
|
||||
|
||||
|
||||
2019 - Bridging Worlds
|
||||
######################
|
||||
2020 - Dwarfing the barrier of entry
|
||||
####################################
|
||||
|
||||
We dedicated the year 2018 to prove that Genode scales to general-purpose
|
||||
computing. [https://genode.org/download/sculpt - Sculpt OS] leaves no doubt
|
||||
about that. The logical next step is to make Sculpt OS relevant and appealing
|
||||
for a broader community.
|
||||
During our public road-map
|
||||
[https://lists.genode.org/pipermail/users/2018-December/006517.html - discussion]
|
||||
on our mailing list, we identified three ways towards that goal:
|
||||
Genode as a technology is there. For more than one decade, we walked unfathomed
|
||||
territory, fought with countless deep rabbit holes, took risky decisions,
|
||||
tracked back, explored design spaces, developed taste and distaste, pruned
|
||||
technical debt, and eventually found formulas of success. Today, there are no
|
||||
(fundamental) unsolved questions. All the puzzle pieces are in place. There
|
||||
could be no better proof than our daily use of Sculpt OS. The time is right
|
||||
to make Genode palatable for a wider circle. We identified four actionable
|
||||
topics to achieve that.
|
||||
|
||||
# In order to capture the interest of new Genode users, we have to
|
||||
put *emphasis on the practical use* of Genode, not on its technical prowess.
|
||||
With practical use, we refer to both desktop computing and headless
|
||||
scenarios like network appliances and servers. Over the course of 2019,
|
||||
we plan to establish (variations of) Sculpt as an attractive foundation for
|
||||
those application areas, and advance Genode's protocol stacks (storage and
|
||||
encryption come in mind) and hardware support (e.g., ARM 64-bit) accordingly.
|
||||
:User friendliness of Sculpt OS:
|
||||
|
||||
This will go hand in hand with making Genode easier to discover and to use,
|
||||
describing use cases at a digestible level of detail, and fostering the
|
||||
sense of one community that includes both users and developers.
|
||||
Until now, Sculpt OS is not exactly friendly towards users who are
|
||||
unfamiliar with the Unix command-line tools. Since Sculpt is not Unix
|
||||
based, this is a bit paradoxical. 2020 will give Sculpt OS a friendlier
|
||||
and discoverable user experience. In this context, we will inevitably
|
||||
put our attention to Genode's GUI stack.
|
||||
|
||||
# Since an operating system is only valuable with applications, we have
|
||||
to make the *porting of existing software* and the use of popular
|
||||
*programming languages* a frictionless experience. Besides supporting the
|
||||
reuse of existing software, we should also cultivate the "Genode way" as
|
||||
an option for designing native applications. Such applications can
|
||||
leverage the unique capabilities of the framework, in particular the
|
||||
sandboxing of code at a very fine granularity and the low footprint of raw
|
||||
Genode components.
|
||||
:Perception of high quality:
|
||||
|
||||
# Because an operating system does not exist in isolation, we must foster
|
||||
Genode's *interoperability* with other systems and applications by speaking
|
||||
widely used protocols and supporting universally expected
|
||||
software-integration features.
|
||||
Compared to commodity operating systems who stood the test of time,
|
||||
Genode is a young and largely unproven technology. It understandably calls
|
||||
for skepticism. All the more we must leave no doubts about our high
|
||||
quality standards. There must be no room for uncertainty. Hence, during
|
||||
2020, we will intensify the consolidation and optimization of the framework
|
||||
and its API, and talk about it.
|
||||
|
||||
:Enjoyable tooling:
|
||||
|
||||
Genode's success at large will depend on developers. As of today, software
|
||||
development for Genode requires a huge up-front learning curve. This is
|
||||
fine for people who are already convinced of Genode. But it unacceptable
|
||||
for casual developers who want to get their toes wet. We should aim for
|
||||
tooling that allows new developers to keep up their flow and beloved
|
||||
tools. The recently introduced [https://genodians.org/nfeske/2019-11-25-goa - Goa]
|
||||
tooling is our first take in this respect. It is certainly too early to call
|
||||
Goa a success. In order to find out if we are on the right track, we want to
|
||||
expose Goa to as many problems as possible, primarily by the means of
|
||||
porting software. Also, things like IDE usage or adapters for a variety of
|
||||
build systems will certainly move into focus in 2020.
|
||||
|
||||
:Convincing use cases:
|
||||
|
||||
Use cases can give exemplary proof of the fitness of Genode. We already
|
||||
took a few baby steps to extend the range of documented use cases beyond
|
||||
Sculpt OS last year. The boot2java scenenario comes in mind. 2020 will
|
||||
hopefully see several more illustrations of Genode's versatility.
|
||||
|
||||
|
||||
Milestones for 2019
|
||||
Apart from this overall theme, we plan to continue our commitment to the
|
||||
NXP i.MX SoC family, revisit Genode's low-latency audio support, and
|
||||
extend the cultivation of Ada/SPARK within (and on top of) Genode.
|
||||
|
||||
|
||||
Milestones for 2020
|
||||
###################
|
||||
|
||||
In the following, we present a rough schedule of the planned work. As usual,
|
||||
@ -137,57 +136,64 @@ it is not set in stone. If you are interested in a particular line of work,
|
||||
please get in touch.
|
||||
|
||||
|
||||
February - Release 19.02
|
||||
February - Release 20.02
|
||||
========================
|
||||
|
||||
* OpenJDK with JIT on ARM and x86
|
||||
* Sculpt with support for online package discovery
|
||||
* Showcase of a Genode-based web appliance
|
||||
* Showcase of a multi-port network appliance
|
||||
* Consolidation: removal of the Noux runtime
|
||||
* Library version of the init component
|
||||
* Updated audio drivers
|
||||
* Sculpt
|
||||
* 64-bit ARM (i.MX8)
|
||||
* Revised administrative user interface
|
||||
* System image without Unix tools
|
||||
|
||||
|
||||
May - Release 19.05
|
||||
May - Release 20.05
|
||||
===================
|
||||
|
||||
* Updated "Genode Foundations" book
|
||||
* Tool-chain update and SDK (C++-17, enabling O3 by default, considering GDC)
|
||||
* Headless Sculpt
|
||||
* Pluggable network drivers
|
||||
* Native support for Let's Encrypt certificates
|
||||
* Revisited GUI-related framework interfaces
|
||||
* Consolidation
|
||||
* Block-level components (update to Genode's modern block APIs)
|
||||
* ARM device drivers (introducing the notion of a platform driver)
|
||||
* Improved STL support (e.g., threading and mutexes)
|
||||
* Continuous POSIX-compliance testing
|
||||
* Systematic network-stack stress and performance tests
|
||||
* Desktop: panel and virtual desktops
|
||||
* Use case: Genode-based network router
|
||||
* Goa: broadened support for 3rd-party build systems
|
||||
* Native tool chain, including Git
|
||||
* Sculpt
|
||||
* Improved interactive system composition
|
||||
* Passphrase handling
|
||||
* Clipboard support
|
||||
* Kernel-agnostic virtual-machine monitors
|
||||
* ARM 64-bit
|
||||
* Interactive device management
|
||||
* Keyboard-controlled administration
|
||||
* Support for BSPs maintained outside of Genode's mainline repository
|
||||
|
||||
|
||||
August - Release 19.08
|
||||
August - Release 20.08
|
||||
======================
|
||||
|
||||
* Interactive tracing tool
|
||||
* Virtualization support for the base-hw kernel on x86
|
||||
* Library version of the init component
|
||||
* Revisited GUI-related framework interfaces
|
||||
* Extended tooling for performance monitoring
|
||||
* Goa: Qt development workflow
|
||||
* Desktop
|
||||
* Native mail client
|
||||
* Native web browser
|
||||
* Sculpt
|
||||
* Fine-grained USB-device policies
|
||||
* Interactive depot manager (ability to add/remove software providers)
|
||||
* Configuration of CPU affinities and scheduling priorities
|
||||
* Audio
|
||||
* Showcase of a Sculpt-based network router
|
||||
* VM-based desktop applications (enhanced VM integration features)
|
||||
* Updated Qt5
|
||||
* Consolidation of the Noux runtime (performance)
|
||||
* Configurable CPU resources
|
||||
* On-screen documentation
|
||||
* Block encryption via our
|
||||
[https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - consistent block encrypter]
|
||||
implemented in Ada/SPARK
|
||||
* USB audio
|
||||
* Initial version of a kernel implemented in Ada/SPARK
|
||||
|
||||
|
||||
November - Release 19.11
|
||||
November - Release 20.11
|
||||
========================
|
||||
|
||||
* Building Genode packages directly on Sculpt
|
||||
* VNC server support
|
||||
* Sculpt
|
||||
* On-target debugging of components
|
||||
* Shutdown protocol
|
||||
* Block-level encrypted storage
|
||||
* Drag-and-drop protocol
|
||||
* Consolidation of capability-space management across kernels
|
||||
* CPU-load balancing
|
||||
* Hardware-accelerated graphics on i.MX8 (experimental)
|
||||
* Reworked audio stack (interfaces, mixing)
|
||||
* Sculpt: component lifetime management, shutdown protocol
|
||||
* VFS plugins for lwext4 and FUSE-based file systems
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user