xref: /netbsd-src/doc/roadmaps/mobile (revision 298a4bfa9a348daebfe7d148081af698623dc001)
1*298a4bfaSdholland$NetBSD: mobile,v 1.1 2017/01/13 10:14:58 dholland Exp $
2*298a4bfaSdholland
3*298a4bfaSdhollandNetBSD Mobile Roadmap
4*298a4bfaSdholland=====================
5*298a4bfaSdholland
6*298a4bfaSdhollandThis roadmap is meant to cover issues specifically pertaining to
7*298a4bfaSdhollandmobile use, that is, devices that run on batteries and get carried
8*298a4bfaSdhollandaround. This includes:
9*298a4bfaSdholland   - phones
10*298a4bfaSdholland   - tablets
11*298a4bfaSdholland   - tablet PCs
12*298a4bfaSdholland   - laptops
13*298a4bfaSdhollandThe typical assumption right now is that phones and tablets have one
14*298a4bfaSdhollandsoftware stack (iOS, Android) and work one way, and laptops, including
15*298a4bfaSdhollandtablet PCs, have another software stack (Windows, MacOS, Linux) and
16*298a4bfaSdhollandwork another way. The "laptop" software stack is more or less the same
17*298a4bfaSdhollandas the "desktop" software stack, modulo some laptop-specific issues.
18*298a4bfaSdhollandThose laptop-specific issues are covered in this file; the rest of
19*298a4bfaSdhollandthat software stack is discussed in the "desktop" roadmap. This file
20*298a4bfaSdhollandalso covers the phone/tablet software stack.
21*298a4bfaSdholland
22*298a4bfaSdhollandThe following elements, projects, and goals are considered strategic
23*298a4bfaSdhollandpriorities for the project:
24*298a4bfaSdholland
25*298a4bfaSdholland 1. Tickless timers/scheduling
26*298a4bfaSdholland
27*298a4bfaSdhollandThese elements, projects, and goals are more or less long-term goals:
28*298a4bfaSdholland
29*298a4bfaSdholland 2. Power management concerns
30*298a4bfaSdholland 3. Suspending
31*298a4bfaSdholland 4. atrun considered harmful
32*298a4bfaSdholland 5. (Wireless config issues are in the "desktop" roadmap)
33*298a4bfaSdholland
34*298a4bfaSdhollandThese elements, projects, and goals are for the time being pretty much
35*298a4bfaSdhollandblue sky:
36*298a4bfaSdholland
37*298a4bfaSdholland 6. Touchscreen (phone/tablet) UI
38*298a4bfaSdholland 7. Support for phone hardware
39*298a4bfaSdholland
40*298a4bfaSdholland
41*298a4bfaSdhollandExplanations
42*298a4bfaSdholland============
43*298a4bfaSdholland
44*298a4bfaSdholland1. Tickless timers/scheduling
45*298a4bfaSdholland
46*298a4bfaSdhollandThe basic premise with a tickless system is that instead of generating
47*298a4bfaSdhollanda timer interrupt HZ times a second, one programs a high-resolution
48*298a4bfaSdhollandtimer on the fly to interrupt the next time something needs to happen.
49*298a4bfaSdhollandThis can substantially reduce the number of timer interrupts taken,
50*298a4bfaSdhollandand also importantly it avoids waking the system up regularly when
51*298a4bfaSdhollandotherwise idle and reduces power consumption and heating.
52*298a4bfaSdholland
53*298a4bfaSdhollandThere has been a fair amount of talk about this but so far no real
54*298a4bfaSdhollandaction.
55*298a4bfaSdholland
56*298a4bfaSdholland  - As of January 2017 nobody is known to be working on this.
57*298a4bfaSdholland  - There is currently no clear timeframe or release target.
58*298a4bfaSdholland  - Contact: ? (XXX)
59*298a4bfaSdholland
60*298a4bfaSdholland
61*298a4bfaSdholland2. Power management concerns
62*298a4bfaSdholland
63*298a4bfaSdhollandNetBSD's power management infrastructure is fairly lacking. We don't
64*298a4bfaSdhollandhave good CPU clock rate throttling, we mostly don't have the ability
65*298a4bfaSdhollandto power down idle devices, and we don't have a configuration and
66*298a4bfaSdhollandcontrol setup to manage it either. On x86 we also don't support a
67*298a4bfaSdhollandnumber of important ACPI sleep/idle states.
68*298a4bfaSdholland
69*298a4bfaSdhollandAt the moment there isn't even a good inventory of what needs to be
70*298a4bfaSdhollanddone in this department. Someone please write it and put it here.
71*298a4bfaSdholland
72*298a4bfaSdholland  - As of January 2017 nobody is known to be working on this.
73*298a4bfaSdholland  - There is currently no clear timeframe or release target.
74*298a4bfaSdholland  - Contact: ? (XXX)
75*298a4bfaSdholland
76*298a4bfaSdholland
77*298a4bfaSdholland3. Suspending
78*298a4bfaSdholland
79*298a4bfaSdhollandCurrently suspending mostly doesn't work, and the chances of being
80*298a4bfaSdhollandable to suspend any given laptop model successfully are low until
81*298a4bfaSdhollandsomeone using it gets annoyed enough to sit down and make it behave.
82*298a4bfaSdholland
83*298a4bfaSdhollandWe need to fix this, both by adding suspend hooks to drivers that are
84*298a4bfaSdhollandmissing them and also (ideally) by coming up with a better way to cope
85*298a4bfaSdhollandwith drivers that don't know how to suspend.
86*298a4bfaSdholland
87*298a4bfaSdholland  - As of January 2017 nobody is known to be specifically working on
88*298a4bfaSdholland    this, although work on individual drivers occurs sporadically.
89*298a4bfaSdholland  - There is currently no clear timeframe or release target.
90*298a4bfaSdholland  - Contact: ? (XXX)
91*298a4bfaSdholland
92*298a4bfaSdholland
93*298a4bfaSdholland4. atrun considered harmful
94*298a4bfaSdholland
95*298a4bfaSdhollandThere are a number of things on the system that unnecessarily wake up
96*298a4bfaSdhollandand take cpu time and power on a regular basis. One of the big
97*298a4bfaSdhollandoffenders is atrun -- it should be changed either to be a daemon that
98*298a4bfaSdhollandwakes up only when it has a job to run, integrated into cron to the
99*298a4bfaSdhollandsame end, or changed around in some other similar fashion.
100*298a4bfaSdholland
101*298a4bfaSdhollandOne can always turn atrun off, but there's no particular reason that
102*298a4bfaSdhollandat(1) functionality should be unavailable on laptops.
103*298a4bfaSdholland
104*298a4bfaSdholland  - As of January 2017 nobody is known to be specifically working on
105*298a4bfaSdholland    this, although work on individual drivers occurs sporadically.
106*298a4bfaSdholland  - There is currently no clear timeframe or release target.
107*298a4bfaSdholland  - Contact: ? (XXX)
108*298a4bfaSdholland
109*298a4bfaSdholland
110*298a4bfaSdholland6. Touchscreen (phone/tablet) UI
111*298a4bfaSdholland
112*298a4bfaSdhollandWe'd rather like to be able to run on phones, and that means having a
113*298a4bfaSdhollandUI suitable for a phone -- a shell isn't going to cut it, and even a
114*298a4bfaSdhollandshell coupled with a keyboard app isn't really the ticket.
115*298a4bfaSdholland
116*298a4bfaSdhollandThis has many of the same kinds of issues as desktop software. Some of
117*298a4bfaSdhollandthe specific issues are different; e.g. location handling is a lot
118*298a4bfaSdhollandmore critical for phones than for desktops and even laptops.
119*298a4bfaSdholland
120*298a4bfaSdhollandWhile we don't currently run on any phone platforms (see below)
121*298a4bfaSdhollandthere's nothing stopping working on this using older PDA/palmtop
122*298a4bfaSdhollandhardware like hpcarm.
123*298a4bfaSdholland
124*298a4bfaSdholland
125*298a4bfaSdholland7. Support for phone hardware
126*298a4bfaSdholland
127*298a4bfaSdhollandWe don't currently support any phone hardware platforms at all. It
128*298a4bfaSdhollandwould be good to. Among other things this requires finishing arm64
129*298a4bfaSdhollandsupport, but there's also lot of drivers to write.
130*298a4bfaSdholland
131