Home | History | Annotate | Line # | Download | only in roadmaps
      1 $NetBSD: desktop,v 1.6 2022/01/15 19:38:05 gutteridge Exp $
      2 
      3 NetBSD Desktop Roadmap
      4 ======================
      5 
      6 This roadmap deals with desktop support. Note that "desktop support"
      7 means several quite different things:
      8    - issues pertaining to running the Windows-like Linux desktops
      9      (e.g., GNOME, KDE, MATE, Xfce, LXQt, LXDE, DeforaOS, as well as
     10      others not presently successfully packaged, like Cinnamon, Lumina,
     11      and Trinity) on NetBSD in more or less their current form;
     12    - issues pertaining to running these systems with NetBSD
     13      infrastructure, for better system integration and to avoid
     14      depending on unpopular packages like dbus and policykit;
     15    - issues specific to developer-oriented desktops;
     16    - other issues pertaining to using a NetBSD machine as one's desktop
     17      login system, regardless of the UI;
     18    - issues pertaining to running or developing a more Unix-oriented
     19      desktop environment, which is kind of blue-sky for the time being.
     20 
     21 Also, "desktop support" and "laptop support" are closely related in
     22 the sense that in the conventional wisdom laptops run more or less the
     23 same user-facing software as desktops. Additional specifically laptop-
     24 related issues, such as power management, are discussed in the
     25 "mobile" roadmap (q.v.).
     26 
     27 Furthermore, many of the above issues can be ~orthogonally divided
     28 into one of the following three broad categories:
     29 
     30    a. Providing new infrastructure for supporting facilities whose
     31       needs are reasonably well understood but are not traditionally
     32       handled by Unix and/or are not currently handled by NetBSD, or
     33       where traditional/existing support is chronically defective.
     34       Examples include font management, printing, mounting removable
     35       media, and also things like support for location services.
     36 
     37    b. Providing new infrastructure for supporting facilities whose
     38       needs are not in fact well understood. This tends to cover the
     39       domains where we don't like the GNOME/KDE/Linux tools, like
     40       dbus, as well as things that existing desktop environments fall
     41       down on entirely, like integrating with large home directory
     42       trees.
     43 
     44    c. Refactoring existing infrastructure (whether NetBSD-specific or
     45       historical Unix) to integrate new facilities and software models
     46       smoothly instead of bolting layers of crud on top of outdated
     47       structure. Examples include revisiting the assumption that
     48       logins happen on teletypes, and facing the need to restrict the
     49       access of large applications rather than giving them all the
     50       privileges of the user starting them.
     51 
     52 
     53 The following elements, projects, and goals are relatively near-term:
     54 
     55  1. Making removable media work using GNOME/KDE infrastructure
     56  2. Making wireless config work using GNOME/KDE infrastructure
     57  3. Sane font handling
     58  4. Get Eclipse running properly from pkgsrc
     59  5. Better printer management
     60  6. Work out a long-term plan for compositing, Wayland, and graphics
     61     architecture issues
     62 
     63 The following elements, projects, and goals are longer-term:
     64 
     65  7. Publish/subscribe sockets or IPC
     66  8. Better native RPC library and tools
     67  9. Native removable media handling
     68  10. Native wireless config
     69  11. User switching and secure attention key
     70  12. wscons graphics
     71 
     72 The following elements, projects, and goals are rather blue-sky so far:
     73 
     74  13. Something akin to ARexx
     75  14. A more Unix-oriented root window/desktop basis 
     76  15. Full console virtualization
     77 
     78 
     79 Explanations
     80 ============
     81 
     82 
     83  1. Making removable media work using GNOME/KDE infrastructure
     84 
     85 Ideally when you insert a USB stick it mounts automatically, like with
     86 GNOME and KDE on Linux. I believe this is not currently working. It
     87 used to depend on hal, which was always problematic and perennially
     88 broken, but hal got deprecated and I'm not sure what is even involved.
     89 (XXX: someone please clarify.)
     90 
     91 
     92  2. Making wireless config work using GNOME/KDE infrastructure
     93 
     94 Ideally it would be possible to configure your wireless networking
     95 using the GNOME/KDE/etc. tools. I believe this does not work either.
     96 (XXX: someone please clarify.)
     97 
     98 
     99  3. Sane font handling
    100 
    101 See "System-level font handling in Unix" on the wiki projects page.
    102 
    103   - As of January 2017 nobody is actively working on this.
    104   - There is currently no clear timeframe or release target.
    105   - Contact: dholland
    106 
    107 
    108  4. Get Eclipse running properly from pkgsrc
    109 
    110 As of last report Eclipse was bodgily packaged (this may not be
    111 fixable) and didn't really work (this should be). Because Eclipse is
    112 Java this depends on JDK stuff.
    113 
    114   - As of January 2017 nobody is actively working on this.
    115   - There is currently no clear timeframe or release target.
    116   - Contact: ? (XXX)
    117 
    118 
    119  5. Better printer management
    120 
    121 See "New LPR/LPD for NetBSD" on the wiki projects page.
    122 
    123   - As of January 2017 nobody is actively working on this.
    124   - There is currently no clear timeframe or release target.
    125   - Contact: dholland
    126 
    127 
    128  6. Work out a long-term plan for compositing, Wayland, and graphics
    129     architecture issues
    130 
    131 Nobody seems to have a good idea of what the way forward ought to be,
    132 so probably it would be advisable for someone to dig into the issues
    133 and report back.
    134 
    135   - As of January 2017 nobody is actively working on this.
    136   - There is currently no clear timeframe or release target.
    137   - Contact: ? (XXX)
    138 
    139 
    140  7. Publish/subscribe sockets or IPC
    141 
    142 It's clear that even though traditionally Unix has next to no such
    143 facilities, a "modern" desktop system requires the ability to post
    144 notices about from one component to another. (Probably the closest
    145 thing traditional Unix ever had along these lines was comsat(8).)
    146 
    147 dholland observed some time back that there isn't really a problem if
    148 what you want to do is contact a well-known service: we have inetd for
    149 that, and while inetd could use some polishing before being deployed
    150 for such purposes that isn't a very big deal. The interesting case is
    151 multicast: when you want to send a notice to anyone who happens to be
    152 around and interested in seeing notices of some particular type,
    153 without needing to know who they are.
    154 
    155 dbus does this badly, both because the implementation is poor and
    156 because the basic concept of a "message bus" is flawed. A better model
    157 is publish-subscribe channels: a message sent ("published") on the
    158 channel is delivered to all listeners ("subscribers"), and neither the
    159 publishers nor the subscribers need to know about one another, only
    160 about the existence of the channel... which becomes effectively a well
    161 known service.
    162 
    163 The original (very tentative) plan was to wedge publish/subscribe into
    164 AF_UNIX sockets, because AF_UNIX sockets already satisfy several
    165 important criteria: (1) they have a large and flexible namespace,
    166 namely the whole file system namespace; (2) they support credential
    167 reporting; (3) the socket/bind/listen/connect API (probably) provides
    168 enough flexibility to handle the connection model; and (4) they
    169 already exist. However, nobody has yet looked into this very closely
    170 and the interface may not turn out to be very suitable after all.
    171 
    172 Note that (like anything of this sort) the naming scheme for the
    173 channels is critical, as is the development of sane protocols to run
    174 over them. Note that the publish/subscribe sockets should be transport
    175 only; protocols should be a higher-level issue. (This is one of a
    176 number of things dbus gets wrong.)
    177 
    178 One of the other things this infrastructure should provide is a decent
    179 way to post notices (e.g. for media changes, device insertions, and so
    180 on) out of the kernel, which has historically always been a problem in
    181 Unix.
    182 
    183 This item is sometimes also referred to as "dbus avoidance" -
    184 theoretically one could avoid dbus with some other architecture too,
    185 but nothing much else has been proposed.
    186 
    187 An example application we already have in base is the notices that
    188 sshd sends to blacklistd. Currently this makes a mess if sshd is
    189 running and blacklistd isn't.
    190 
    191   - As of January 2017 nobody is actively working on this.
    192   - There is currently no timeframe or release target.
    193   - Contact: dholland
    194 
    195 
    196  8. Better native RPC library and tools
    197 
    198 Another thing dbus doesn't do very well: it's an IPC/RPC library. In
    199 the long run to support existing desktops we probably need
    200 dbus-compatible IPC tools. In the short run though we'd do well to
    201 pick or develop something of our own, and (finally) deprecate SunRPC.
    202 
    203   - As of January 2017 nobody is actively working on this.
    204   - There is currently no timeframe or release target.
    205   - Contact: dholland or ? (XXX)
    206 
    207 
    208  9. Native removable media handling
    209 
    210 Given publish/subscribe channels, implement proper native support for
    211 mounting removable media upon insertion. This should integrate with
    212 GNOME/KDE/etc. but also work natively; e.g. provided the right
    213 services are running, it should work even when running on a text-only
    214 console.
    215 
    216 
    217  10. Native wireless config
    218 
    219 Similarly, implement a native wireless config scheme. While we
    220 currently have wpa_cli, it lacks a certain something...
    221 
    222 
    223  11. User switching and secure attention key
    224 
    225 See the project page on the wiki.
    226 
    227   - As of January 2017 nobody is actively working on this.
    228   - There is currently no timeframe or release target.
    229   - Contact: dholland or ? (XXX)
    230 
    231 
    232  12. wscons graphics
    233 
    234 There's been talk on and off for some time about supporting cairo or
    235 qt-embedded or similar things directly on the console. This is
    236 probably a good infrastructure step for any UI scheme that doesn't
    237 involve an X server, such as potentially phones or tablets. (See the
    238 "mobile" roadmap for more on that.)
    239 
    240 
    241  13. Something akin to ARexx
    242 
    243 We have a number of veteran Amiga users and whenever there's a
    244 discussion of dbus usually ARexx eventually comes up. It would be
    245 great to have something like ARexx for talking to/scripting/
    246 controlling applications. But given that GNOME and KDE and their
    247 imitations are all based on Windows and that the state of the art
    248 seems to be dbus, if we want this we're going to have to design and
    249 build it out ourselves. It would be a good thing to do.
    250 
    251 Just remember that the good parts of ARexx didn't include the Rexx
    252 language. :-)
    253 
    254   - As of January 2017 nobody is actively working on this.
    255   - There is currently no timeframe or release target.
    256   - Contact: mlelstv? (XXX)
    257 
    258 
    259  14. A more Unix-oriented root window/desktop basis
    260 
    261 All the existing desktops (apart from OS X, which is NextStep, but not
    262 all that much different either) are based on Windows. They share a
    263 number of properties that are not consistent with the Unix philosophy
    264 or design model.
    265 
    266 First, Unix is about files, and like it or not, files in Unix are
    267 organized in a hierarchical namespace. The Windows-like desktops, like
    268 Windows, provide a file manager as an afterthought and the desktop
    269 workspace itself has no notion of current directory, no notion of
    270 directory navigation, and only limited notions of interacting with
    271 files at all. In fact, the things that show up on the desktop
    272 typically live in a reserved directory that the desktop software
    273 insists on polluting your homedir with. A Unix desktop should have
    274 directory navigation integrated with the root window somehow -- there
    275 are many possible ways to do this, and virtually any choice would be
    276 better than what you get from GNOME and KDE. It shouldn't be necessary
    277 to open a shell (or a "file manager") to work effectively with a large
    278 source tree.
    279 
    280 Second, Unix is also about text, and existing desktop software is not.
    281 While people tend to think of GUIs and text as mutually exclusive,
    282 this is not actually the case: a GUI provides a lot of ways to place
    283 and format text that can't be done in text mode (let alone on a
    284 teletype) -- a good start, for example, might be to display the first
    285 few lines of a file when you roll the mouse over it, but one can go a
    286 lot further than that.
    287 
    288 Third, Unix is supposed to be about pluggable components. A Unix
    289 desktop should have functionality for plugging components together
    290 graphically, whether those components are traditional shell tools or
    291 "services" or "objects" or more complex things. No existing desktop
    292 has anything like this, certainly not as native functionality.
    293 
    294 Anything like this is going to have to be designed and written, since
    295 it's clearly not going to be forthcoming from the Linux desktop folks.
    296 (Note that while it would be a big effort it would also be a great
    297 publicity lever...)
    298 
    299 
    300  15. Full console virtualization
    301 
    302 The Unix notion of a login session is stuck in the 70s, where you log
    303 in on a glass teletype and that's all you get. The consoles of modern
    304 computers have assorted other widgets as well: pointing devices, game
    305 controllers, cameras, scanners, removable storage, hotkeys, audio
    306 playback and record... not to mention graphics and video. Right now we
    307 have a bodgy scheme for chowning or chmod'ing devices on console
    308 login; in addition to potentially causing problems (what happens if
    309 one user leaves a process behind that's recording audio, then logs out
    310 and walks away?) this doesn't work well with multiple users logged in
    311 at once on the console. It also doesn't work at all with remote logins.
    312 
    313 In an ideal world, all your console hardware would be tied to your
    314 console login session, and virtualized appropriately so that multiple
    315 console logins each get suitably arbitrated access. Furthermore, it
    316 should be possible to forward your console hardware to a remote login
    317 session -- for example if you have a usb stick you should be able to
    318 log in somewhere and mount it there.
    319 
    320 Getting to this requires refactoring the way we think about logins and
    321 login devices, but it's high time.
    322