OpenBSD Journal

g2k16 Hackathon Report: Matthieu Herrb on xenodm

Contributed by rueda on from the It is an xdm dept.

Matthieu Herrb supplied our next g2k16 report:

I arrived in Cambridge on Tuesday afternoon, after a nice 9h train trip from Toulouse through Paris and the tunnel. I started the hackathon by upgrading a number of packages in Xenocara. The most noteworthy being the XCB (X protocol C-language Bindings) suite updated to the most recent 1.12 version.

After a short break Wednesday afternoon spend on a punt on Cambridge's river, I spent most of the remaining time of the hackathon working on a stripped down version of xdm(1), the X display manager. 25 years ago, when X started, workstations were still expansive and the market had a number of so called "mini" computers (small mainframes) with terminal attached to them. Graphical terminals, capable of running the X window system where common. At that time xdm's main role was to manage connections from these remote terminals using the X Display Manager Control Protocol (XDMCP).

Time has passed by and nowadays, xdm(1) is mainly used just to manage the local X server running on laptop or desktop machines. Moreover XDCMP's security is weak (based on DES) and doesn't support IPv6 well. So it's time to retire it. So Xenocara is getting a "new" X Display Manager which will be called "xenodm".

Xenodm is based on xdm source code. I've removed all support for XDMCP and other old cruft like ugly games with signals and setjmp(3)/longjmp(3) to set timeouts on potentially blocking operations. Another goal was to un-tangle the ifdef maze that supported various flavors of authentication methods, to only keep the BSDauth code used in OpenBSD.

During g2k16 the code for xenodm went from 18020 lines (current /usr/xenocara/app/xdm/) to 7659 lines (current xenodm sources, not yet in the xenocara tree). These cleanups have lead to a much more readable code base, allowing to follow the code flow and the needs of the local display manager. They make adding better privilege separation and pledge(2) support for better security possible now.

As soon as I have a bit more time to finish a first really usable version, it will replace xdm (which will be moved to ports) in /usr/xenocara/app/.

Thanks to Gemma, Anil and the OpenBSD foundation for another great hackathon !

Thanks, Matthieu, for the report (and for xenodm!).

(Comments are closed)


Comments
  1. By Anonymous Coward (217.84.148.247) on

    Wow really cool. As it happens, I've just been toying with xdm configurations trying to make it look, ahem, less dated. It's actually possible to achieve quite a few neat things just with what's in base and without any need for additional packages or ports. But considering how the thing is set up with all those scripts, any improvement in priviledge separation or pledge(2) support are most highly welcome!

    Looking forward to xenodm.

    Thanks for all the great work guys!

  2. By Anonymous Cowboy (176.10.104.240) on

    >During g2k16 the code for xenodm went from 18020 lines (current /usr/xenocara/app/xdm/) to 7659 lines (current xenodm sources, not yet in the xenocara tree).

    That's an impressive level of productivity, reducing code by 10639 lines: over 57%.

    What does modern-day xdm(1) do anyway, other than just display a login screen?

    Comments
    1. By Anonymous Coward (176.10.104.240) on

      > >During g2k16 the code for xenodm went from 18020 lines (current /usr/xenocara/app/xdm/) to 7659 lines (current xenodm sources, not yet in the xenocara tree).
      >
      > That's an impressive level of productivity, reducing code by 10639 lines: over 57%.
      >
      > What does modern-day xdm(1) do anyway, other than just display a login screen?

      Epic tyhpoo faille. Meant to say "10361" (still over 57%, and still impressive.)

Latest Articles

Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]