= Introduction = This is a proposal for the R1 Networks preferences application. Our goal is to create a consistent and intuitive user interface which makes it as easy as possible to join an existing network. Our UI must make even non-technical users feel confident to configure their network by hand without the help of ISP-provided software. At the same time, we need to offer features required by mobile users. Since Haiku's focus is the desktop market we don't offer server settings in the standard preferences. Server settings should only be available via the command line and settings files or 3rd-party applications. = Conceptual model = == Networks == Every network interface is displayed as a "network" of a certain "type". Some network types (e.g.: PPP, VPN) require creating a new network object. Others (e.g., Ethernet, WiFi) are always available and can't be removed. Wireless networks are grouped per device. == Locations and sharing of preferences == Locations facilitate saving and quickly recalling a set of network preferences. This is useful for mobile users who use their computer at different places. A network can be shared between all locations by adding it to the system-defined "Global" location. Otherwise, it will only exist in one single, custom location. Hardware devices that are represented as a network (e.g.: Ethernet, WiFi) can only be part of the "Global" location. == Customization of preferences == Custom locations can locally customize (override) a network's global configuration, but some network types only allow for customizing a subset of the global preferences. For example, phone line networks don't allow for customizing the login information. You can't selectively customize individual values, but only all customizable values or none. = User interface = == Requirements == * manage device configurations * IPv4 and IPv6 preferences * support for locations * settings are applied immediately where it makes sense * simple and consistent UI == Base == The application name and window title is "`Networks`". When started, the application window looks like this: {{{ Location: [Home \/] Computer name: [laptop_______] Connect on demand: [My ISP \/] (Only modems and VPNs) |- Networks ------------| |- Network Preferences ---------------------------------------------| |Ethernet (Connected)| | [ ] Customize preferences for this location |Ethernet 2 (No Cable)| | |My ISP (Disconnected)| | Name: Ethernet |Wireless (Establishing)| | Status: Connected |Work VPN (Disconnec...)| | | | | ....network-specific....see below.... | | | | | | | | | | | | | | | | | | | | | |-----------------------| |-------------------------------------------------------------------| Add: [Network \/] Move to: [Location \/] [Remove] [x] Show networks icon in Deskbar [Revert All] }}} Every entry in the "`Networks`" list on the left will have little icons in order to make it easier to distinguish networks by type. Maybe it could even be used to indicate the connection status. When you click on "`Add:`" you get a simple pop-up which allows choosing the network type. The network is added to the currently selected location. The network types should have a non-technical and a technical name, where possible. For example: "Phone line (PPP)" or "Broadband (PPPoE)". "`Move to:`" lists all available locations (the current one is grayed-out). The "Global" location is at the top, separated from the others. The network name can only be changed in the "Global" location. The "`[ ] Customize preferences for this location`" checkbox is only shown in custom locations. Values that can't be customized (or all values if you don't customize the preferences) are displayed as simple text instead of grayed-out control. If some values can't be customized a note is displayed below the checkbox: '`Note: Some values can only be changed in the "Global" location.`'. Locations can override "`Connect on demand`". In custom locations there is an entry "`Same as Global`". The active location is only changed when the preferences application is closed. All text controls displaying IP addresses have a context menu with two entries: "`Copy`" and "`Open in Browser`". === Base (Alternative) === An alternative to the base UI could be: {{{ Location: [Home \/] Computer name: [laptop_______] Connect on demand: [My ISP \/] (Only modems and VPNs) |- Networks ----------------------------------------------| |Ethernet | Automatic configuration successful. |Ethernet 2 | No Cable |My ISP | Disconnected |Wireless | Establishing |Work VPN | Disconnected | | | | |---------------------------------------------------------| Add: [Network \/] [Edit] Move to: [Location \/] [Remove] [x] Show networks icon in Deskbar [Revert All] }}} When you click on "`[Edit]`" the window displays the network's preferences: {{{ Location: [Home \/] Computer name: [laptop_______] Connect on demand: [My ISP \/] (Only modems and VPNs) [Back to Networks] |- Ethernet: Network Preferences -------------------------| | [ ] Customize preferences for this location | | Name: Ethernet | Status: Connected | | ....network-specific....see below.... | | | | | | | |---------------------------------------------------------| [Revert All] }}} == Ethernet == This network type is always visible (one entry for each card) and cannot be removed. {{{ |- [x] Automatic IPv4 Configuration ---------------------| | IP address: Detecting... | Subnet mask: | Router: | [Configure Router...] |--------------------------------------------------------| |- [x] Automatic IPv6 Configuration ---------------------| | IP address: 0123:4567:89AB:CDEF:0123:4567:89AB:CDEF | Prefix length: 64 | Router: 2345:4567:89AB:CDEF:0123:4567:89AB:CDEF | [Configure Router...] |--------------------------------------------------------| DNS servers: [________________] (Optional, IPv4 and IPv6) Hardware address (MAC): 01:23:45:67:89:AB }}} When choosing automatic configuration the text fields are replaced with status information. The "`[Configure Router...]`" button allows for directly visiting the router configuration page with your browser. It is only enabled if Haiku detects that HTTP is available on the router's port 80. All preferences can be customized. == Mobility (IPv6) == Features: * prefix for automatic configuration * full router IP for manual configuration Locations: * override whether enabled or disabled == Phone line (PPP) == Locations: * you can only override "`Phone number`" and "`Wait for dial tone`" == Broadband (PPPoE) == {{{ Username: [_____________] Password: [_____________] [x] Save password Device: [Ethernet 2 \/] Service: [_____________] (Optional) [ ] Stay always connected [ ] Use encrypted authentication (not supported everywhere) Status: Connected since 4 days, 1:32:18 [Disconnect] }}} Locations can only override "`Service`". == VPN - all types (IPsec, L2TP, PPTP, etc.) == Locations: * you can only override "Server" == Wireless == This network type is always visible (one entry for each card) and cannot be removed. {{{ |- Wireless Networks ------------------------------------------------| | Home (Connected) Signal: +++++ | University Signal: ++++ | Someone's WiFi Signal: + | Work Out of reach | Airport Berlin Out of reach | Some other network Out of reach | Some other airport Disabled |--------------------------------------------------------------------| [Add Other Network...] [Edit...] [Remove Customization] [Connect] Status: Connected to "Home" at 54Mbit/s (strong signal) IP address: 192.168.1.101 Router: 192.168.1.1 [Configure Router...] Hardware address (MAC): 01:23:45:67:89:AB [Disable Adapter] }}} All networks you ever connected to are always visible in the networks list, but when not reachable they are placed at the bottom and marked with "Out of reach". Use "`[Edit...]`" to change whether the network should be automatically connected to (can be overridden per location) and configure basic network preferences.