briar issueshttps://code.briarproject.org/briar/briar/-/issues2022-11-02T18:28:35Zhttps://code.briarproject.org/briar/briar/-/issues/44Reduce battery consumption2022-11-02T18:28:35ZakwizgranReduce battery consumptionSeveral users reported that Briar used an excessive amount of battery power. They identified it as the single most important issue that would prevent them from regularly using the app.
Polling for connections to contacts is probably the...Several users reported that Briar used an excessive amount of battery power. They identified it as the single most important issue that would prevent them from regularly using the app.
Polling for connections to contacts is probably the biggest single factor here.https://code.briarproject.org/briar/briar/-/issues/43Private replies to forum posts2020-11-21T20:25:34ZakwizgranPrivate replies to forum posts
User feedback: "It would be good to be able to click someones name from a forum post and be able to private message them. At least there should be an option for a poster to choose if they want to be able to be contacted or not....maybe...
User feedback: "It would be good to be able to click someones name from a forum post and be able to private message them. At least there should be an option for a poster to choose if they want to be able to be contacted or not....maybe tick a box when posting."
It would only be possible to reply to posts from contacts - would that restriction be confusing?
How should the context of the reply be shown? There's a risk of confusing the users about who can see which parts of the conversation.https://code.briarproject.org/briar/briar/-/issues/42Show new messages/forum posts in navigation drawer2023-03-15T12:38:14ZakwizgranShow new messages/forum posts in navigation drawerFeedback from a user: "It would be good to have a place/notification for all new messages when you first go on the app, instead of separately clicking on contacts or forums and searching for messages."
We should show the number of unrea...Feedback from a user: "It would be good to have a place/notification for all new messages when you first go on the app, instead of separately clicking on contacts or forums and searching for messages."
We should show the number of unread private messages next to the Contacts button on the dashboard, and likewise for forum posts. Bonus points for putting the numbers in little red circles (long ago requested by another user).
Another user requested a timeline of recent activity on the dashboard - for example, this person replied to your post on this forum, or this person shared this forum with you.
**Update:** We have no dashboard anymore, but might want to show this in the navigation drawer (#431).https://code.briarproject.org/briar/briar/-/issues/39Wi-Fi Direct plugin2022-01-21T14:28:52ZakwizgranWi-Fi Direct pluginSome devices running Android 4.0 and later support Wi-Fi Direct, which has a legacy mode that allows older devices to connect to WFD devices. The legacy mode creates an access point on the WFD device, with a random SSID and password that...Some devices running Android 4.0 and later support Wi-Fi Direct, which has a legacy mode that allows older devices to connect to WFD devices. The legacy mode creates an access point on the WFD device, with a random SSID and password that must be communicated to the other device out of band. The other device connects as a client in the usual way. The access point doesn't share the WFD device's internet connection, if any.
This could be useful when devices are in wifi range of each other but there's no wifi network; the SSID and password will have to be synced across some other transport (e.g. Bluetooth). When adding contacts via QR codes, the SSID and password can be included in the QR code.
Get the `WifiP2pManager` system service, call `initialize()`, then call `createGroup()` to create an access point. Call `requestGroupInfo()` to get a `WifiP2pGroup`, then call `getNetworkName()` and `getPassphrase()` and to get the transport properties.
After connecting to the access point, how does the client know the access point's IP address? `WifiP2pGroup.getOwner()` returns a `WifiP2pDevice`, which contains a MAC address but not an IP address.
It seems from this example code that `WifiP2pInfo.groupOwnerAddress.toString()` can be passed as the hostname to `Socket.connect()`:
[http://www.cse.unsw.edu.au/~ezarepour/COMP9336/WiFiDirectActivity.java](https://web.archive.org/web/20140310040212/http://www.cse.unsw.edu.au/~ezarepour/COMP9336/WiFiDirectActivity.java)
Presumably we can put that string in the transport properties with the SSID and password.
We may be able to advertise the access point's current SSID and password (in encrypted and obfuscated form) via WFD service discovery:
* Alice creates a legacy mode AP via `WifiP2pManager.createGroup()`
* The AP has a random SSID and password, which Bob doesn't know
* Alice packs the SSID and password into a `WifiP2pServiceInfo`
* Alice advertises the service via `WifiP2pManager.addLocalService()`
* Bob discovers the service via `WifiP2pManager.addServiceRequest()`
* Bob unpacks the SSID and password and connects to the AP as a legacy
client
However, the Thali developers have run into performance and stability problems with WFD service discovery, so this may not be a viable approach.
https://code.briarproject.org/briar/briar/-/issues/36Break up CryptoComponent interface2020-11-21T20:28:14ZakwizgranBreak up CryptoComponent interfaceThis monolithic interface should be separated into smaller interfaces relevant to different components.This monolithic interface should be separated into smaller interfaces relevant to different components.https://code.briarproject.org/briar/briar/-/issues/35Break up DatabaseComponent interface2020-11-21T20:28:33ZakwizgranBreak up DatabaseComponent interfaceThis monolithic interface should be separated into smaller interfaces relevant to different components.This monolithic interface should be separated into smaller interfaces relevant to different components.https://code.briarproject.org/briar/briar/-/issues/31Use built-in error correction for modem plugin?2022-04-18T09:39:27ZakwizgranUse built-in error correction for modem plugin?
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) co...
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) could be removed, reducing the size of the codebase and making BTP connections harder to identify: they would simply be SLIP-framed random data. (SLIP-framed UDP packets full of random data would be another easily implemented option, if that would be less likely to stand out.)
AT commands for enabling error correction (on which modems?):
* AT\N2: Require error correction, report NO CARRIER if the other end doesn't support it.
* AT&Q5: Try to negotiate an error corrected link.https://code.briarproject.org/briar/briar/-/issues/28LAN peer discovery2022-09-08T12:24:41ZakwizgranLAN peer discoveryThere are three options:
1) Use Wi-Fi Direct peer discovery.
Advantages:
* Available on recent Android devices with very little effort
* Doesn't create a Briar-specific traffic fingerprint
* Doesn't reveal the number of contacts
Disad...There are three options:
1) Use Wi-Fi Direct peer discovery.
Advantages:
* Available on recent Android devices with very little effort
* Doesn't create a Briar-specific traffic fingerprint
* Doesn't reveal the number of contacts
Disadvantages:
* Not available on older Android devices
* May not be available on all platforms
2) Use BitTorrent's local peer discovery protocol. Advertise a single infohash for all contacts.
https://en.wikipedia.org/wiki/Local_Peer_Discovery
http://forum.utorrent.com/viewtopic.php?pid=433785#p433785
Advantages:
* Doesn't create a Briar-specific traffic fingerprint
* Doesn't reveal the number of contacts
Disadvantages:
* Direct use of multicast won't work on all Android devices
3) Use a custom protocol. Choose a pseudorandom multicast group, advertise it in transport properties. Join the group at startup and periodically send a UDP packet to the group. Join contacts' multicast groups, listen for UDP packets, and connect back via TCP.
Advantages:
* Won't trigger filter rules designed to catch P2P traffic
Disadvantages:
* Direct use of multicast won't work on all Android devices
* Will IGMP traffic reveal the number of contacts?https://code.briarproject.org/briar/briar/-/issues/26Contact details screen2023-06-16T18:29:14ZakwizgranContact details screen* Indication of whether the contact is connected (and via which transports)
* Indication of whether the contact was added directly or introduced
* Indication of whether the contact is using a mailbox
* Indication of whether what features...* Indication of whether the contact is connected (and via which transports)
* Indication of whether the contact was added directly or introduced
* Indication of whether the contact is using a mailbox
* Indication of whether what features are supported by the contact (e.g forums, blogs)
* History of sharing and introduction events
* Button for introducing to another contact
* Button for deleting contacthttps://code.briarproject.org/briar/briar/-/issues/22Build external dependencies from source2020-11-21T20:31:32ZakwizgranBuild external dependencies from sourceCreate a build script for building the external dependencies from source. Code should be cloned from git rather than bundled - create a repo on code.briarproject.org if no suitable upstream repo is available.
For Java libraries, ensure ...Create a build script for building the external dependencies from source. Code should be cloned from git rather than bundled - create a repo on code.briarproject.org if no suitable upstream repo is available.
For Java libraries, ensure the target version is set to 6 for Android compatibility.https://code.briarproject.org/briar/briar/-/issues/21Unit tests for encryption using test vectors2020-11-21T20:32:16ZakwizgranUnit tests for encryption using test vectorshttps://code.briarproject.org/briar/briar/-/issues/20Make messages searchable2020-11-21T20:32:52ZakwizgranMake messages searchableWhen a message is fully reassembled, extract a list of words from the message body and place them in a separate DB column, which can be full-text indexed.When a message is fully reassembled, extract a list of words from the message body and place them in a separate DB column, which can be full-text indexed.https://code.briarproject.org/briar/briar/-/issues/18Contacts can't communicate if clock difference is too large2021-07-28T10:11:31ZakwizgranContacts can't communicate if clock difference is too largeIf a device's clock is very inaccurate (e.g. because the user has adjusted the clock when travelling, rather than changing the timezone) then it's possible to add a contact, but not possible to communicate with the contact subsequently b...If a device's clock is very inaccurate (e.g. because the user has adjusted the clock when travelling, rather than changing the timezone) then it's possible to add a contact, but not possible to communicate with the contact subsequently because the devices disagree about which rotation period they're in.
We should check the clock difference when adding a contact and if the difference is excessive, display the time and timezone and warn the users to check that they're using the same timezone. We may also need to make the maximum expected clock difference much larger (on the order of 24 hours rather than an hour), as contacts may change their clocks after adding each other.https://code.briarproject.org/briar/briar/-/issues/16Pairing confirmation pops up when first connecting via Bluetooth2020-11-21T20:34:00ZakwizgranPairing confirmation pops up when first connecting via BluetoothWhen the HTC Wildfire S first connects to another device via Bluetooth (while adding a contact), a dialog pops up asking the user to confirm pairing with the other device. If the user refuses the pairing, the devices fail to connect.
Th...When the HTC Wildfire S first connects to another device via Bluetooth (while adding a contact), a dialog pops up asking the user to confirm pairing with the other device. If the user refuses the pairing, the devices fail to connect.
This device uses the new API -- `BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord()` and `BluetoothDevice.createInsecureRfcommSocketToServiceRecord()` -- which should not require confirmation.https://code.briarproject.org/briar/briar/-/issues/14Sony LiveWare pops up when first connecting via Bluetooth2020-11-21T20:34:24ZakwizgranSony LiveWare pops up when first connecting via BluetoothThe LiveWare Manager app bundled with the Sony Xperia tipo pops up when first connecting to a new device via Bluetooth while adding a contact. It asks which app should be started when the device is connected.
This doesn't happen every t...The LiveWare Manager app bundled with the Sony Xperia tipo pops up when first connecting to a new device via Bluetooth while adding a contact. It asks which app should be started when the device is connected.
This doesn't happen every time - it may depend on whether the connection is incoming or outgoing, or there may be a cache of known devices that's cleared when the phone is restarted or reset.
![Screenshot_2014-10-06-13-12-40](/uploads/b94df454ee369fd23adb2544d37ae3b7/Screenshot_2014-10-06-13-12-40.png)https://code.briarproject.org/briar/briar/-/issues/12Timeout while adding a contact2020-11-21T20:35:27ZakwizgranTimeout while adding a contactSeveral users reported timeouts while adding contacts. The problem seemed to be more severe in larger groups. One user experienced a long series of timeouts before successfully adding a contact.
If this problem is caused in some cases b...Several users reported timeouts while adding contacts. The problem seemed to be more severe in larger groups. One user experienced a long series of timeouts before successfully adding a contact.
If this problem is caused in some cases by congestion at the Bluetooth MAC layer, we may be able to mitigate it by keeping a cache of discovered devices and trying to connect to them before performing discovery. If a group of users are adding each other as contacts, the first discovery by each user should put most of the other users' devices in the cache.
If this problem is caused in some cases by poorly performing Bluetooth drivers or hardware, we may not be able to work around it at the application level.
This could be caused by the limit of eight devices (one master and seven slaves) in a Bluetooth piconet. If so, closing any open Bluetooth connections before attempting a new connection may help.https://code.briarproject.org/briar/briar/-/issues/9Support copy and paste2022-10-27T21:53:59ZakwizgranSupport copy and pastehttps://code.briarproject.org/briar/briar/-/issues/6Message delays are confusing for users2020-11-21T20:37:12ZakwizgranMessage delays are confusing for usersFeedback from user testing:
Case 1: "From one of the participants of our test:
They had bluetooth and WiFi transports available (3 parties in close proximity). It seemed messages were being sent via mobile data as opposed to bluetooth....Feedback from user testing:
Case 1: "From one of the participants of our test:
They had bluetooth and WiFi transports available (3 parties in close proximity). It seemed messages were being sent via mobile data as opposed to bluetooth. This resulted in sometimes significant delays being seen in sending/receiving messages. With ancedotal measurement these delays were seen between 2-3 minutes and 9-10 minutes.
The users expected bluetooth to be used (as they were all physically near each other). These delays did not match how people were thinking bluetooth would be "instantaneous" communications.
It did not affect things too much but confused people.
Can we clarify how messages are sent received when there are multiple transports available?"
Case 2: "UserA was waiting outside UserB's house. UserA sent UserB a message and said there was approx a 2 minute delay, using mobile data."
Case 3: "I've been at a meeting today. Have checked Briar this morning and twice during the afternoon but not been signed in at length. I've just received all the messages from today at 22:01ish. Some of which had occured before I signed in earlier so I should have received them then. I imagine that maybe I wasn't signed in long enough to receive the data package. As a Whatsapp user id expect to sign in and within a minute have received all the updates from other people. So the response time for thread updates in one issue."https://code.briarproject.org/briar/briar/-/issues/2Allow existing contacts to be re-added2023-03-15T13:04:32ZakwizgranAllow existing contacts to be re-addedRe-adding an existing contact currently throws a ContactExistsException. But re-adding a contact may be necessary if transport properties get out of sync, making it impossible to connect via BTP. If we re-add a contact we should keep any...Re-adding an existing contact currently throws a ContactExistsException. But re-adding a contact may be necessary if transport properties get out of sync, making it impossible to connect via BTP. If we re-add a contact we should keep any existing private messages and group subscriptions.
If one contact uses the same identity as last time and the other doesn't, they'll disagree about whether it's a re-add, so we can't re-derive the same transport keys. Can we reuse the contact ID (if any), import the new transport properties, delete the old transport keys (if any), and create new transport keys?