End User Requirements Brainstorm
At some point, we have to take a hard look at what we can actually do in a 1.0 release. The first step toward that goal is to make a list of potential features. That's what this page is for.
Leaving aside the how for now, we can make a list of features that we can consider individually in other places. Once we have a large list of features, we can start trying to puzzle out which ones are feasible and which ones are too difficult/esoteric for this project right now.
Please add to the list. We'll organize it into more formal requirements later.
- Distributed backup / backup to external media (e.g. usb drive)
- The user wants to backup the content of its freedombox to be able to recover from a software or hardware failure
Automated recovery (from the backups and/or from prior FB's hard drive) when plugging in a new FreedomBox replacing a dead one
Automated recovery (from the backups) when plugging in a blank disk drive into a FreedomBox replacing one that failed.
- Distributed social networking
Secure encrypted tunnels to only your friends (as in Freenet), avoiding non-friends whose incentives when pressured are to betray you.
- Access to broader social networking via those tunnels, so non-friends of yours don't know who you are or where you are and can't see your traffic or stored data.
- Secure instant messaging and VoIP
- The user wants to IM/chat/call with friends without leaving logs of the communication to any third party
- Mesh networking
- The user wants to connect to neighboring FB without going through an ISP
- The user wants to access internet through the ISP connection of a FB in the neighborhood
- Able to use wireless AND wired Ethernet connections to neighbors; running a cat5 cable to the next apartment is much more reliable than wifi and scales much better.
- Routing, wireless and wired
- VPN/Proxy capabilities
The user wants to connect to the FreedomBox from an unsafe network (hotel, conference, wifi hotspot, hostile country) and route its traffic through his home network connection.
- The user wants to bounce his IRC connections through an encrypted tunnel
- OTR (Off The Record) encryption for IRC and other chat protocols
- Encrypted chat directly among a group with no central server (unlike IRC)
- Web Proxying with collaborative ad filtering
- Email server
- The user wants to store his emails in a private place
- The user wants to access his emails from his pc / his phone / a random internet kiosk
- Collaborative spam filtering
- Simple text editor
- The same interface should be used to send a mail, edit a blog article
- Only one simple way to emphasize text
- Shortcuts to add an url to a file stored on the FB, to an OSM based map or to a contact card.
- Location manager
- use collaborative free licensed maps easely
- manage locations like web browser bookmarks
- sync favorite locations with any GPS
- insert maps to e-mail and blog from the text editor
may look like http://cartosm.eu/
- File Server / Sharing
- Plug in, or include in box, a USB or eSATA hard drive for cheap reliable storage that can be erased securely (unlike flash memories) when you want to delete keys, files that could get you in trouble that you wish you'd never had, etc.
- Serve up FB local storage to the LAN using CIFS, NFS, AFS, etc. Cheap and reliable NAS (Network Attached Storage).
- Serve up FB local storage to the WAN selectively or indiscriminately using HTTP, FTP, CIFS, NFS, AFS, etc.
- Allow your laptop, tablet or phone to access your whole file store and media, no matter whether you're at home or out on the Internet anywhere.
Encryption on local media to protect against loss if stolen or seized. Needs design work to make it easy for you to access it all, but hard for anyone you don't trust, even if they have physical access to the box. Perhaps even if they do a "black bag job" and break into your house and tap or replace your FreedomBox, then wait for you to later connect to it and unlock its data for your own use. Your common methods of access should notify you that it's been tampered with in such a case.
- Media server for LAN (using popular protocols, e.g. DLNA, iTunes) and for WAN (web streaming or better), so you can keep all your purchased or freely downloaded media in the FB and access it anywhere.
- Sync with popular portable music storage/players/phones/etc.
- Sync music/media collections with family or friends automatically, for backup and fast local access, tagged to know what media belongs to who.
- Media player - Stream Audio to the web client from users' FB or from friends' FB
- The user wants to share selected (large) files with selected friends
- Identify CC or freeware license if any so that the user can decide to share or not
- Option to automatically share publicly anything you're storing that comes with a license that allows it.
- Manage permissions for sharing only with authorized groups of people
- Static (perhaps generated) web publishing
- Absorb photos/videos from cameras or phones automatically, store them.
- Both via local USB, LAN, and over-the-air via the Internet (e.g. as photos are taken, they can be uploaded over a secure link, stored securely, and immediately seen by those with access).
- Publish photos/videos to selected friends, family, etc, with easy and intuitive access controls, over either Web interface or via better FB-specific access for family/friends who have a FB. Sync photos/videos automatically onto family/friends' FB's as desired.
- The user wants to publish content to a large audience
- Push to Amazon S3 or other cheap, stable web host to absorb traffic
Auto rsync / s3sync from a local directory to remote host, like dumpcarton
- Onion-routed Torrents
- Share same files on TOR or other P2P network
- Reverse web proxy
- Photo sharing
- Browser sync - Bookmarks, history, forms, passwords
- Print Server
- Dead simple UX
- RSS Reader
- Anonymous internet (TOR node)
- The user wants to hide from his ISP what he is doing on the internet
- The user wants to hide from a website the address that he is really connecting from
- Eternity Server
- OpenID-like identity/role/auth verification system
- Crypto Currency wallet (bitcoin or the like)
- Tools for managing (USB) attached sensors
- e.g., for physical security of the box
Eventually on hardware specifically designed to run the FreedomBox software
- Collaborative document or text editing (a la gobby) with an emacs mode to use it
- Friend request-approval mechanism and access control system
- User accounts for my friends/family so people can *use* an FB without owning one
- Integration so I don't need to make a username/email for each type of service on the machine for each user
- Feeds of user/friend activity/messages, both public and access controlled
- Event announcement and calendaring, both public and access controlled
- Shared calendaring with friends on FBs and perhaps users of other popular calendar solutions