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