Hi,
I've been running Qubes for a few years now and I'd like to give
Spectrum a try, as I've been having some hardware and performance
problems with Qubes. Is there some up-to-date guide I can follow? I
found https://alyssa.is/using-virtio-wl/#demo and was able to see the
weston terminal. I also tried updating to the latest commit and was
able to get a nested wayfire window with:
nix-build . -A spectrumPackages && ./result-3/bin/spectrum-vm
(I'm fairly new to Nix, so not sure if this is the right way to do things)
I managed to change the keyboard layout, mount a tmpfs for home, and
increase the memory enough to start firefox, but I haven't managed to
get much further. Things I tried so far:
- I tried replacing wayfire with weston-terminal, to avoid the nested
session. But sommelier segfaults when I do that.
- I tried adding `--shared-dir /tmp/ff:ff:type=9p` to share a host
directory. Then `mount -t 9p -o trans=virtio,version=9p2000.L ff /tmp`
in the VM seemed to work, but `ls /tmp` crashed the VM.
- I tried using `-d /dev/mapper/disk` to share an LVM partition, but
`mount -t ext4 /dev/vdb /tmp` refused to mount it.
- I tried enabling networking with `--host_ip 10.0.0.1`, etc, but it
said it couldn't create a tap device. I guess it needs more
privileges.
Ideally, I'd like to run a VM with each of my old Qubes filesystems,
to get back to where I was with my Qubes setup, before investigating
new spectrum stuff (e.g. one app per VM). Do you have any advice on
this? I see these lists are a bit quiet - I hope someone is still
working on this because it sounds great :-)
Thanks!
--
talex5 (GitHub/Twitter) http://roscidus.com/blog/
GPG: 5DD5 8D70 899C 454A 966D 6A51 7513 3C8F 94F6 E0CC
We finally have an online render of the new documentation I've been
writing:
https://spectrum-os.org/doc/
Let me know if anything doesn't look right.
This documentation lives in the "Documentation" directory in the
Spectrum repository. The online version will be automatically updated
whenever changes are pushed.
I'm not sure what to put on the index page. I think maybe it would make
sense to just merge all the content that's currently on the rest of the
website into the documentation, but I'm not sure yet.
It's going to be really important for Spectrum to have solid
documentation. I recently watched a talk about the Diátaxis system[1],
and I think it would be a good model for us to follow.
[1]: https://diataxis.fr/
Hi,
I asked thoughts on Spectrum documentation improvements some time back on #spectrum. I'd like to improve documentation in terms of architecture (views, description, diagrams) to support communication with people adopting Spectrum in our research/engineering project(s). Of course I can create presentations for such purposes but those are not supporting the project.
There's nothing wrong with asciidoc but as of now it lacks support for diagrams. Another view to diagrams was how we want to create diagrams - writing dsl(diagram-specific-language)-to-diagrams or drawing. Based on our #spectrum discussion I was guided to asciidoc diagram extension - https://docs.asciidoctor.org/diagram-extension/latest/ - so I finally gave it a try last Friday with ditaa - an ascii-to-png-conversion. Long story short - I got it working by adding dependencies to jdk8 etc. but I'm not happy with the result for following reasons:
Limitations:
- ditaa (and other dsl-to-diagrams) have limited support in either diagram dsl comprehension or available editors. Namely, ascii-based box drawing programs exist (e.g. https://asciiflow.com/#/) but do not directly support ditaa. If ascii-drawings can be modified to ditaa, it's slow, error-prone and worst of all - importing version controlled ditaa-ascii-graph text files back to editors do not work as object imports so in worst case the objects need to be drawn again when one wants to modify the diagrams.
- dsls have learning curves with different slopes. Some are easy, some take domain level understanding (like UML) in addition to dsl but it's there.
- layout algorithms - many cases go quite ok with this but then there's points where the layout algorithms fail miserably with solutions beyond reasonable effort.
- dsls are usually not readable in source format but beyond trivial diagrams always require validation visually
Benefits:
+ Some asciidoc diagram-extension dsl:s (like plantuml, graphviz) work quite ok for both visualizing UML, graphs, dependencies, trees.
+ Focus on content, not presentation - kind of like LaTeX. Though this is limited by tools like ditaa which can get worst of both worlds.
+ dsls can be great for code level views. I've used tool where dsl has been combined into generating the diagrams from code or tree like structures. In fact, there's quite a few such tools to do this with nix-store dependency trees and have been useful in spectrum architecture comprehension.
What I'd like to propose that in addition to aiming at text-to-diagrams we support diagram drawing tool(s) and agree on either png or svg with diagrams.
With diagram drawing tools, we should store the diagrams in editable format in version control (not only png and svg).
My 2 cents would go to https://github.com/jgraph/drawio but I'm fine with others as well - as long as they do not require commercial license.
I'd like to hear thoughts/decisions on this before sending any patches to contribute to spectrum architecture documentation.
Best regards,
-Ville
The big news this month is that Puck is now working with us as a Wayland
developer[1]. We also welcomed a bunch of new people into the chat
channel who were interested in building Spectrum to try it out for
themselves, and contributing to it or related projects, which is
absolutely fantastic.
[1] https://spectrum-os.org/lists/archives/spectrum-discuss/20220416092718.isdz…
Here's what I did in April:
Binary Cache
════════════
Using only the cache.nixos.org binary cache, building Spectrum and all
its many dependencies could take more than 24 hours on commodity
hardware, which was a big turn-off to the people who've been trying to
build Spectrum for themselves recently.
To mitigate this, this month I put together a binary cache solution
for Spectrum[2], and wrote documentation explaining how to use it[3].
Thanks again to Daniel Kuehn (lejonet) for providing the storage
hosting for the binary cache.
[2] https://spectrum-os.org/lists/archives/spectrum-devel/20220414141547.rafken…
[3] https://spectrum-os.org/git/spectrum/tree/Documentation/binary-cache.adoc
Hardware support
════════════════
This month, quite a few people were interested in testing Spectrum on
their hardware. This surfaced quite a few issues that have now been
resolved:
• Avoid EFI chainloading in the combined image.[4]
• Use a bigger kernel buffer for uevents.[5]
As well as one issue still in flight:
• Rebroadcast uevents not handled by mdevd.[6]
And one issue still being investigated.
Additionally, I started to look into what Aarch64 support in Spectrum
would look like. I was surprised to discover that Nixpkgs' musl
stdenv hadn't even bootstrapped on aarch64 for three years! So I
commited some hacks to fix that[7], and put together a follow-up that
will make it maintainable going forward[8].
[4] https://spectrum-os.org/git/spectrum/commit/?id=b1ff26eb27ea905357f8bf217d0…
[5] https://spectrum-os.org/git/spectrum/commit/?id=0b3b366653030de498e73e51b1c…
[6] https://spectrum-os.org/lists/archives/spectrum-devel/20220424080020.32216-…
[7] https://github.com/NixOS/nixpkgs/pull/169764
[8] https://github.com/NixOS/nixpkgs/pull/169793
Documentation
═════════════
I spent a lot of this month working on documentation. Having good
documentation is going to be really important for bringing on new
contributors. I expect to spend a bunch of time on this next month,
too.
• New documentation: a UUID reference[9], and information about the
binary cache[3].
• A proper documentation site, based on Just the Docs[10].
Unfortunately not quite available online yet, but you can see it
with nix-shell –run 'jekyll serve' in the Documentation directory.
[9] https://spectrum-os.org/git/spectrum/tree/Documentation/uuid-reference.adoc
[10] https://just-the-docs.github.io/just-the-docs/
Miscellaneous
═════════════
• I did a short development stream.[11]
• Updated Nixpkgs, reducing our patch count by half.
• Switched to s6-linux-init from a hand-rolled script, eliminating a
longstanding race condition during boot.
• Adopted systemd-boot, which will make Spectrum more dual-boot
friendly.[12].
• Dropped s6-portable-utils dependency[13], and OVMF development
dependency[14].
• Various cleanups to licensing metadata.
• Fixed building Spectrum on Ubuntu[15].
• Minor cleanups to VM startup[16][17][18][19]. This is preparatory
work in advance of new VM features.
[11] https://diode.zone/w/p2Tythup7zJTSAgiGbJ331
[12] https://spectrum-os.org/git/spectrum/commit/?id=b72a136e9ae265f61f5c6dbbd37…
[13] https://spectrum-os.org/git/spectrum/commit/?id=04060e0a59c072315b7b5106af2…
[14] https://spectrum-os.org/git/spectrum/commit/?id=969842dd0b86922383b3b5e0306…
[15] https://spectrum-os.org/git/spectrum/commit/?id=a567476380303fe0ccb0c136ad7…
[16] https://spectrum-os.org/git/spectrum/commit/?id=ab9d7bf6d7e7b4cdd77933d5799…
[17] https://spectrum-os.org/git/spectrum/commit/?id=9226197f1e9b9f17caf501b2a80…
[18] https://spectrum-os.org/git/spectrum/commit/?id=0543017145207d9ea41b6140722…
[19] https://spectrum-os.org/git/spectrum/commit/?h=32b701064a15f0045bce2d811a94…
Spectrum related upstream Nixpkgs commits
═════════════════════════════════════════
• s6-rc: 0.5.3.0 -> 0.5.3.1 (1ee8b37a851) s6: 2.11.0.1 -> 2.11.1.0
• (bd6d4a6e67f) s6-portable-utils: 2.2.3.4 -> 2.2.4.0 (a3924d70655)
• utmps: 0.1.1.0 -> 0.1.2.0 (92b74337544) skalibs: 2.11.1.0 ->
• 2.11.2.0 (5eafa6cc7a7) patchelf: clarify license (3a73bf2b6e3)
• pkgsMusl.coreutils: fix build on aarch64 (661dfd83478) patchelf: use
• 0.13.x on aarch64+musl (e22d0b49a95) patchelf_0_13: init at 0.13.1
• (3838a0a7e7e) cloud-hypervisor: 22.1 -> 23.0 (430c56976fe) busybox:
• 1.34.1 -> 1.35.0 (7d83997eb49) crosvm: 99.14468.0.0-rc1 ->
• 100.14526.0.0-rc1 (40f140ad872) crosvm.updateScript: generate
• Cargo.lock (26d66fbfa9b) squashfs-tools-ng: 1.1.3 -> 1.1.4
• (fd3f39303b4) qemu: remove redundant copy of qemu-ga (665bb90fc3f)
• rust: 1.59.0 -> 1.60.0 (6d49a350807) openssh: 8.9p1 -> 9.0p1
• (4cfdd982653) busybox: fix CVE-2022-28391 (ac60e92b15a)
Pending Spectrum related Nixpkgs PRs
════════════════════════════════════
• release.nix: build Musl native bootstrap tools (#169793)
Spectrum infra related upstream Nixpkgs commits
═══════════════════════════════════════════════
• nixos/mailman: ensure Postfix is started after Mailman (572131c6a94)
• ipxe: 1.21.1 -> unstable-2022-04-06 (7d691eadc37)
• nixos/postfix: pull setup into its own unit (fb2fa1b50fe)
• nixos/mailman: remove obsolete setting (e7c301df52e)
• nixos/mailman: improve empty webHosts error (f4a0bb8334d)