<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Converted from Wiki Creole 1.0</title>
</head>
<body>
<p>Porting Sugar to the NetworkManager 0.9 API and enabling new
use cases (including connecting to networks with hidden SSIDs)
requires some design changes in both the Neighborhood and the
Frame. To get everyone on the same page, I will first give an
overview of the NetworkManager API and list the (new)
requirements. The suggested design changes and open questions will
be discussed in detail during the upcoming Design Team meeting.</p>
<h2>NM 0.9 API</h2>
<p>Types of objects:</p>
<ul>
<li>Devices: Wired, Wireless, Modem, Bluetooth (DUN/PAN), OlpcMesh,
WiMax</li>
<li>Access Points (Wireless), NSPs (WiMax)</li>
<li>Settings</li>
<li>Active Connections</li>
<li>VPN Connections</li>
<li>VPN Plugins</li>
</ul>
<p>Activating a connection requires:</p>
<ul>
<li>a connection (setting?)</li>
<li>a device (except for VPN)</li>
<li>for wifi: access point (can be chosen automatically)</li>
<li>for VPN: path of active connection ("base" connection)</li>
</ul>
<p>Global states:</p>
<ul>
<li>unknown</li>
<li>no connectivity (asleep, disconnected, disconnecting)</li>
<li>local, site, global connectivity</li>
</ul>
<p>Devices can be disconnected; no further automatic connection
activation will happen for this specific device.</p>
<p>VPN connections can be disconnected, regular connections can be
deactivated.</p>
<p>Wifi connections can be restricted to a single BSSID (expose in
key dialog?)</p>
<p>Networking can be globally en/disabled both totally and for
classes of hardware (wifi, wwan=GSM/3G, wimax).</p>
<h2>Requirements</h2>
<ul>
<li>Ability to activate a specific connection if multiple
connections are available for a device / access point</li>
<li>Ability to prevent automatic reconnections for a device
(either via using the Disconnect() call for the device or
disabling the entire hardware class); preferably happens by
default</li>
<li>Easy access to powering down a device class</li>
<li>Ability to restrict a connection to a single AP (BSSID)</li>
</ul>
<h2>Nice to have</h2>
<ul>
<li>Ability to add a new connection for a device / AP that already
has a configured connection</li>
</ul>
<h2>Suggested design changes</h2>
<ul>
<li>AP palette (Neighborhood):</li>
<ul>
<li>If there's more than one connection, list all of them. Selecting
the connection activates it.</li>
<li>If there's at least one connection, show option
"Add another connection"</li>
</ul>
<li>Wireless device palette (Frame):</li>
<ul>
<li>New option "Connect to hidden network". Once the connection has
been successfully configured, the AP should turn up as usual
in the Neighborhood whenever it is in range (AFAIK at least).</li>
<li>New option "Disable all wireless devices" resp. "Enable
wireless devices" (wording could do with some improvement).
If there is more than one wireless device, all of them will
show the option and all of them will be powered down / up when
the option is selected.</li>
</ul>
<li>"GSM" = Modem device palette (Frame):</li>
<ul>
<li>Behave like the new AP palette: list of connections, "Add
another connection"</li>
<li>New option to disable / enable WWAN devices, like for the
wireless device palette</li>
</ul>
<li>Wired device palette (Frame):</li>
<ul>
<li>Analogous to GSM device, but no way to en/disable all wired
devices (not supported by NM)</li>
</ul>
</ul>
<h2>Potential additions</h2>
<p>If we have enough time to implement these, we could add support
for:</p>
<ul>
<li>Bluetooth (DUN/PAN)</li>
<ul>
<li>probably similar to modems ("GSM")</li>
</ul>
<li>WiMax</li>
<ul>
<li>probably similar to wireless</li>
</ul>
<li>VPN Connections</li>
<ul>
<li>would appear in the palette for any device that currently has
an active connection</li>
<li>no support for adding new VPN connections yet</li>
</ul>
</ul>
<h2>Open questions</h2>
<ul>
<li>Should we continue to show the "Connect" option for APs if
there's at most one connection configured or should we always
show a list of connections? Rename "Add another connection" to
"Add connection" if there's no connection configured yet?</li>
<li>How do we distinguish the different connections in the list?
User-chosen name? Add a way to change the name later?</li>
<li>How do we let the user configure the connection? The current
globally modal keyphrase dialog is a major usability disaster.</li>
<li>Differentiated connectivity indicators (need to investigate work
done by Peter Robinson and review previous design discussion)</li>
</ul>
</body>
</html>