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