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