New Platform: iOS #13

Open
opened 2021-06-25 15:11:40 +00:00 by sarah · 6 comments
Owner
No description provided.
sarah added the
enhancement
help wanted
ios
labels 2021-06-25 15:11:40 +00:00
Owner

we have some proto PRs for this and a few interested people. What we need is time, and possibly resources ourselves to participate (we dont have any macs or iphones) lol.

But yes, at some point I'd like to set up a Mac/iOS work group and work with volunteers to move this along, time permitting :)

we have some proto PRs for this and a few interested people. What we need is time, and possibly resources ourselves to participate (we dont have any macs or iphones) lol. But yes, at some point I'd like to set up a Mac/iOS work group and work with volunteers to move this along, time permitting :)
Contributor

Is there still interest in this? If there's no one working on this at the moment, I could try taking this on next week!

EDIT: Also just to check, this is the existing branch for this right? https://git.openprivacy.ca/cwtch.im/cwtch-ui/src/branch/ios_build_port

EDIT 2: I should've checked the open PRs! #140

Is there still interest in this? If there's no one working on this at the moment, I could try taking this on next week! EDIT: Also just to check, this is the existing branch for this right? https://git.openprivacy.ca/cwtch.im/cwtch-ui/src/branch/ios_build_port EDIT 2: I should've checked the open PRs! https://git.openprivacy.ca/cwtch.im/cwtch-ui/pulls/140
Author
Owner

@NimaBoscarino definitely interested!

This one is definitely quite big and has many moving pieces. I'll try to summarize the current state.

See also #140 for some other discussion. (And flutter/flutter_app#78 for some much older discussion)

The main challenges with iOS revolve around getting an architecture that will work on the iPhone.

For Android there is Android specific server code (under android/) that manages the lifecycles (roughly: https://git.openprivacy.ca/cwtch.im/cwtch-ui/src/branch/trunk/cwtch-android-lifecycle.png although it has changed since we first implemented it)

We would basically need a similar analysis for iOS - in particular focusing on how Tor connections would actually work there.

Work here might further be complicated by issues that Briar have previously looked into (https://code.briarproject.org/briar/briar/-/issues/445)

Ultimately, it may be that we need to introduce another (asymmetric) anonymous communication network (research pending) - to get Cwtch working suitable on iOS, but until then any work to push the build forward, make sure it builds nicely and/or formulating an architecture that would be acceptable to iOS policies is very welcome.

@NimaBoscarino definitely interested! This one is definitely quite big and has many moving pieces. I'll try to summarize the current state. See also https://git.openprivacy.ca/cwtch.im/cwtch-ui/pulls/140 for some other discussion. (And https://git.openprivacy.ca/flutter/flutter_app/pulls/78 for some much older discussion) The main challenges with iOS revolve around getting an architecture that will work on the iPhone. For Android there is Android specific server code (under `android/`) that manages the lifecycles (roughly: https://git.openprivacy.ca/cwtch.im/cwtch-ui/src/branch/trunk/cwtch-android-lifecycle.png although it has changed since we first implemented it) We would basically need a similar analysis for iOS - in particular focusing on how Tor connections would actually work there. Work here might further be complicated by issues that Briar have previously looked into (https://code.briarproject.org/briar/briar/-/issues/445) Ultimately, it may be that we need to introduce another (asymmetric) anonymous communication network (research pending) - to get Cwtch working suitable on iOS, but until then any work to push the build forward, make sure it builds nicely and/or formulating an architecture that would be acceptable to iOS policies is very welcome.
Owner

So with our recent improvements to tor management/start speed, and android stabalization work, we are almost in a spot where we feel it might be possible to investigatge this but we don't have the developer bandwidth to support it currently.

to start, we'd need a ios compiled tor binary,

then I'll need to review the ios branch work done in #140

and we currently can't test as we have no iphones, and I'm not sure what compiling for it looks like. We do at least have tentative support in libcwtch-go to compile for ios

So with our recent improvements to tor management/start speed, and android stabalization work, we are almost in a spot where we feel it might be possible to investigatge this but we don't have the developer bandwidth to support it currently. to start, we'd need a ios compiled tor binary, then I'll need to review the ios branch work done in https://git.openprivacy.ca/cwtch.im/cwtch-ui/pulls/140 and we currently can't test as we have no iphones, and I'm not sure what compiling for it looks like. We do at least have tentative support in libcwtch-go to compile for ios
sarah added the
funding-needed
label 2022-05-27 17:19:09 +00:00

I think the lack of an iOS version will reduce CWTCH adoption for all platforms because 50% of the U.S. population (and 20% of the world population) has an iPhone. While I would like to stop communicating with iPhone users, that is not entirely practical, and some security is better than none. 😟


at some point I'd like to set up a Mac/iOS work group
we currently can't test as we have no iphones

You dont necessarily need them - you just need RAM to run Mac OS in a virtual machine

Free cloud builder service on Mac OS M1 virtual machine
https://codemagic.io/pricing/

The download page at https://cwtch.im/download/ should link to some page that explains all of the issues blocking release of an iOS version. Be more specific about your needs, and request hardware donations if desired.


Work here might further be complicated by issues that Briar have previously looked into

A lot has changed in 6 years - are you sure those issues are still valid today?

Briar says: "To protect metadata, Briar can not use push messages"

'Jami' uses APN but does not send messages through push notifications: they send empty notification to wake up the app, and the app retrieves messages itself.


'Status' messenger supports iOS - https://status.im/
https://github.com/status-im/status-mobile

Discussion of push notification methods in Status


Ultimately, it may be that we need to introduce another (asymmetric) anonymous communication network

Discussion of alternative transport mechanisms


to start, we'd need a ios compiled tor binary

There is a TOR client for iOS: https://orbot.app/en/
https://github.com/guardianproject/orbot-apple

Brave browser has a built-in TOR proxy and runs on iOS...
https://github.com/brave/brave-core/tree/master/browser/tor
https://github.com/brave/brave-core/tree/master/components/tor

"Tor.framework is the easiest way to embed Tor in your iOS application. The API is not stable yet, and subject to change."
https://github.com/iCepa/Tor.framework

I think the lack of an iOS version will reduce CWTCH adoption for all platforms because 50% of the U.S. population (and 20% of the world population) has an iPhone. While I would like to stop communicating with iPhone users, that is not entirely practical, and some security is better than none. 😟 _____ > **at some point I'd like to set up a Mac/iOS work group** > **we currently can't test as we have no iphones** You dont necessarily need them - you just need RAM to run Mac OS in a virtual machine - https://developer.apple.com/documentation/apple-silicon/running-your-ios-apps-in-macos - https://www.omglinux.com/altlinux-is-an-altstore-gui-for-linux-desktops/ - https://blog.codemagic.io/how-to-build-and-distribute-ios-apps-without-mac-with-flutter-codemagic/ - https://stackoverflow.com/questions/63335392/using-flutter-from-linux-without-xcode - https://mockitt.wondershare.com/develop/ios-development-on-linux.html - https://dahliaos.io Free cloud builder service on Mac OS M1 virtual machine https://codemagic.io/pricing/ The download page at https://cwtch.im/download/ should link to some page that explains all of the issues blocking release of an iOS version. Be more specific about your needs, and request hardware donations if desired. _____ > **Work here might further be complicated by issues that Briar have previously looked into** A lot has changed in 6 years - are you sure [those issues](https://code.briarproject.org/briar/briar/-/issues/445) are still valid today? - https://developer.apple.com/videos/play/wwdc2020/10063/ - https://developer.apple.com/forums/thread/685525 Briar says: *"To protect metadata, Briar can not use push messages"* '***Jami***' uses APN but does not send messages through push notifications: they send empty notification to wake up the app, and the app retrieves messages itself. - https://forum.jami.net/t/how-do-ios-app-notifications-work/602/2 - https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-support _____ '***Status***' messenger supports iOS - https://status.im/ https://github.com/status-im/status-mobile Discussion of push notification methods in Status - https://our.status.im/status-app-notifications-on-ios/ - https://our.status.im/peer-to-peer-messaging-where-whisper-falls-short-and-waku-picks-up/ _____ > **Ultimately, it may be that we need to introduce another (asymmetric) anonymous communication network** Discussion of alternative transport mechanisms - https://secushare.org/anonymity - https://secushare.org/comparison - https://media.ccc.de/v/34c3-ChaosWest-1-three_ways_to_enhance_metadata_protection_beyond_tor_secushare_org - https://holepunch.to/ - https://www.guidingtech.com/blockchain-based-chat-messenger-apps/ _____ > **to start, we'd need a ios compiled tor binary** There is a TOR client for iOS: https://orbot.app/en/ https://github.com/guardianproject/orbot-apple Brave browser has a built-in TOR proxy and runs on iOS... https://github.com/brave/brave-core/tree/master/browser/tor https://github.com/brave/brave-core/tree/master/components/tor *_"Tor.framework is the easiest way to embed Tor in your iOS application. The API is not stable yet, and subject to change."_* https://github.com/iCepa/Tor.framework
Another project’s search for the best compromise on iOS - and doing a pretty good job of documenting their work, I think... [ iOS push notifications](https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html) ***["Our iOS approach"](https://simplex.chat/blog/20220404-simplex-chat-instant-notifications.html)*** - https://apps.apple.com/us/app/simplex-chat/id1605771084 - https://github.com/simplex-chat/simplex-chat/blob/stable/README.md - https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md - https://simplex.chat/blog/ Android app supports access via Tor using Orbot SOCKS proxy https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html *[“Check out the last talk at MoneroKon - we do plan lightweight 2-hop onion routing as part of the protocol/network design, that would provide sender transport anonymity without noticeable latency costs…”](https://www.reddit.com/r/SimpleXChat/comments/14r0x3o/is_yhis_chat_app_the_most_secure_one/jqteryi/)* ----- [(#237: referencing the other thread here just for the sake of consolidating issues)](https://git.openprivacy.ca/cwtch.im/cwtch/issues/237)
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: cwtch.im/cwtch-ui#13
No description provided.