-
@ Terry Yiu
2025-02-23 15:20:19NOSTR SDK FOR APPLE PLATFORMS
Progress Report # 2: Nov 2024 - Jan 2025
Nostr SDK for Apple Platforms continued to make progress this quarter. I am still the sole part-time active developer and maintainer of Nostr SDK for Apple Platforms.
Implementations for a few NIPs were added or updated. The CI build pipeline was broken due to deprecated dependencies, which have since been fixed.
I pushed out a (controversial) proposal to gracefully deprecate stringified JSON in favor of tags on user metadata kind 0 events to the NIPs repo as a pull request to improve consistency and reduce the complexity of reading and writing this commonly used kind. The SDK has become the first to implement with the hopes that others will follow.
We have had new external interest in the SDK from developers working on various Nostr clients: - Damus has copied the NIP-44 encryption implementation from the SDK for their use in NIP-37 Draft Events, swapping out their previous usage of rust-nostr due to large binary size issues. - Fabian from Nostur contributed a NIP-44 encrypt/decrypt example to the SDK demo project to help him understand how it works and is currently being used by Nostur - A new livestreaming Nostr client called Swae has adopted the SDK, using Comingle as a reference client implementation.
Progress on the SDK this quarter has been slower than the previous quarter due to a shift in emerging priorities in Nostr. This quarter, I focused on building a native iOS Nostr event signer, as none exist today. The problem is that some iOS users do not fully trust pasting their private key into Nostr clients, which they fear could be buggy or malicious in accessing and signing bad data with their private key. A native signer on Android called Amber already exists, and there has been an increase in demand from users for an equivalent solution on iOS. The iOS signer app is called Yeti (credit to Karnage for the name and Figma designs) and I'm using Nostr SDK for Apple Platforms and its demo app as a test bed for this experimental cross-app communication protocol that will eventually be proposed as a NIP. I hope iOS clients adopting the SDK will get built-in standardized event signing protocol capabilities, tightening up this attack vector.
This report marks the end of the six-month grant period, as agreed with OpenSats. I thank OpenSats for supporting Nostr SDK for Apple Platforms, other Nostr projects, and the developer community. I will re-apply for a grant at OpenSats for the SDK, Yeti, or other impactful Nostr projects.
1) How did you spend your time?
Below is a broken-down summarized bulletpointed list of completed tasks.
Development of Nostr SDK for Apple Platforms
Added
Updated
- Updated NIP-11 Relay Information Document implementation to support all the newly added fields
- Renamed ParameterizedReplaceableEvent to AddressableEvent and NonParameterizedReplaceableEvent to NormalReplaceableEvent to conform to the new terminology in the NIPs repo
- Gracefully deprecated stringified JSON in favor of tags on user metadata kind 0 events, being the first to implement the not-yet-merged proposal to NIP-01/NIP-24
Fixed
- Fixed broken CI build pipeline
- Fix GitHub workflow for running build and test
- Upgrade upload-pages-artifact from deprecated version to v3 to fix build
- Upgrade deploy pages action to v4 to fix build
In Progress
- Native iOS event signing protocol, using the SDK as a test bed
2) What do you plan to work on next quarter?
The top priorities will be developing the native iOS event signing protocol, building out Yeti, and integrating the iOS signing protocol into the SDK.
I will continue maintaining and developing the SDK, albeit at a slower pace: - Deprecate EventCreating protocol in favor of NostrEventBuilding protocol for the remaining event kinds - Add or update implementations for various NIPs where critical or needed - Support clients as they integrate with parts of the SDK by answering questions, fixing any issues they have, adding requested features, and reviewing pull requests
3) How did you make use of the money?
Living expenses.