Pusher v2 Roadmap
Opened this issue · 3 comments
Some thoughts about the direction of libPusher for version 2:
- Re-visit refactoring of private channel authentication mechanism. I'd like to make it easier for users to support custom authentication, possibly building upon whatever HTTP library they already use in their app. I've already laid the groundwork for this in this pull request but it needs updating: #95
- Remove dependencies on NSURLConnection. The two things that make HTTP requests in the library are the existing private channel authentication mechanism, and the PTPusherAPI client. I'd like to remove these. I'd still want to provide a default channel authentication implementation based on the refactored auth system but this could be extracted into a separate repository, perhaps some kind of libPusher-HTTP library (which could also include the HTTP API client).
- Re-write in Swift. This is something I'd like to explore for v2. Not just a straight re-write, I'd like to see if there's any opportunities with Swift to refine the library's API.
- Move repo over to Pusher organisation?
Anything else @hamchapman?
First point seems like a great idea and at first glance, it doesn't look like there's a massive amount more work to be done for it. Links nicely with the second one in that removing (or abstracting) the baked-in auth that uses NSURLConnection can be part of the same work that involves moving over to using NSURLSession instead.
As I mentioned before, I also agree that splitting up the library into a Websocket library and an HTTP library is a good idea.
I'm also definitely game for a re-write in Swift. I threw together a Swift library (here)[https://github.com/pusher-community/pusher-websocket-swift] but am happy for a libPusher written in Swift to become the de facto library for all Apple software integrations (iOS, OSX, tvOS maybe even watchOS, and whether Objective-C or Swift is being used).
And a move over to the Pusher org would be great 👍
@hamchapman revisiting this, I'd like to push for one last release (1.7) before focussing on 2.0 and a Swift rewrite.
Sounds good to me!