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