Thicket data repository for the EEG
at main 7.5 kB view raw
1{ 2 "id": "https://ryan.freumh.org/2024-05-06.html", 3 "title": "6 May 2024", 4 "link": "https://ryan.freumh.org/2024-05-06.html", 5 "updated": "2024-05-06T00:00:00", 6 "published": "2024-05-06T00:00:00", 7 "summary": "<div>\n <span> Previous: <a href=\"2024-04-29.html\">29 Apr 2024</a> </span>\n <span> Next: <a href=\"2024-05-13.html\">13 May 2024</a> </span>\n </div>\n \n \n\n <p><span>My Tarides contract is progressing nicely, and we\nnow have Opam setting an environment built from Nix to provide external\ndependencies. I’ve also indexed all of Nixpkgs history in order to do\nversion solving across it.</span></p>\n<p><span>Spoke to Roy about a possible Part II project, and\nwrote another proposal on an ‘OCaml Wayland Compositor’; something I’ve\nbeen meaning to do for a while but have yet to find the time.</span></p>\n<blockquote>\n<p><span>Wayland <a href=\"#fn1\">1</a> is a communications\nprotocol for next-generation display servers used in Unix-like systems\nwhich has been adopted as the default display server by Linux\ndistributions including Fedora with KDE, and Ubuntu and Debian with\nGNOME. It aims to replace the venerable X display server with a modern\nalternative. X leaves logic such as window management to application\nsoftware, which has allowed the proliferation of different approaches.\nWayland, however, centralises this logic in the ‘compositor’, which\nassumes both display server and window manager roles <a href=\"#fn2\">2</a>.</span></p>\n<p><span>Libraries such as wlroots, libweston, and ‘small\nWayland compositor’, exist to provide a basis on which to build a\nWayland compositor. Much of the Wayland ecosystem is written in C, but\nmodern memory-safe, type-safe, composable systems programming languages\nlike OCaml offer tempting alternatives. This project proposes writing a\nWayland compositor in OCaml, which opens up interesting opportunities\nfor writing custom window management logic similar to how xmonad does\nfor X <a href=\"#fn3\">3</a> rather than relying on IPC\nmechanisms used in state-of-the-art systems <a href=\"#fn4\">4</a>.</span></p>\n<p><span>This project is suitable for an ambitious student\nwith a keen interest in graphics, communication protocols, and operating\nsystems. Starting points include completing OCaml wlroots bindings <a href=\"#fn5\">5</a> enough to implement an OCaml version\nof the tinywl compositor <a href=\"#fn6\">6</a>, and the pure OCaml implementation\nof the Wayland protocol <a href=\"#fn7\">7</a>.</span></p>\n</blockquote>\n\n\n\n\n<ol>\n<li><p><span><a href=\"https://wayland.freedesktop.org/\">https://wayland.freedesktop.org/</a></span><a href=\"#fnref1\">↩︎</a></p></li>\n<li><p><span><a href=\"https://wayland.freedesktop.org/faq.html#heading_toc_j_11\">https://wayland.freedesktop.org/faq.html#heading_toc_j_11</a></span><a href=\"#fnref2\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/xmonad/xmonad\">https://github.com/xmonad/xmonad</a></span><a href=\"#fnref3\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/swaywm/sway/blob/master/sway/sway-ipc.7.scd\">https://github.com/swaywm/sway/blob/master/sway/sway-ipc.7.scd</a></span><a href=\"#fnref4\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/swaywm/ocaml-wlroots\">https://github.com/swaywm/ocaml-wlroots</a></span><a href=\"#fnref5\">↩︎</a></p></li>\n<li><p><span><a href=\"https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c\">https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c</a></span><a href=\"#fnref6\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/talex5/ocaml-wayland\">https://github.com/talex5/ocaml-wayland</a></span><a href=\"#fnref7\">↩︎</a></p></li>\n</ol>", 8 "content": "<div>\n <span> Previous: <a href=\"2024-04-29.html\">29 Apr 2024</a> </span>\n <span> Next: <a href=\"2024-05-13.html\">13 May 2024</a> </span>\n </div>\n \n \n\n <p><span>My Tarides contract is progressing nicely, and we\nnow have Opam setting an environment built from Nix to provide external\ndependencies. I’ve also indexed all of Nixpkgs history in order to do\nversion solving across it.</span></p>\n<p><span>Spoke to Roy about a possible Part II project, and\nwrote another proposal on an ‘OCaml Wayland Compositor’; something I’ve\nbeen meaning to do for a while but have yet to find the time.</span></p>\n<blockquote>\n<p><span>Wayland <a href=\"#fn1\">1</a> is a communications\nprotocol for next-generation display servers used in Unix-like systems\nwhich has been adopted as the default display server by Linux\ndistributions including Fedora with KDE, and Ubuntu and Debian with\nGNOME. It aims to replace the venerable X display server with a modern\nalternative. X leaves logic such as window management to application\nsoftware, which has allowed the proliferation of different approaches.\nWayland, however, centralises this logic in the ‘compositor’, which\nassumes both display server and window manager roles <a href=\"#fn2\">2</a>.</span></p>\n<p><span>Libraries such as wlroots, libweston, and ‘small\nWayland compositor’, exist to provide a basis on which to build a\nWayland compositor. Much of the Wayland ecosystem is written in C, but\nmodern memory-safe, type-safe, composable systems programming languages\nlike OCaml offer tempting alternatives. This project proposes writing a\nWayland compositor in OCaml, which opens up interesting opportunities\nfor writing custom window management logic similar to how xmonad does\nfor X <a href=\"#fn3\">3</a> rather than relying on IPC\nmechanisms used in state-of-the-art systems <a href=\"#fn4\">4</a>.</span></p>\n<p><span>This project is suitable for an ambitious student\nwith a keen interest in graphics, communication protocols, and operating\nsystems. Starting points include completing OCaml wlroots bindings <a href=\"#fn5\">5</a> enough to implement an OCaml version\nof the tinywl compositor <a href=\"#fn6\">6</a>, and the pure OCaml implementation\nof the Wayland protocol <a href=\"#fn7\">7</a>.</span></p>\n</blockquote>\n\n\n\n\n<ol>\n<li><p><span><a href=\"https://wayland.freedesktop.org/\">https://wayland.freedesktop.org/</a></span><a href=\"#fnref1\">↩︎</a></p></li>\n<li><p><span><a href=\"https://wayland.freedesktop.org/faq.html#heading_toc_j_11\">https://wayland.freedesktop.org/faq.html#heading_toc_j_11</a></span><a href=\"#fnref2\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/xmonad/xmonad\">https://github.com/xmonad/xmonad</a></span><a href=\"#fnref3\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/swaywm/sway/blob/master/sway/sway-ipc.7.scd\">https://github.com/swaywm/sway/blob/master/sway/sway-ipc.7.scd</a></span><a href=\"#fnref4\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/swaywm/ocaml-wlroots\">https://github.com/swaywm/ocaml-wlroots</a></span><a href=\"#fnref5\">↩︎</a></p></li>\n<li><p><span><a href=\"https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c\">https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c</a></span><a href=\"#fnref6\">↩︎</a></p></li>\n<li><p><span><a href=\"https://github.com/talex5/ocaml-wayland\">https://github.com/talex5/ocaml-wayland</a></span><a href=\"#fnref7\">↩︎</a></p></li>\n</ol>", 9 "content_type": "html", 10 "categories": [], 11 "source": "https://ryan.freumh.org/atom.xml" 12}