Re: Roadmap 2019

2019-01-15 Thread Norman Feske
Hello everyone,

thanks to all participants in our vivid road-map discussion!

I have now condensed the discussion into the official road map:

  https://genode.org/about/road-map

Even though I left out many details, I hope that the result still
captures our common ambitions well.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-14 Thread Norman Feske
Hi John,

>> Right now, the implementation of such
>> applications is quite unusual (if not to say awkward). But maybe the
>> "librarization" of init as requested by Ben would make this approach
>> feasible for a broader use? Now that I'm writing this paragraph, I feel
>> that this topic deserves some coverage at genodians.org ;-)
> 
> Yes, please elaborate on the current situation as well as your thoughts
> on improving it.
> 
> Am I correct to infer that this would also make it easier to add
> different front-ends to the same "application"?

Yes. The menu-view approach is a pretty radical take of the
model-view-controller pattern. There is an almost "galvanic" separation
of the view from the application logic because the view lives in a
separate component.

Since the relationship between the dialog elements and pixels is local
to the view, the view implementation can be easily swapped out.

If you like to experiment with the concept, please have a look at the
gems/run/menu_view.run script.

> For instance, the VirtualBox Guest Additions have a Shared Clipboard
> feature.  I assumed that this might have to be a Qt-only feature, but if
> there is a system-wide clipboard, that would be much better.

This is actually already supported by our version of VirtualBox, but
Sculpt does not make use of this feature yet.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-10 Thread John J. Karcher

On 1/3/19 7:54 AM, Norman Feske wrote:

Hi John,


* What are your ambitions for 2018?


I have goals in three basic categories:

1. Desktop.  This has two parts.  The easy one is to switch to Genode as
my VirtualBox host.  But I also would like to have the VirtualBox Guest
Additions for using Genode within a VM.

Would this qualify for the roadmap?


the topic fits well with the overall theme that is emerging. I would
probably speak more generally about fostering the integration of Genode
with existing protocols and infrastructure. E.g., Emery's recent work
with 9p [1] would also fall in this category. Also, the use of Xpra
would be fitting [2].

[1] https://github.com/ehmry/ninep
[2] https://github.com/zorodc/genode-world/commits/xpra


Oh dear, those are interesting also.  It's getting hard to keep up with 
it all!  ;^)



That said, I would not go as far as making definite promises.

Speaking of the Guest Additions for Genode, I can imagine a nice picture
where Sculpt could offer a VBox shared folder as storage option in
addition to the detected AHCI/NVMe devices and the RAM fs. This way, the
user could host the Sculpt storage in a plain directory on a non-Genode
host system and deploy Sculpt within VirtualBox by accessing those
files. The integration would be quite seamless.


Yes, that would be very convenient.

I haven't thought this all the way through, but do you have any thoughts 
on handling mounted directories along side partitions, e.g., in 
Leitzentrale?  I assume there would have to be some changes, but how 
major would they be?


--
 John J. Karcher
 devu...@alternateapproach.com

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-10 Thread John J. Karcher

On 1/3/19 6:52 AM, Norman Feske wrote:
>
> Hi Cedric,

[snip]


Third, I'm quite eager to further explore the potential of
multi-component GUI applications where the (complex and fragile) widget
rendering is sandboxed and completely isolated from the application
logic. The underlying design principle is currently employed be Genode's
custom window manager and the menu-view-based applications (i.e., the
Leitzentrale of Sculpt). Right now, the implementation of such
applications is quite unusual (if not to say awkward). But maybe the
"librarization" of init as requested by Ben would make this approach
feasible for a broader use? Now that I'm writing this paragraph, I feel
that this topic deserves some coverage at genodians.org ;-)


Yes, please elaborate on the current situation as well as your thoughts 
on improving it.


Am I correct to infer that this would also make it easier to add 
different front-ends to the same "application"?



Maybe we even find that a combination of these approaches is beneficial?

Another area of experimentation is the secure exchange of date between
applications (copy-and-paste, drag-and-drop).


Please share your thoughts on this also.

For instance, the VirtualBox Guest Additions have a Shared Clipboard 
feature.  I assumed that this might have to be a Qt-only feature, but if 
there is a system-wide clipboard, that would be much better.



I'm very curious towards your planned line of work. The prospect of
bringing both projects Haiku and Genode together is very cool!


I'll be closely following this also!

--
 John J. Karcher
 devu...@alternateapproach.com

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-08 Thread Sebastian Sumpf
Hey Norman,

On 1/3/19 2:07 PM, Norman Feske wrote:
> Hi Sebastian,
> 
> nice to see you joining the discussion!
> 
> I agree that the audio topic certainly deserves more attention. But
> before re-approaching the topic again, I'd like to stress the need for
> proper measurement tools that help us to interpret the observed behavior
> correctly instead relying on assumptions as an aid.
> 
> I am thinking of a graphical front end for Genode's tracing feature that
> 
> 1. can be readily deployed in Sculpt,
> 2. lists all components and their threads,
> 3. allows the user to select one or multiple threads from the list,
> 4. records a trace (by pressing a button), and
> 5. shows the timeline visually.
> 
> I'd love to have such an application at hand, also for many other
> performance-related developments. And I think that implementing such a
> tool using Qt seems quite doable.
> 
> Sebastian, would you support prioritizing the creation of such a tool
> over the actual audio work?

Of course, I think the need for performance analyzing tools, may it be
throughput or latency measurements, becomes more important with each
passing year. Especially when looking at the growing complexity of the
overall Sculpt system.

So, I am with you on this one,

Sebasitan

> 
> 
> On 28.12.18 16:02, Sebastian Sumpf wrote:
>> Hi folks,
>>
>> here are my three cents: I am very proud of what our team achieved last
>> year. Sculpt is up and running. I did setup the long running version and
>> it has not crashed so far and even if it did, I would see it as a chance
>> to mature Genode. We are humans after all and we do make mistakes, but
>> thanks to the various kernels, and thus different runtime behavior, we
>> are able to trigger bugs very fast - enabling us to fix them quickly.
>> There is more robustness now than I ever imagined.
>>
>> Otherwise, I see two concurrent paths: 1. POSIX compliance and 2. The
>> Genode way. For porting software (1) is very convenient. But when
>> writing new applications I would like to see more of (2). Most likely we
>> will have to traverse both paths.
>>
>> Besides doing Java and getting it ready to work properly, I would like
>> to rework the whole audio stack. That would be the third iteration, but
>> sometimes things emerge very slowly. So, if anyone here has experiences
>> with low latency audio, a good book or homepage to read, or just knows
>> how to design this stuff ... let me know.
>>
>> Even tough Norman's talk got rejected from the FOSDEM organizers, we do
>> enjoy  a very successful run at the Microkernel devroom [1], we will
>> organize it this year,  where we actually had to reject more talks than
>> I am comfortable with. But there are only eight hours ...
>>
>> I think by now we have a very small but fine community,
>>
>> Sebastian
>>
>> [1]:
>> https://fosdem.org/2019/schedule/track/microkernels_and_component_based_os
>> [2]: https://en.wikipedia.org/wiki/Genode
>>
>> ___
>> Genode users mailing list
>> users@lists.genode.org
>> https://lists.genode.org/listinfo/users
>>
> 
> 


___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-04 Thread Martin Stein
Hi guys,

It's very interesting and motivating to read all your ideas regarding
the Roadmap 2019 and see the enthusiasm spread throughout the community!
So, here's what I came up with:

Implementation

* I'm currently experimenting with SPARK on Genode and really like to go
deeper into if, and if yes, how and where SPARK could be beneficial in
Genodes main repositories.


Testing

* Doing nightly tests with Sculpt
* More starvation/resource-leak/bad-client tests for critical servers


Documentation

* Finding native speakers to translate the Wikipedia article to further
languages

* IMO it's an issue that not every component brings a _comprehensive_
README with information like the whole user interface description, a
complete list of services needed and provided and real-live examples.

* Furthermore, I would suggest the integration of a mechanism in the
Sculpt component graph that lets you access a README for a specific
component with merely one click. I know there's the foundations book but
I have the feeling that this inline help would be much more convenient
in a lot of cases.

* It would be nice to have some info in the READMEs more systematic,
like config attributes (XML Schemes) or services required/provided. This
information could be used by development tools to support programmers as
well as in the integration tools like the component graph to guide users.

* To address a point that Tomasz brought in regarding working/tested
documentation: How about also giving information about that in a
systematic way in READMEs? This way, in systems like Sculpt we could,
for instance, mark software according to its development state when
listed in the package manager or in the "Add"-menu of the component
graph. It would also enable filtering software lists and thereby ease,
for instance, browsing software cross-platform.

* I really like the idea of genodians.org and think we should definitely
keep trying to connect more an more Genode-related media maintained by
users to give them a kickoff in tooling and publicity.


Development

* I strongly share Normans feelings about the importance of the SDK and
a way to browse/install software conveniently in Sculpt.


Cheers,
Martin

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-03 Thread Christian Helmuth
Hello,

thanks Norman for launching this enjoyable discussion (and keeping up
the tradition). Reading the postings helped much to get in proper
reflective mood to wrap up the past months and organize my ideas for
2019.

On Sun, Dec 23, 2018 at 08:46:48PM +0100, Norman Feske wrote:
> The Year of Sculpt

Looking back at the past year I'm very proud of our achievements. Not
only that our team at Genode Labs conducts its work on Sculpt every
day, the OS is also mature enough to be useful for enthusiasts. Also,
each step on the Sculpt timeline widened the horizon of what could be
achieved with this approach in the future.

As the previous posters, I organize my ideas for 2019 into the
suggested categories, because I'm confident they make up a perfect
frame for our planning.

> 1) Widening the audience of Sculpt OS

In this category I see two important aspects, which were mentioned in
the discussion already.

Documentation

  We should keep up the series of articles about Sculpt that we
  founded in 2018 and not only update the development progress but
  also document the Sculpt OS as a whole (starting from our talk
  slides). Ideally, the Sculpt documentation will evolve into an
  up-to-date book about this specific Genode OS accompanying the
  Foundations.

Applications

  As we can't implement all required applications natively using the
  Genode API by ourselves, the porting effort of existing applications
  must be reduced. The first take of the Genode SDK was released in
  November and we should intensify our efforts in this regard. I see
  the SDK primarily as environment for POSIX applications that
  integrate seamlessly into the system by means of the libc and the
  VFS. Additional SDK modules could be added on top of the base SDK,
  for example, a Genode Qt SDK, which integrates with the Qt
  Creator/qmake/cmake easily.

  Christian Prochaska also mentioned a tool-chain update with
  additional effort for better autotool support. Maybe we should merge
  the tool chain into the SDK? Also, we may consider musl as
  (Linux-compatible) C runtime for relevant platforms, namely
  x86-32/64, ARMv7/8, and RISC-V. The Linux compatibility of the libc
  may help to enable more applications which lack universal UNIX
  support or suffer from poor FreeBSD adaptation.

  Further, I'd like to support the proposition that the enablement of
  more language runtimes attracts a broader diversity of developers.

> 2) Fostering the community spirit around our project

I'll definitely have my part on genodians.org. Therefore, I plan to
document progress on the network-appliance projects mentioned below
and other stuff about Genode. Furthermore, I wonder if Genode could
become more visible on open source gatherings beyond FOSDEM or even
conferences/exhibitions and are all ears for suggestions how to
achieve this.

> 3) Marketing of Genode-based products

Even if "products" is a rather heavy term, I plan to push Genode-based
deployments to address tasks in our networking environment at Genode
Labs. I see the Sculpt runtime as a key to easily develop appliances
for a broad range of applications like Sebastian's build server,
secured NAS, IPv4 router/firewall, or even John Karcher's always-on
mail/file/audio-streaming server. This goal involves many improvements
and adaptions of components (e.g., NIC router) and Sculpt (e.g.,
support for head-less scenarios that even lack a framebuffer).

I'm looking forward to an exciting Year 2019!

Regards
-- 
Christian Helmuth
Genode Labs

https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · /ˈdʒiː.nəʊd/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-03 Thread Norman Feske
Hi Sebastian,

nice to see you joining the discussion!

I agree that the audio topic certainly deserves more attention. But
before re-approaching the topic again, I'd like to stress the need for
proper measurement tools that help us to interpret the observed behavior
correctly instead relying on assumptions as an aid.

I am thinking of a graphical front end for Genode's tracing feature that

1. can be readily deployed in Sculpt,
2. lists all components and their threads,
3. allows the user to select one or multiple threads from the list,
4. records a trace (by pressing a button), and
5. shows the timeline visually.

I'd love to have such an application at hand, also for many other
performance-related developments. And I think that implementing such a
tool using Qt seems quite doable.

Sebastian, would you support prioritizing the creation of such a tool
over the actual audio work?

Cheers
Norman


On 28.12.18 16:02, Sebastian Sumpf wrote:
> Hi folks,
> 
> here are my three cents: I am very proud of what our team achieved last
> year. Sculpt is up and running. I did setup the long running version and
> it has not crashed so far and even if it did, I would see it as a chance
> to mature Genode. We are humans after all and we do make mistakes, but
> thanks to the various kernels, and thus different runtime behavior, we
> are able to trigger bugs very fast - enabling us to fix them quickly.
> There is more robustness now than I ever imagined.
> 
> Otherwise, I see two concurrent paths: 1. POSIX compliance and 2. The
> Genode way. For porting software (1) is very convenient. But when
> writing new applications I would like to see more of (2). Most likely we
> will have to traverse both paths.
> 
> Besides doing Java and getting it ready to work properly, I would like
> to rework the whole audio stack. That would be the third iteration, but
> sometimes things emerge very slowly. So, if anyone here has experiences
> with low latency audio, a good book or homepage to read, or just knows
> how to design this stuff ... let me know.
> 
> Even tough Norman's talk got rejected from the FOSDEM organizers, we do
> enjoy  a very successful run at the Microkernel devroom [1], we will
> organize it this year,  where we actually had to reject more talks than
> I am comfortable with. But there are only eight hours ...
> 
> I think by now we have a very small but fine community,
> 
> Sebastian
> 
> [1]:
> https://fosdem.org/2019/schedule/track/microkernels_and_component_based_os
> [2]: https://en.wikipedia.org/wiki/Genode
> 
> ___
> Genode users mailing list
> users@lists.genode.org
> https://lists.genode.org/listinfo/users
> 


-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-03 Thread Norman Feske
Hi John,

>> * What are your ambitions for 2018?
> 
> I have goals in three basic categories:
> 
> 1. Desktop.  This has two parts.  The easy one is to switch to Genode as
> my VirtualBox host.  But I also would like to have the VirtualBox Guest
> Additions for using Genode within a VM.
> 
> Would this qualify for the roadmap?

the topic fits well with the overall theme that is emerging. I would
probably speak more generally about fostering the integration of Genode
with existing protocols and infrastructure. E.g., Emery's recent work
with 9p [1] would also fall in this category. Also, the use of Xpra
would be fitting [2].

[1] https://github.com/ehmry/ninep
[2] https://github.com/zorodc/genode-world/commits/xpra

That said, I would not go as far as making definite promises.

Speaking of the Guest Additions for Genode, I can imagine a nice picture
where Sculpt could offer a VBox shared folder as storage option in
addition to the detected AHCI/NVMe devices and the RAM fs. This way, the
user could host the Sculpt storage in a plain directory on a non-Genode
host system and deploy Sculpt within VirtualBox by accessing those
files. The integration would be quite seamless.

> If not, I am starting to work on it - it should make a great learning
> experience (and hopefully a useful blog series), because the various
> facets touch so many different parts of the system.  But I will be slow,
> so if others are interested, I will be happy to learn from them instead!
>  ;^)

Cool!

> 3. Tablet.  This is part of a longer-term goal, but I would love to have
> Genode running in some form on an open-hardware tablet if possible.  (I
> don't even care if it's useful at this stage.)
> 
> I know there are efforts toward building mobile front-ends under Qt, but
> I would be even more interested in working toward a native UI front-end.
>  I really feel that Genode would be a great fit for tablets.
> 
> I know tablet-related work will not make the roadmap for 2019, but would
> it be possible to agree on a semi-official tablet hardware target for
> the next year or two, for those of us who are interested in pursuing this?

From my point of view, the most sensible choice would be a device based
on the NXP i.MX SoC. This SoC is used by the Librem phone [3]. So there
may be potential of synergies. More importantly, i.MX comes with proper
official documentation and Genode already has a number of drivers for
several i.MX peripherals.

[3] https://puri.sm/products/librem-5/

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-03 Thread Norman Feske
Hi Cedric,

> Anyway here's the micro-blog as it is now:
> 
>   https://tts-genode.neocities.org/genode.html
> 
> Will migrate the entries in there to genodians.org when is ready -- looking 
> forward to it yes. More entries are queued up to help 
> "prime the pump" if need be.

I'm happy that you are on board with genodians.org. :-) Thanks for the
link to your blog, which is good read. Let me briefly comment on a few
points you raised there.

Regarding your question of native apps vs. ported apps, I share your
sentiment of preferring native apps, mostly because they tend to have a
smaller footprint and follow the design philosophy of the underlying
system. However, at the current stage, we haven't yet found the "Genode
way" of GUI applications. It is great that you support my proposed
experimentation phase. During this phase we can explore the pros and
cons of multiple approaches. I see three approaches in particular.

First, the reuse of the Haiku API is intriguing to me at the surface
level (I admittedly don't really know how it looks like under the hood).
I like the clean and consistent design language, the efficiency, and the
focus on ergonomics.

Second, the use of Qt bears the biggest potential regarding the reuse of
existing software. E.g., I'm thinking of the port of Libreoffice to
Haiku, which would certainly be unrealistic without Haiku's Qt support.
So in this line of thinking, Qt is certainly the quickest path to a
practical desktop environment for Genode, accommodating scenarios like
the office clerk described by Guido.

Third, I'm quite eager to further explore the potential of
multi-component GUI applications where the (complex and fragile) widget
rendering is sandboxed and completely isolated from the application
logic. The underlying design principle is currently employed be Genode's
custom window manager and the menu-view-based applications (i.e., the
Leitzentrale of Sculpt). Right now, the implementation of such
applications is quite unusual (if not to say awkward). But maybe the
"librarization" of init as requested by Ben would make this approach
feasible for a broader use? Now that I'm writing this paragraph, I feel
that this topic deserves some coverage at genodians.org ;-)

Maybe we even find that a combination of these approaches is beneficial?

Another area of experimentation is the secure exchange of date between
applications (copy-and-paste, drag-and-drop).

I'm very curious towards your planned line of work. The prospect of
bringing both projects Haiku and Genode together is very cool!

Regarding your remarks about acpica and usb-hid, please don't hesitate
to open issues at GitHub so we can discuss the problem (and solution) there.

> Considering the conflicting imperatives -- prioritizing security on the one 
> hand, and some quote-unquote "urgency" to enable 
> developers to  "show off" on the other hand... Maybe it would make sense to 
> prioritize implementing (a rough version of) the 
> feature, but keep it hidden behind a compile-time flag? There would be a 
> prominent comment near the if-def, "leave this 
> commented out in production!"
> Just a thought. I can use a digital camera to shoot the screen in the 
> meantime.

As interim solution, I'm using Intel AMT to take screenshots (one can
use AMT to connect to another machine via VNC). For obtaining pictures
of individual GUI features, I often start a scenario on base-linux (or
running Genode in Qemu) and take a screenshot under Linux.

Cheers
Norman


-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-02 Thread Christian Prochaska
Hi,

On 02.01.2019 11:22, Tomasz Gajewski wrote:
> Recently I've purchased RPI 3B+ - it is my first arm device and
> currently all aspects of making Genode work on it are on my radar.

I agree that better support for the Raspberry Pi would be useful,
considering how easy and affordable it is to get one of these devices
and to start experimenting with it. Maybe we could also provide an SD
card image with Sculpt and some showcase applications and games for
interested users to try out.

On a different note, there will probably be a tool chain update planned
for this year and this would also be a good opportunity to improve its
compatibility with GNU Autotools based configuration of ported software,
for example by conforming to the established target-triplet form
(x86_64-genode-gcc instead of genode-x86-gcc), by supporting the '-l'
linker flag or by knowing where to find the correct linker script by
default.

Christian



___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2019-01-02 Thread Bob Stewart

Hi Tomasz,

I'm working on implementing a base-hw kernel on a Cortex A53 platform 
(not Rpi) which is what the Rpi 3x is based on. So, that means a 
significant amount of work to convert from the existing Genode code 
supporting the armv7 architecture to support the armv8 architecture. I'm 
focused initially on only the aarch64 instruction set, but will later 
add support for aarch32. This is a retirement project for me so my 
progress is not driven by any great need and is slow. After about six 
months of casual working I'm at the stage of debugging a virtual memory 
translation table enhancements need to support 64-bit memory (a new 
Level-0 table in the page table code in lpae.h). The means all the 
assembly code changes required have been made (and about 12 other areas 
of change) and I clean compile a from a log run script.


For debugging at this level, you really only have two choices: Either 
delve into the ARM hardware debugging facilites (CoreSight) or insert 
small pieces of code to poke variable values or a trace number into a 
currently unused region of memory. Code like:


            using ull = unsigned long long;
            ull volatile * debug_ptr = (ull *)0x91000600;
            *debug_ptr = MAX_ENTRIES;
            debug_ptr += 0x01;
            *debug_ptr = BLOCK_SIZE_LOG2;
            debug_ptr += 0x01;

if your booting into uboot to start up, you can inspect the memory 
region through uboots' md command. Breakpoints can be implemented with 
the assembly code line:  asm volatile("hlt #01\n"); . Objdump gives you 
the assembly code listing if you need it.


I sincerely hope Genode does not implement a version of the Linux DT. It 
is an error prone approach developed many years ago in the embedded 
world. There are more elegant, syntax checkable, configuration 
description approaches available today.


Let me know if I can help with any compile/link issues you have, I 
probably came across most of them in my work to-date. I'm using a Linaro 
tool chain for aarch64. There is a separate one for aarch32 which I 
don't currently use.



Bob Stewart


On 1/2/19 5:22 AM, Tomasz Gajewski wrote:

Hi,

My main observation is that every aspect of modifying of and integrating
with Genode should be made as easy as possible. Due to the nature of
Genode there are many things that are different from commonly known
solutions and I think especially those parts should be made more easy to
handle. Below I enumerate those that I find important.


Norman Feske  writes:


Please don't hesitate to share your thoughts. You may consider the
following questions:

* What are your ambitions for 2018?

Recently I've purchased RPI 3B+ - it is my first arm device and
currently all aspects of making Genode work on it are on my radar.

I've seen comments from Alexander Weidinger about his attempts and
looked briefly at his work and he started from copying all rpi specific
code to rpi2 version. Given that until now there is about eight variants
of Raspberry Pi I felt that this shouldn't be the way to go. So I
started checking how Linux is handling different raspberry pi boards
(and other ARM variants) and found out about device tree and its
usage. So my first ambition is to integrate device tree usage into
Genode. I think that work could make much EASIER integration of devices
with Genode.

Unfortunately my attempts currently are a seqence of different
problems/surprises which I try to overcome one step after another and it
isn't going as smooth as I expected. Currenlty I'm forced to work with
assembly code after almost 25 years (and it was for 80286). I'll write
more about it in another thread along with questions that maybe someone
will be able to answer.


* Which areas of Genode would you like to see improved?
   How would you possibly contribute to these improvements?

Bare metal

In my current work with RPI (I'm attempting to make base-hw work) it
would be very useful to have some very early debugging facility -
probably serial output. Given that currently I'm not even able to
successfully execute code from crt0.s I'd like to see it (this output)
initialized there although maybe I want too much. It took me two days
(due to my lack of experience) to have any diagnostics from that code -
I can enable and disable leds attached to gpio pins :-). So early output
from initialization enabled in some standard way (build flag?).


Porting

Writing initialization files that define access to all resources and
routing rules is something completely Genode specific and requires good
understanding design principles behind capabilities and resource
providers, etc. Even though I think I understand concepts well I find it
hard to analyze all dependencies (at least it was hard for me in
Sculpt). I think that for "typical" ported software it can require only
some of "standard" resources and configuration could be made by clicking
options what given application is allowed to access. Something similar
to privileges on current phones.

Re: Roadmap 2019

2019-01-02 Thread Tomasz Gajewski

Hi,

My main observation is that every aspect of modifying of and integrating
with Genode should be made as easy as possible. Due to the nature of
Genode there are many things that are different from commonly known
solutions and I think especially those parts should be made more easy to
handle. Below I enumerate those that I find important.


Norman Feske  writes:

> Please don't hesitate to share your thoughts. You may consider the
> following questions:
>
> * What are your ambitions for 2018?

Recently I've purchased RPI 3B+ - it is my first arm device and
currently all aspects of making Genode work on it are on my radar.

I've seen comments from Alexander Weidinger about his attempts and
looked briefly at his work and he started from copying all rpi specific
code to rpi2 version. Given that until now there is about eight variants
of Raspberry Pi I felt that this shouldn't be the way to go. So I
started checking how Linux is handling different raspberry pi boards
(and other ARM variants) and found out about device tree and its
usage. So my first ambition is to integrate device tree usage into
Genode. I think that work could make much EASIER integration of devices
with Genode.

Unfortunately my attempts currently are a seqence of different
problems/surprises which I try to overcome one step after another and it
isn't going as smooth as I expected. Currenlty I'm forced to work with
assembly code after almost 25 years (and it was for 80286). I'll write
more about it in another thread along with questions that maybe someone
will be able to answer.

> * Which areas of Genode would you like to see improved?
>   How would you possibly contribute to these improvements?

Bare metal

In my current work with RPI (I'm attempting to make base-hw work) it
would be very useful to have some very early debugging facility -
probably serial output. Given that currently I'm not even able to
successfully execute code from crt0.s I'd like to see it (this output)
initialized there although maybe I want too much. It took me two days
(due to my lack of experience) to have any diagnostics from that code -
I can enable and disable leds attached to gpio pins :-). So early output
from initialization enabled in some standard way (build flag?).


Porting

Writing initialization files that define access to all resources and
routing rules is something completely Genode specific and requires good
understanding design principles behind capabilities and resource
providers, etc. Even though I think I understand concepts well I find it
hard to analyze all dependencies (at least it was hard for me in
Sculpt). I think that for "typical" ported software it can require only
some of "standard" resources and configuration could be made by clicking
options what given application is allowed to access. Something similar
to privileges on current phones. I know that Genode solution is better
but only internally and currently is more complicated. Maybe this could
become part of SDK. Maybe even SDK should be "generated" for concrete
list of required resources and consequently APIs?


Inspectability

It should be easy to inspect running system internals. At least after
enabling some debug mode if that can make system slower or less safe. I
know that you know that it is important but I wanted to emphasize that.


Sources

I find difficult to find relevant places in sources when I look for
something. Currently I heavily use find with grep:

  find ~/projects/genode/genode \
-path "*/.git/*" -prune -o \
-path "*/depot/*" -prune -o \
-path "*/contrib/*" -prune -o \
-path "*/build/*" -prune -o \
-path "*.run" -prune -o \
-type f -exec egrep --color -nH -e 'pattern' {} +

but it would make life much easier if there was some integration with
some IDE (maybe there is) that would provide some notion of project
where files would be automatically included to project if they are used
to build concrete target. I'd like to be able to limit search only to
files used e.g. for "run/log for rpi with kernel hw". Although in this
case I have no idea how to achieve this :-) Some additional output from
make as build system is built on top of that?


Knowledge base

Although there is a great book and greate articles about different
design desicions are made and informations about each release it's hard
to quickly find informations about what is currently working/tested,
what is supposed to work and what not and why.

I'd like to have some overview on state of particular configurations as
some matrix with functions, boards and kernels.

 High level examples:

 * support for rpi is only for base-hw and foc, but not for Nova.
 * virtualization is supported only on Nova (I think)

 Low level:

 * real case I stumbled some time ago - tried some filesystem tests and
   for linux target there where errors for 'unlink' (if I correctly
   remember) that it is not implemented. In such case I'd like to know
   if it is not implemented because nobody did that yet o

Re: Roadmap 2019

2018-12-28 Thread Sebastian Sumpf
Hi folks,

here are my three cents: I am very proud of what our team achieved last
year. Sculpt is up and running. I did setup the long running version and
it has not crashed so far and even if it did, I would see it as a chance
to mature Genode. We are humans after all and we do make mistakes, but
thanks to the various kernels, and thus different runtime behavior, we
are able to trigger bugs very fast - enabling us to fix them quickly.
There is more robustness now than I ever imagined.

Otherwise, I see two concurrent paths: 1. POSIX compliance and 2. The
Genode way. For porting software (1) is very convenient. But when
writing new applications I would like to see more of (2). Most likely we
will have to traverse both paths.

Besides doing Java and getting it ready to work properly, I would like
to rework the whole audio stack. That would be the third iteration, but
sometimes things emerge very slowly. So, if anyone here has experiences
with low latency audio, a good book or homepage to read, or just knows
how to design this stuff ... let me know.

Even tough Norman's talk got rejected from the FOSDEM organizers, we do
enjoy  a very successful run at the Microkernel devroom [1], we will
organize it this year,  where we actually had to reject more talks than
I am comfortable with. But there are only eight hours ...

I think by now we have a very small but fine community,

Sebastian

[1]:
https://fosdem.org/2019/schedule/track/microkernels_and_component_based_os
[2]: https://en.wikipedia.org/wiki/Genode

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-27 Thread Emery Hemingway

On a more practical, less experimental note, I would like to see
more work on the SDK, in documentation and integration with third
party build systems, and would like to try to build Genode with Clang.
Both for the benefit of Cedric, and to define a Clang target that does
not use segment registers for TLS.

Cheers,
Emery

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-27 Thread Nobody III
I would like to second the journaling filesystem request, but add it toward
the end of the priority list, considering its difficulty (which seems
rather high, considering the lack of cross-platform support for most
filesystems). My own research into this suggests that most filesystem
drivers are integrated more tightly into the OS kernels than ideal. FUSE
seems like it should solve this issue, except there don't seem to be any
complete, actively-maintained FUSE implementations for mainstream
journaling filesystems. That said, ext4 support would definitely be nice.

On Thu, Dec 27, 2018 at 6:30 PM John J. Karcher <
devu...@alternateapproach.com> wrote:

> On 12/27/18 11:11 AM, Norman Feske wrote:
> > Hi John,
>
> [snip]
>
> >> I was thinking along the lines of a VNC server.  (I was able to port the
> >> "libvncserver" library without any code changes, but since I'm still
> >> working on the application half, I don't know how well it works yet.)
> >
> > That's great to know! The integration of VNC is not on our radar yet.
> > But I can see how nicely it would complement the scenario. If the VNC
> > server provides a framebuffer and input service, we could easily combine
> > it with a dedicated instance of nitpicker+wm - each of those hosted as
> > subsystems within Sculpt's runtime. Then arbitrary interactive
> > applications could be routed to this GUI stack and thereby become
> > remotely accessible. That would rock! :-)
>
> I hadn't thought of that angle, but that would be powerful!
>
> The library does most of the hard work, so all the custom code has to do
> is provide a framebuffer and handle input events.
>
> For the initial iteration, I am trying to attach to the main
> framebuffer, but once that is working, it should be trivial to set it up
> as you describe.
>
>   Thanks!
>
>John J. Karcher
>devu...@alternateapproach.com
>
> ___
> Genode users mailing list
> users@lists.genode.org
> https://lists.genode.org/listinfo/users
___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-27 Thread John J. Karcher

On 12/27/18 11:11 AM, Norman Feske wrote:

Hi John,


[snip]


I was thinking along the lines of a VNC server.  (I was able to port the
"libvncserver" library without any code changes, but since I'm still
working on the application half, I don't know how well it works yet.)


That's great to know! The integration of VNC is not on our radar yet.
But I can see how nicely it would complement the scenario. If the VNC
server provides a framebuffer and input service, we could easily combine
it with a dedicated instance of nitpicker+wm - each of those hosted as
subsystems within Sculpt's runtime. Then arbitrary interactive
applications could be routed to this GUI stack and thereby become
remotely accessible. That would rock! :-)


I hadn't thought of that angle, but that would be powerful!

The library does most of the hard work, so all the custom code has to do 
is provide a framebuffer and handle input events.


For the initial iteration, I am trying to attach to the main 
framebuffer, but once that is working, it should be trivial to set it up 
as you describe.


 Thanks!

  John J. Karcher
  devu...@alternateapproach.com

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-27 Thread John J. Karcher

On 12/23/18 2:46 PM, Norman Feske wrote:

Hallo everyone,

hereby, I'd like to follow up on our tradition to discuss Genode's road
map on the mailing list. Let's take the turn of the year to recapture
the events of 2018 and make plans for the next twelve months. Please
feel welcome to chime in! By mid of January, I'll finalize Genode's
official road map and would like to take your input into account.


[snip]


Please don't hesitate to share your thoughts. You may consider the
following questions:

* What are your ambitions for 2018?


I have goals in three basic categories:

1. Desktop.  This has two parts.  The easy one is to switch to Genode as 
my VirtualBox host.  But I also would like to have the VirtualBox Guest 
Additions for using Genode within a VM.


Would this qualify for the roadmap?

If not, I am starting to work on it - it should make a great learning 
experience (and hopefully a useful blog series), because the various 
facets touch so many different parts of the system.  But I will be slow, 
so if others are interested, I will be happy to learn from them instead! 
 ;^)


2. Network Appliance.  I would like to run an always-on system (probably 
a Raspberry Pi or something similar) for a small mail server (dovecot, 
etc.), a file server, and a streaming audio server.  This should mainly 
be a matter of porting the appropriate software.


In order to run this machine headless, I am (slowly) porting/writing a 
VNC server.


3. Tablet.  This is part of a longer-term goal, but I would love to have 
Genode running in some form on an open-hardware tablet if possible.  (I 
don't even care if it's useful at this stage.)


I know there are efforts toward building mobile front-ends under Qt, but 
I would be even more interested in working toward a native UI front-end. 
 I really feel that Genode would be a great fit for tablets.


I know tablet-related work will not make the roadmap for 2019, but would 
it be possible to agree on a semi-official tablet hardware target for 
the next year or two, for those of us who are interested in pursuing this?




* Which areas of Genode would you like to see improved?
   How would you possibly contribute to these improvements?


- GUI system configuration (e.g., adding configuration features to the 
Component Graph, better discoverability for Depot packages), as you 
already described


- I would feel more comfortable with my VM host running on a journaling 
FS (e.g., ext3 / ext4).  Do others feel the same way?



* Which technical topics do you find tempting?


Almost everything.  (This works both for me and against me!)  Despite 
having mentioned ported software several times, my main interests are in 
exploring the native Genode APIs, proper component design, and 
verifiable code techniques (e.g., Ada/SPARK, etc.).  I'd also like to 
start experimenting with RISC-V.



* If you imagine a Genode-based system one year in the future,
   how would it look like?


Good question.  I would see it very similar to today's, but with more 
applications (ported and native), along with the beefed-up GUI 
configuration tools mentioned earlier.



* Do you have further ideas that would help making Genode relevant
   at a larger scale than today?


Sorry for the boring answer, but I agree that there aren't really any 
technical barriers any more, so I think your ideas on highlighting 
Genode-based products/solutions and Genodians.org are the right direction.



 Thanks!

  John J. Karcher
  devu...@alternateapproach.com

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-27 Thread ttcoder
Thank you for the encouragement Norman. That gives me determination to deliver 
on the 'hype' I posted.. and be useful to 
the community this coming year.

Now that I'm aware of the upcoming "genodians.org" it seems I should have 
waited before registering at neocities.org

Anyway here's the micro-blog as it is now:

  https://tts-genode.neocities.org/genode.html

Will migrate the entries in there to genodians.org when is ready -- looking 
forward to it yes. More entries are queued up to help 
"prime the pump" if need be.

> We ultimately should strive for a agreed-upon official way. Right now,
> however, I feel that it's still too early to take informed decisions. So
> may we take 2019 as the year for desktop experimentation?

I'll try to do my part, fueled by feedback as well. 'Experimentation' is an 
interesting perspective:

One key ingredient/catalyzer, I believe, is ease of programming: when things 
take a lot of time and energy, developers get 'shy', 
overly cautious, think twice before coding.. Discussions heat up as there is 
more at stake.

When it's easy to come up with an (at least partial) implementation however, 
the discussion is less abstract as it moves forward 
supported by quickly-put together concrete examples.

Over time my 'library' of code and framework have reached a point where I can 
write GUI code very easily and quickly.. Meaning 
any given project does not have me too worried about it possibly ending up in 
the trash later.

(as the Jam/MR guys say, "make simple things simple, make complex things 
manageable")

We'll see how that factors in!

> Indeed. However, we have a rough plan to enable features like
> screenshots and screen recording. Maybe, these are worth considering for
> the road map?

Considering the conflicting imperatives -- prioritizing security on the one 
hand, and some quote-unquote "urgency" to enable 
developers to  "show off" on the other hand... Maybe it would make sense to 
prioritize implementing (a rough version of) the 
feature, but keep it hidden behind a compile-time flag? There would be a 
prominent comment near the if-def, "leave this 
commented out in production!"
Just a thought. I can use a digital camera to shoot the screen in the meantime.

Cedric




___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-27 Thread Norman Feske
Hi John,

sorry that I left your previous posting unanswered. Thank you for
following the discussion so closely and for actively participating.

> Headless Sculpt is on my wish list for the year also.  In the interest
> of reducing duplicated work, could you tell us what Christian and
> Sebastian are working on more specifically?

In addition to using Sculpt on our laptops, we longed for a long-running
Genode system that carries real-world work loads with a designated
uptime of many weeks.

The basis is Sculpt with a custom NIC-router configuration and an
automatically deployed variant of the "noux-system" package. In contrast
to the regular noux-system package, which hosts a noux session in
graphical window, this variant makes the noux session remotely available
via SSH. Since the noux-system subsystem has the config fs, report fs,
and the Genode partition mounted, the whole system can be remotely
inspected and sculpted. E.g., new network services can be added by
modifying /config/deploy and config/nic_router on the fly.

As an example for real-world workload, we spawn one or more virtual
machines as Genode build servers. Each of those VMs is remotely
accessible via SSH also.

If you like, you can have a look at Christian's topic branch [1]. But
I'm afraid that it is not too useful without proper documentation, yet.

[1] https://github.com/chelmuth/genode/commits/18.11-plus-buildbot

> I was thinking along the lines of a VNC server.  (I was able to port the
> "libvncserver" library without any code changes, but since I'm still
> working on the application half, I don't know how well it works yet.)

That's great to know! The integration of VNC is not on our radar yet.
But I can see how nicely it would complement the scenario. If the VNC
server provides a framebuffer and input service, we could easily combine
it with a dedicated instance of nitpicker+wm - each of those hosted as
subsystems within Sculpt's runtime. Then arbitrary interactive
applications could be routed to this GUI stack and thereby become
remotely accessible. That would rock! :-)

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-26 Thread John J. Karcher

On 12/26/18 5:52 AM, Norman Feske wrote:

Hi Emery,


As for concrete goals for next year, I have one laptop that I use
exclusively with Sculpt, but I also have a NixOS VPS that I use as my
always-on OS. Therefore I would like a headless Sculpt that I can use
remotely. For this to happen I would imagine a nested sculpt_manager
so that I could share the same machine with friends, a Curses-like
implementation of menu_view, and some secure networking tunneling.


headless Sculpt is a tempting idea. AFAIK, Christian and Sebastian
already took steps into the same direction. I'm looking forward to see
what you will come up with.


Headless Sculpt is on my wish list for the year also.  In the interest 
of reducing duplicated work, could you tell us what Christian and 
Sebastian are working on more specifically?


I was thinking along the lines of a VNC server.  (I was able to port the 
"libvncserver" library without any code changes, but since I'm still 
working on the application half, I don't know how well it works yet.)


 Thanks,

  John J. Karcher
  devu...@alternateapproach.com

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-26 Thread Emery Hemingway

On Wednesday, December 26, 2018 11:52:47 AM CET, Norman Feske wrote:

With the goal of Genode adoption, I think the most sensible approach
would be supporting such languages on top of Genode's POSIX layer. This
way, we could satisfy most use cases without the need for bindings to
Genode's native API (which would be a lot of work, for each language).

When speaking of functional languages, you mentioned lisp. But given
your work on MirageOS, wouldn't OCAML be a more obvious choice?


Porting MirageOS required almost no work to be done in OCaml, but I'm
getting some requests for native bindings to things like framebuffer,
so I will look into porting the OCaml runtime or reusing the runtime
from Mirage.

I mentioned Lisp because I'm interested in using a minimalist language
as a shell and to build GUIs from reports. I'm also looking a bit at
REBOL and Smalltalk, the critical factor being low effort and low
maintenance over features and performance.


As for my personal roadmap, in the past few weeks I've begun work on a
distributed non-hierarchal storage layer.
...


Is this a topic you'd like to see reflected on the official road map?


I would like to see storage on the roadmap, but in a broad sense. Better
safety when closing Block subsystems, and perhaps a "blessed" API for
key-value storage.

Looking forward to next years projects,
Emery

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-26 Thread Norman Feske
Hi Emery,

> As for concrete goals for next year, I have one laptop that I use
> exclusively with Sculpt, but I also have a NixOS VPS that I use as my
> always-on OS. Therefore I would like a headless Sculpt that I can use
> remotely. For this to happen I would imagine a nested sculpt_manager
> so that I could share the same machine with friends, a Curses-like
> implementation of menu_view, and some secure networking tunneling.

headless Sculpt is a tempting idea. AFAIK, Christian and Sebastian
already took steps into the same direction. I'm looking forward to see
what you will come up with.

> Its my perception that the greatest impedement to new users and
> contributers is the singular C++ system API. Perhaps additional Sculpt
> shells could be implemented in interpreted languages such as Python or
> Lisp. I've known a few "power-users" that would appreciate booting into
> their favorite language intepreter, but couldn't care less about how to
> use Bash. Python seems the surest choice, the digital artists I know
> work with Python and there was a time when I used IPython daily.

Support for languages other than C++ seems to be crucial for a wider
adoption. This was the primary motivation behind the added JAVA support.
Also, Johannes' port of Python3 could be leveraged. Language-wise, I
sense interest in Go and Javascript (V8) from potential Genode users.

As another idea, with GDC having just become official part of GCC, D
could be supported quite easily with the next update of Genode's tool
chain. Since I sympathize with D for a long time, I would really like
that. It would give me a good excuse to pick up this language more. ;-)

[1] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=265573

With the goal of Genode adoption, I think the most sensible approach
would be supporting such languages on top of Genode's POSIX layer. This
way, we could satisfy most use cases without the need for bindings to
Genode's native API (which would be a lot of work, for each language).

When speaking of functional languages, you mentioned lisp. But given
your work on MirageOS, wouldn't OCAML be a more obvious choice?

> As for my personal roadmap, in the past few weeks I've begun work on a
> distributed non-hierarchal storage layer. The intention is to support a
> subset of the de facto file-system semantics with quick composition using
> the formalism of set logic. This is a pivot of my roadmap from a year ago
> and reuses code and ideas from another storage project of mine, so
> progress is swift. The use-case is distributed and redundant storage for
> things like my permanent music collection as well as the package depot.

Is this a topic you'd like to see reflected on the official road map?

Thanks Emery for the fantastic year of sculpting we had together!

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-25 Thread Norman Feske
Hi Cedric,

your enthusiasm is a beautiful sight. I find your perspective as a
newcomer immensely interesting. Thank you very much for joining the
discussion. :-)

> I'll now 'do my part' with Genode though: will open a
> micro-blog in a few days about my technical forays into Genode,
> my mistakes and misunderstandings and how I solve them.. So
> that others will save time. Including some additional thoughts
> on this email thread -- to help keep this message short(er than
> a novel). Once I have more exciting news items in store, I'll
> give my micro-blog wider circulation, on the haiku forums (they
> don't have a gigantic readorship, but they are very
> enthusiastic early-adopter types so likely worth the effort).
> Waiting until I announce "our flagship app runs on Genode" will
> carry more weight.

That sounds fantastic. Just out of curiosity, how does the genodians.org
idea that I mentioned in my reply to Guide resonate with you?

> This might relate to a similar topic I have in mind these days:
> if e.g. the genode team does not come up with an "official"
> desktop but leaves it to the community to do (several)
> implementations, we might end up with the fragmentation that is
> prevalent in the Linux world: there are many "distros", which I
> hear are more or less (sometimes "less") compatible with each
> other.
>
> The way this decision making difficulty has always been
> addressed in the Be/Haiku world is something like, "choose
> reasonable defaults", "allow some (limited) easy
> customisations", and "keep power-user customisation accessible
> but under the hood".

I agree that we should learn from the experience with the fragmented
Linux world and the much more coherent Haiku world.

We ultimately should strive for a agreed-upon official way. Right now,
however, I feel that it's still too early to take informed decisions. So
may we take 2019 as the year for desktop experimentation?

> Concrete ideas for "spreading the word" on packages:
>
> The single biggest issue I have with the 'depot' system and
> packages in Genode, is the lack of an introductory paragraph,
> explaining what each package is about. Small potatoes, right?
> Power users probably know software names by heart in their
> sleep? But there are lots of intermediate-style users who
> don't. It does make a difference.

Thank you for making this point.

> Regarding the need to "get the word out" re. the existence of
> packages, and the fact that people's efforts tend to remain
> below-the-radar:
>
> There should be a central depot manager, with a very easy way
> to add third-party repos (depots).
>
> E.g. in the example I am familiar with,
> https://www.haiku-os.org/docs/userguide/en/applications/haikudepot.html
> one just has to invoke Tools > Manage Depots, add a new depot
> URL, and you may immediately download (and run) whatever is in
> that depot.
>
> Those URLs are not 'auto discovered' though, one still has to
> read up about them e.g. in a discussion forum: someone would
> announce "I've created my own depot with my own app builds,
> here it is, use at your own risk". Then it's up to you to
> copy-paste the depot's address in the depot manager. Either
> that or, using a terminal, I'd type "pkgman add
> http...some-repo-here", and pkgman downloads the metadata and
> from now on "pkgman search foo" will return results also from
> that newly added repo (depot).

This is actually very similar to what I had in mind for Sculpt.

> Qt seems to have become almost an industry standard.. But the
> documentation alone is dozens of MB big; at least that's how
> big it shows in the haiku depots here:
>
> [...]
>
> For that, and for other reasons I guess it will not be used by
> Genode as its "native" API of course. Looking at the nitpicker
> code seems to confirm that in spades.

In my reply to Guido, I described my personal stance. In short, your
impression is correct.

> To my (biased) eyes, the Be/Haiku API (organized in "kits")
> compares favorably to what I have seen in my coding life (incl.
> Java: the JDK is so broad and powerful.. but also of a more
> difficult access). There are some imperfections (BMessenger in
> the app kit, some aspects of the InterfaceKit, the Media Kit)
> that should obviously be fixed by whoever uses that API as
> inspiration. But it could indeed provide some inspiration to
> Genode. Developer should be able to tap classes like BButton,
> BMenu, BListView, automatic font-sensitive layout and the like.
> Modernized, cleaned up of deprecated calls, wrapped in
> namespaces instead of polluting the top namespace of course.
> Reading the source code of demo/scout and of sculpt/ I see lots
> of familiar things (repaint() is what I call Invalidate(),
> Window and NitPicker_Connection seem to be what I call a
> BWindow ..etc) but there's a big gap to fill.
>
> [...]
>
> Anyway, work will start soon on 'porting' the kits to Genode..

Wow! That is intriguing.

> Will do some micro-blogging about it, post screenshots (s

Re: Roadmap 2019

2018-12-25 Thread Norman Feske
Hi Ben,

I very much appreciate your plans and suggestions. Thanks for chiming in!

On 24.12.18 20:22, Nobody III wrote:
> *Desktop Environment*
> 
> I also see having a desktop environment as priority, and I have already
> made some progress in that direction. I have my plans along those lines,
> and if anyone wants to discuss details, I'd be happy to do so in another
> thread on this mailing list. However, I have run into some hurdles that I
> could use some help with. In particular, to enable easy IPC with libc-based
> applications, a named pipe (FIFO) VFS plugin would be extremely useful. I
> wrote one myself, only to discover that the VFS and File_system interfaces
> do not adequately support partial writes, as needed by such a plugin. With
> those interfaces reworked, I would happily modify and provide my VFS FIFO
> plugin code, as well as my Libc pipe plugin that uses it as the backend.

These are no fundamental show stoppers and I'm very hopeful that we can
remove these limitations soon.

> My other main technical hurdle for creating a desktop environment has been
> converting the init component into a library to allow for easy
> customization beyond what is possible through configuration files alone.
> The current method of writing a monitor component to read init's state and
> modify its configuration works fine for simple cases, but it has
> performance penalties that can range from mild to severe. The configuration
> parsing overhead grows with the number of child components, which isn't
> ideal, but the real show-stopper that I see is dynamic quota management.
> Each quota upgrade has to wait for a new report, and reports happen at
> regular intervals, usually every second. Thus multiple quota upgrades, e.g.
> from opening one or more new web browser windows/tabs can take several
> seconds. With an init library, such upgrades could be handled very quickly.
> I can handle this particular issue myself as soon as it becomes a high
> enough priority.

This is extremely interesting for me because I reached a similar
conclusion while creating the user interface for the sculpt manager. In
fact, I almost started working on the "librarization" of init in summer.
I ultimately decided to defer this work to give it appropriate attention
instead of rushing it.

Thanks for encouraging me. I will definitely put the "librarization" of
init on the road map!

> *Hardware Support*
> 
> Aside from a desktop environment, hardware support is another likely
> show-stopper for new users. I've been working on this myself, and hope to
> be able to make Genode/Sculpt usable on my new desktop computer in 2019. I
> accept that support for my hardware is mostly my issue, but improvements in
> debugging tools and documentation would help a lot with this.

I wonder, would any of these improvements be roadmap-worthy?

> *Debugging*
> 
> As for debugging tools, I suggest building both remote (serial and/or
> (W)LAN) and on-screen GDB component debugging scenarios. This would help
> with many other goals, and might also help make Genode more attractive to
> developers.

This problem can probably be addressed in two stages. At the first
stage, we should do a better job with documenting our existing
time-tested debugging and development workflows that are used within
Genode Labs. At the second stage, it may be cool to find a way of
integrating our GDB monitor easily in Sculpt.

> *Package Management*
> 
> I'd like to second and add to what ttcoder said about package management.
> It would be very helpful to provide a way for Sculpt users to discover and
> add depots. This would increase usability, and would encourage developers
> outside Genode Labs to write and port more software for Genode.
> 
> Currently, depots don't provide package or launcher lists. Ideally, I would
> like to see Sculpt have an option to fetch the latest launchers from the
> repositories selected by the user, allowing them to easily discover
> components. This would also fix the issue I've seen with Sculpt launchers
> expecting package versions only available locally on the build machine.
> Currently, when I modify a component used by Sculpt and update its recipe
> version, Sculpt expects my new version to be available from depot.genode.org.
> If a launcher list is fetched from the Genode Labs depot (possibly with a
> correct default launcher list provided in the Sculpt image), this problem
> will be solved.

These are all very good points. I definitely plan to improve Sculpt in
this respect. It is not as simple as importing pre-defined launchers
along with (potentially untrusted) depot content though. The launchers
should always remain under conscious control by the user. Imagine a
malicious depot provider that tricks the user into adding its depot
along with a launcher that hands out the user's config fs to a package
provided by the malicious depot provider. This could take over the whole
system.

I think we can get a convenient experience with a graphica

Re: Roadmap 2019

2018-12-25 Thread Norman Feske
Hi Guido,

thank you for the elaborate and insightful response.

I'm very sorry to hear the fate of your eccentric-authentication project
as I still vividly remember your enthusiasm about it. Hopefully, it's
not buried but only temporarily suspended.

> Now about your goals and questions:
> 
>> 1) Widening the audience of Sculpt OS
>> Consequently, we should improve its ease of use.
> 
> For me a 1000 times this.
> 
> To me, the learning curve of Genode is steep. The learning curve of
> (changing) Sculpt is steep too. Although I know most of the concepts of
> the platform, I find it still hard to develop in. Lately I went deep
> into changing the configuration of Virtualbox in Sculpt. What should be
> a few hours took me more than a week. And the result was still hacky :-(

Hats off for trying! You certainly went outside the designated (and
documented) scope of the current version, which is impressive. Your
feedback is valuable for planning the upcoming improvements of Sculpt.

> Although there are many examples, I'd like to see them listed from
> simple to complex, each explaining a concept of Genode, builing on top
> of the previous ones. It could grow into a Genode for Dummies.

This raises an interesting question: Should we prioritize documenting
the use of Sculpt or the use of Genode?

The former would look only at the building blocks (but not inside them).
Such documentation can be in the form of light-hearted and practical
use-case anecdotes, which are fun to read and immediately applicable by
Sculpt users without any programming. It also takes a few complicated
topics like the build system or the run scripts out of view.

The latter would come down to a review and description of existing
run-script scenarios, which is probably less rewarding but more valuable
for people who want to go deeper below the surface of Sculpt.

Intuitively, for capturing a larger audience, I'd first put the focus on
use cases based on Sculpt.

> Other wish: please describe how I can enable all kinds of debugging
> modes. For example, when I make a XML syntax error in an init.config,
> the app doesn't start but the log remains quiet.
> 
> Other example, at one point I added printf-logging to init-components to
> trace the routing decisions so I could check that my config was correct.
> It would be great if there was a config option for that.

That's an interesting information because it does not overlap much with
my personal experience. Making init (optionally) more verbose would be
no problem at all. I just need to know which kind of verbosity is
actually helpful. So your experience can guide us here.

>> 2) Fostering the community spirit around our project
> 
> I think you have a nice (but small) community already, with your team
> ready to answer any question quicky. Just keep doing that.
> 
> You've seen my recent write-up on adding a raw partition to virtualbox
> in Sculpt. I thought of making it a blog so others can learn from it
> too. (I'm not sure if that example makes a nice showcase of the ease of
> Sculpt :-).

The blogging topic popped up also in the other responses. So let me
prematurely leak some information about a concrete idea in this respect:

We plan to start a kind of federated microblogging platform around
Genode called "genodians.org", which enables everyone interested in
Genode to publish posts. The content will be hosted at individual git
repositories and remains completely under control and ownership of each
individual author. The site merely aggregates the content from a list of
authors and takes care of the layout and style. This will give Genode
developers and users an easy way to share insights and experiences. For
discussion, each posting will be equipped with a reddit-submission link.

It goes without saying that the site will be hosted on Genode.

If you like, you can already have a peek here:

  https://github.com/genodelabs/genodians.org

Would you find the participation in such a federated publishing platform
attractive?

>> * Which areas of Genode would you like to see improved?
>>    How would you possibly contribute to these improvements?
> 
> Documentation. (I'll tell you my struggles, you improve the docs).

:-)

>> * If you imagine a Genode-based system one year in the future,
>>    how would it look like?
> 
> My long term dream is Genode on a Desktop.
> 
> It has a desktop UI interface, double clicking opens an application in a
> sandbox. The application has only access to its dependencies and
> resources like fonts, etc.
> 
> However, the application does not have access to the user's files,
> email, etc., not even network access. It the user wants to open a file,
> the sandbox detects the application opening a file-browser and an
> attempt to read /home/ and opens a Powerbox. The powerbox is a
> trusted part of the OS that lets the user select one or more files. Only
> these are the files that the application can read. (The powerbox is
> described in HP-Labs paper [1] and other

Re: Roadmap 2019

2018-12-24 Thread Emery Hemingway

Dear list,

To reflect on this year's progress, its been a pleasure to watch the
Genode desktop evolve from a ramshackle init configuration into Sculpt
and the launcher system. The lack of interest from the outside world is
disappointing, but I blame a pessimistic zeitgeist rather than the
lameness of Genode.

As for concrete goals for next year, I have one laptop that I use
exclusively with Sculpt, but I also have a NixOS VPS that I use as my
always-on OS. Therefore I would like a headless Sculpt that I can use
remotely. For this to happen I would imagine a nested sculpt_manager
so that I could share the same machine with friends, a Curses-like
implementation of menu_view, and some secure networking tunneling.

Its my perception that the greatest impedement to new users and
contributers is the singular C++ system API. Perhaps additional Sculpt
shells could be implemented in interpreted languages such as Python or
Lisp. I've known a few "power-users" that would appreciate booting into
their favorite language intepreter, but couldn't care less about how to
use Bash. Python seems the surest choice, the digital artists I know
work with Python and there was a time when I used IPython daily.

As for my personal roadmap, in the past few weeks I've begun work on a
distributed non-hierarchal storage layer. The intention is to support a
subset of the de facto file-system semantics with quick composition using
the formalism of set logic. This is a pivot of my roadmap from a year ago
and reuses code and ideas from another storage project of mine, so
progress is swift. The use-case is distributed and redundant storage for
things like my permanent music collection as well as the package depot.

Best wishes for next year,
Emery



___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-24 Thread John J. Karcher

Congratulations on a highly successful year!

Thanks for this opportunity to chime in.  There's a lot to process here; 
for brevity's sake I will only share a few initial thoughts at this time.



On 12/23/18 2:46 PM, Norman Feske wrote:

Hallo everyone,

hereby, I'd like to follow up on our tradition to discuss Genode's road
map on the mailing list. Let's take the turn of the year to recapture
the events of 2018 and make plans for the next twelve months. Please
feel welcome to chime in! By mid of January, I'll finalize Genode's
official road map and would like to take your input into account.


[snip]


For me personally, this ride was certainly the most rewarding period in
Genode's history so far. Now, when looking at the result, I am
overwhelmed about what we achieved together! Whenever I have the chance
to showing off Sculpt running on my laptop, Sculpt doesn't fail to impress.


I completely agree with this assessment.  I think the Year Of Sculpt has 
tied enough loose ends together that the framework has reached the 
"plateau" phase, and the focus now shifts to building upon it.



That said, during the course of the year, this positive sense of
achievement eventually blended with the rather dull feeling that our
hard work remains largely unnoticed outside the inner circle of Genode
enthusiasts. The public at large remains quite indifferent (e.g., I was
unable to capture the interest of FOSDEM to feature a talk about Sculpt
OS on their main track). For a long time, I tricked myself into
believing that once we overcome all technical road blocks, Genode will
eventually become widely recognized automatically. There was always a
technical challenge to take on. With Sculpt, we have reached a point
where this excuse doesn't hold anymore. There is no technical piece missing.


I agree that there is no technical piece missing.  But as an old refugee 
from the Amiga, etc., I'm painfully aware that the best technology 
doesn't always get the mind- or market-share.  (The FOSDEM news is 
surprising, though.)



This leaves me with the question of how to make Genode relevant at a
larger scale? Since this is not a technical question, I admittedly
struggle to find a good answer. When thinking of the overall leitmotif
for 2019, I always come back to this question.


Plan for 2019

I see three directions to help Genode to become more widely recognized.


[snip]


1) Widening the audience of Sculpt OS

Sculpt works well, but it is arguably still too hard to use for
non-technical users and it lacks a lot of software that users take for
granted today. Consequently, we should improve its ease of use. In
particular, I'd love to explore the more consequent use of Sculpt's
component graph as an intuitive user interface for both the composition
and the configuration of components. The ultimate goal would be to
eliminate the need for editing any text files. With respect to software
availability, I have high hopes in the Genode SDK that we introduced in
Genode 18.11. Let's follow this route further.


I don't have any big ideas on this subject, but I just want to support 
the idea of focusing on the Component Graph.  It is a powerful (and 
unique) feature, and I can't wait to use it for configuration also.



2) Fostering the community spirit around our project

Our project enjoys a healthy community of users and contributors. But
the community is rather scattered and the various groups work pretty
much in isolation. As a result, the work of one group is often invisible
to the others, not to speak of any public visibility. Could we possibly
establish an instrument that would help each participant to gain more
visibility and thereby help the community at large to become more
relevant? I'll come up with a concrete proposal for such an instrument soon.


This should really help us hit critical mass.  It sounds like some 
interesting (and unexpected) ideas are percolating already!



One technical element may be a feature of Sculpt that would allow the
user to browse the software depots provided by various community members
and install/deploy packages by just a few clicks. This would vastly ease
the discoverability of the available software and highlight the roles of
the respective developers.


I think this is a really important idea also.

[snip]

(I need to put more thought into the questions at the end, so I'll 
respond to those separately.)


As a final thought, I'm really looking forward to what both Genode Labs 
and the community do in the upcoming year, and to being part of it!


 Happy Holidays!

  John J. Karcher
  devu...@alternateapproach.com

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users

Re: Roadmap 2019

2018-12-24 Thread Nobody III
*Desktop Environment*

I also see having a desktop environment as priority, and I have already
made some progress in that direction. I have my plans along those lines,
and if anyone wants to discuss details, I'd be happy to do so in another
thread on this mailing list. However, I have run into some hurdles that I
could use some help with. In particular, to enable easy IPC with libc-based
applications, a named pipe (FIFO) VFS plugin would be extremely useful. I
wrote one myself, only to discover that the VFS and File_system interfaces
do not adequately support partial writes, as needed by such a plugin. With
those interfaces reworked, I would happily modify and provide my VFS FIFO
plugin code, as well as my Libc pipe plugin that uses it as the backend.

My other main technical hurdle for creating a desktop environment has been
converting the init component into a library to allow for easy
customization beyond what is possible through configuration files alone.
The current method of writing a monitor component to read init's state and
modify its configuration works fine for simple cases, but it has
performance penalties that can range from mild to severe. The configuration
parsing overhead grows with the number of child components, which isn't
ideal, but the real show-stopper that I see is dynamic quota management.
Each quota upgrade has to wait for a new report, and reports happen at
regular intervals, usually every second. Thus multiple quota upgrades, e.g.
from opening one or more new web browser windows/tabs can take several
seconds. With an init library, such upgrades could be handled very quickly.
I can handle this particular issue myself as soon as it becomes a high
enough priority.

*Hardware Support*

Aside from a desktop environment, hardware support is another likely
show-stopper for new users. I've been working on this myself, and hope to
be able to make Genode/Sculpt usable on my new desktop computer in 2019. I
accept that support for my hardware is mostly my issue, but improvements in
debugging tools and documentation would help a lot with this.

*Debugging*

As for debugging tools, I suggest building both remote (serial and/or
(W)LAN) and on-screen GDB component debugging scenarios. This would help
with many other goals, and might also help make Genode more attractive to
developers.

*Package Management*

I'd like to second and add to what ttcoder said about package management.
It would be very helpful to provide a way for Sculpt users to discover and
add depots. This would increase usability, and would encourage developers
outside Genode Labs to write and port more software for Genode.

Currently, depots don't provide package or launcher lists. Ideally, I would
like to see Sculpt have an option to fetch the latest launchers from the
repositories selected by the user, allowing them to easily discover
components. This would also fix the issue I've seen with Sculpt launchers
expecting package versions only available locally on the build machine.
Currently, when I modify a component used by Sculpt and update its recipe
version, Sculpt expects my new version to be available from depot.genode.org.
If a launcher list is fetched from the Genode Labs depot (possibly with a
correct default launcher list provided in the Sculpt image), this problem
will be solved.

*Performance*

All current Genode scenarios (AFAIK), including Sculpt, run almost
everything on a single hardware thread. An SMP balancing component would
dramatically increase performance (and likely responsiveness) on modern
multi-core CPUs. If nobody else gets around to it first, I'll probably
write such a component, but if anyone else here more familiar with Genode's
scheduling mechanisms is interested enough, they can probably write a much
better implementation than I would.

*Summary*

In short, I'd like to see the following things on the 2019 roadmap:
1. Rework VFS and File_system interfaces to support partial writes, as
needed by FIFOs
2. Interactive local and remote GDB debugging scenarios for real hardware
3. Depot and Launcher discovery for Sculpt
4. SMP balancing component
5. Improved documentation

We don't all see eye-to-eye on how a desktop environment should operate, so
I'm particularly interested in getting help with (1) so I can make more
progress on writing my own, and with (3) so I can make it easily available
so others can try it out and give me feedback.

On Mon, Dec 24, 2018 at 8:42 AM  wrote:

>
> As a newcomer I should probably step up to the plate, while the 'first
> impressions' are still fresh in my mind.
>
> I'm still making baby steps; but based on past experience I should hit the
> ascending part of the learning S-curve soon and become
> productive.
> Still have tons of documentation to read before I'll feel half-literate
> about Genode (it seems to be made of just a handful of ground-
> breaking principles, but in practice they have such far-reaching
> consequences that it takes some time to get "fluent" with al

Re: Roadmap 2019

2018-12-24 Thread ttcoder

As a newcomer I should probably step up to the plate, while the 'first 
impressions' are still fresh in my mind.

I'm still making baby steps; but based on past experience I should hit the 
ascending part of the learning S-curve soon and become 
productive.
Still have tons of documentation to read before I'll feel half-literate about 
Genode (it seems to be made of just a handful of ground-
breaking principles, but in practice they have such far-reaching consequences 
that it takes some time to get "fluent" with all 
ramifications). Hopefully some of the below makes sense anyway. This much is 
sure -- as we say in french, if Genode didn't exist, 
someone'd have to invent it *g*.

My whole C.S. perspective (and thus also this message) is haiku centric. So 
each question & concern will be addressed from that 
perspective. Hopefully this will bring value to the discussion in at least a 
few of the cases, if not all. Criticism welcome.

Not much I can add (other than a deep sigh *s*) as to why people don't adopt 
superior technology in higher numbers.. As a frequent 
'early adopter' type I've seen the same thing over time. People stick with the 
familiar as being "good enough".. Been guilty of that myself 
too. To be fair though, people who download and run Scult/VC currently are 
greeted with the leitzencentral, not with a desktop (or what 
in Haiku I call "a userland"); so the Genode team would need to develop a 
'userland' on top of leitzencentral.. In order to go beyond the 
technological demo, and instead produce a general-purpose OS demo. More on that 
below.

I'll now 'do my part' with Genode though: will open a micro-blog in a few days 
about my technical forays into Genode, my mistakes and 
misunderstandings and how I solve them.. So that others will save time. 
Including some additional thoughts on this email thread -- to 
help keep this message short(er than a novel).
Once I have more exciting news items in store, I'll give my micro-blog wider 
circulation, on the haiku forums (they don't have a gigantic 
readorship, but they are very enthusiastic early-adopter types so likely worth 
the effort). Waiting until I announce "our flagship app 
runs on Genode" will carry more weight.

When doing (low key) advocacy in haiku forums, I'll leverage the cultural 
aspect: in the haiku crowd, they/we adopted Neil Stephenson's 
saying that we're using the "batmobile" of operating systems: I'll build on 
that by saying Genode is potentially the "UFO" of operating 
systems, out of this world :-)

Will give back to the Genode community probably in a similar way I did with 
Haiku over the years (tickets e.g.). If I had to help out with 
the "challenges" page later, I suppose it might be with the MAID-SAFE part 
(decentralized internet). But even if within the edge of my 
abilities, I would have to get a lot of ducks in a row first. Their litterature 
mentions developing in something called "electron" (?) whereas 
I'm most productive in C++ coding against my beloved "Interface Kit".


***

Finding the way:

> The unconquered design space seemed vast, which was
> both exciting but also - at times - a bit paralyzing.

This might relate to a similar topic I have in mind these days: if e.g. the 
genode team does not come up with an "official" desktop but 
leaves it to the community to do (several) implementations, we might end up 
with the fragmentation that is prevalent in the Linux world: 
there are many "distros", which I hear are more or less (sometimes "less") 
compatible with each other.

The way this decision making difficulty has always been addressed in the 
Be/Haiku world is something like, "choose reasonable defaults", 
"allow some (limited) easy customisations", and "keep power-user customisation 
accessible but under the hood".

On a related note, I've also noticed over the years that OS designers are often 
bad application designers, and vice-versa. I guess the point 
I'm trying to make is something like, "if you want a rich userland, make an SDK 
that is a joy to use and help app developers help you" :-)

Of course any SDK design decision has to be weighted with the absolute Genode 
priorities: security, stability, separation.


*

Concrete ideas for "spreading the word" on packages:

The single biggest issue I have with the 'depot' system and packages in Genode, 
is the lack of an introductory paragraph, explaining what 
each package is about.
Small potatoes, right? Power users probably know software names by heart in 
their sleep? But there are lots of intermediate-style users 
who don't. It does make a difference.

Do note -- said texts can be simply copy-pasted, as they are in the example 
below with haiku recipes. There's no word-smith work 
involved at all. Just a matter of extending the depot format with a new field, 
and pasting pre-existing texts into that field. Especially 
important, taking into account that the genode depots are destined to grow into 
the hundreds of packages (I'd hope

Re: Roadmap 2019

2018-12-24 Thread Guido Witmond

Hi Norman and the whole Genode team,


First, I recognize the feeling that you are enthusiastic about your work 
and nobody seems to care. And how devastating that can feel.


I know that feeling from my attempt at designing and promoting my 
authentication protocol that (I believe) could decimate most phishing 
and identity theft attacks. I got so disappointed at the lack of 
response that I disabled web statistics so I didn't have to see how 
little visitors my site got. Now I've more or less given up on it.


Yet every time I see a news article about phishing or stolen (and 
abused) passwords I'm reminded that I came up with something that could 
have (helped to) prevent it.



Second, it's hard to create a new platform from scratch. As a rule of 
thumb, for any new invention it takes roughly 15 years from invention to 
market-readyness. So far, Genode Labs succeeded where others gave up. 
Thanks for not giving up.



Third, it's very hard to bring innovation into the IT-world. The IT 
community is very conservative.


Sandboxing to contain viruses is something that HP-Labs did 15 years ago 
for Windows XP [1]. Regrettably HP didn't succeed in selling it widely. 
Just last week, Microsoft has added a sandbox to Win10 in an attempt to 
contain malware.


An example of the conservatism: I explained some ideas of Genode 
(micro-kernel, sandboxing, separation, pola) to a 30yo manager of a 
software development company that advertised itself for writing secure 
software. He found the ideas interesting but did not want to spend time 
to research it. Not even reading on the topic. He said it was "academic 
stuff that eventually shows up in Linux". I couldn't convince him that 
it might be a good idea to be ahead of the curve. He was risk averse, as 
are most IT-people. Genode needs to find people willing to take a risk 
and reap the reward.


Every time I read about crypto malware holding a user or company hostage 
for ransom I'm reminded that had they used Genode it could have (helped 
to) prevent it.


I believe there is a huge market out there. The difficulty is getting 
there. I hope my answers to this mail give some ideas how to proceed.




Now about your goals and questions:

> 1) Widening the audience of Sculpt OS
> Consequently, we should improve its ease of use.

For me a 1000 times this.

To me, the learning curve of Genode is steep. The learning curve of 
(changing) Sculpt is steep too. Although I know most of the concepts of 
the platform, I find it still hard to develop in. Lately I went deep 
into changing the configuration of Virtualbox in Sculpt. What should be 
a few hours took me more than a week. And the result was still hacky :-(


Although there are many examples, I'd like to see them listed from 
simple to complex, each explaining a concept of Genode, builing on top 
of the previous ones. It could grow into a Genode for Dummies.


Other wish: please describe how I can enable all kinds of debugging 
modes. For example, when I make a XML syntax error in an init.config, 
the app doesn't start but the log remains quiet.


Other example, at one point I added printf-logging to init-components to 
trace the routing decisions so I could check that my config was correct. 
It would be great if there was a config option for that.



> 2) Fostering the community spirit around our project

I think you have a nice (but small) community already, with your team 
ready to answer any question quicky. Just keep doing that.


You've seen my recent write-up on adding a raw partition to virtualbox 
in Sculpt. I thought of making it a blog so others can learn from it 
too. (I'm not sure if that example makes a nice showcase of the ease of 
Sculpt :-).



> 3) Marketing of Genode-based products

I like the idea of cross-promotion between Genode and some companies 
that use it. Put some showcases on your site. Perhaps with a small 
testimonial from each company why they chose Genode.


Given the impossibility of convincing (conservative) people why Genode 
is better than their current system, don't focus on technical details. 
Instead focus on concrete benefits for (end) users:

- safe by design;
- protects privacy;
- little errors do not become catastrophes;
- robust against malware;
- no need for regular updates;
- updates don't break existing functionality;
- easy to use, also for non-computer users (see my dream system below).


> * What are your ambitions for 2019?

I still have my wish for running Genode on my server, running a 
webserver for static and dynamic content. I ran a static web site on 
Genode a few years ago. It lasted a week until it crashed due to a 
resource leak, (memory, VFS-file descriptors). I could not debug it, so 
the box runs Linux again.


I'd like to run a (small) dynamic web site on it. I.e. start with a blog 
and comments section and private messaging. For parsing I use the a 
composable parser generator such as the Hammer library [2] from the 
Langsec [3] community. I think Lan

Roadmap 2019

2018-12-23 Thread Norman Feske
Hallo everyone,

hereby, I'd like to follow up on our tradition to discuss Genode's road
map on the mailing list. Let's take the turn of the year to recapture
the events of 2018 and make plans for the next twelve months. Please
feel welcome to chime in! By mid of January, I'll finalize Genode's
official road map and would like to take your input into account.

In the following, let me share my personal reflections and goals.


The Year of Sculpt

When I declared 2018 as Genode's Year of Sculpt, I had no concrete idea
how Sculpt OS would shape up. I was 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.

I ultimately had to bang a few nails into the wall, taking decisions
with uncertain outcome. The Year of Sculpt was - more than anything - a
design-space exploration, not an up-front planned activity. In the
process, I came up with many half-baked thoughts and had the fortune of
having our team at Genode Labs scrutinizing my ideas while also taking
me seriously. Whenever an idea was indefensible, we jointly came up with
a better one. Whenever uncertain about a proposed solution, I went
forward with implementing it and took our team as guinea pigs. Whenever
an idea was blocked by a limitation of an existing component, I could
count on the support of the others to lend a helping hand with tweaking
the components as needed.

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, and the work on the file-system and networks stacks.

For me personally, this ride was certainly the most rewarding period in
Genode's history so far. Now, when looking at the result, I am
overwhelmed about what we achieved together! Whenever I have the chance
to showing off Sculpt running on my laptop, Sculpt doesn't fail to impress.

That said, during the course of the year, this positive sense of
achievement eventually blended with the rather dull feeling that our
hard work remains largely unnoticed outside the inner circle of Genode
enthusiasts. The public at large remains quite indifferent (e.g., I was
unable to capture the interest of FOSDEM to feature a talk about Sculpt
OS on their main track). For a long time, I tricked myself into
believing that once we overcome all technical road blocks, Genode will
eventually become widely recognized automatically. There was always a
technical challenge to take on. With Sculpt, we have reached a point
where this excuse doesn't hold anymore. There is no technical piece missing.

This leaves me with the question of how to make Genode relevant at a
larger scale? Since this is not a technical question, I admittedly
struggle to find a good answer. When thinking of the overall leitmotif
for 2019, I always come back to this question.


Plan for 2019

I see three directions to help Genode to become more widely recognized.

1) Widening the audience of Sculpt OS
2) Fostering the community spirit around our project
3) Marketing of Genode-based products

Let me outline my thoughts behind each point.


1) Widening the audience of Sculpt OS

Sculpt works well, but it is arguably still too hard to use for
non-technical users and it lacks a lot of software that users take for
granted today. Consequently, we should improve its ease of use. In
particular, I'd love to explore the more consequent use of Sculpt's
component graph as an intuitive user interface for both the composition
and the configuration of components. The ultimate goal would be to
eliminate the need for editing any text files. With respect to software
availability, I have high hopes in the Genode SDK that we introduced in
Genode 18.11. Let's follow this route further.


2) Fostering the community spirit around our project

Our project enjoys a healthy community of users and contributors. But
the community is rather scattered and the various groups work pretty
much in isolation. As a result, the work of one group is often invisible
to the others, not to speak of any public visibility. Could we possibly
establish an instrument that would help each participant to gain more
visibility and thereby help the community at large to become more
relevant? I'll come up with a concrete proposal for such an instrument soon.

One technical element may be a feature of Sculpt that would allow the
user to browse the software depots provided by various community members
and install/deploy packages by just a few clicks. This would vastly ease
the discoverability of the available software and highlight the roles of
the respective developers.

A non-technical element may be a dissemination of Genode-related news at
a higher rate than the current release announcements.


3) Marketing of Genode-based products

Let's build Gen