Description
Hello 👋, I'm using the Parse SDK for more than a year now for a side project of mine. For this time I did not see any movements here and fortunately I stumble upon just one new issue with the Firebase configuration, because the FCM module requires an older version. In Firebase SDK latest releases they did some breaking changes moving some stuff around. Downgrading the version was a workaround.
Meanwhile a have influenced from the Parse-Swift new SDK and start to build upon it a pure Kotlin one, where can be found here: ParseKt Everything cool, but I hit some quite challenging stuff around typings in Kotlin and type erasure on the JVM, where for Swift there are solutions provided by the language. So I hit a wall.
Next I start thinking how to overcome this situation - using non-active supported SDK and challenges creating a pure one in Kotlin and to have stable up-to-date solution for my projects.
Few options I imagined here:
- Re-thinking and implement something similar to this current SDK but in Kotlin (the ParseKt heavily uses generics and ratified types + kotlin.serailization instead of JSON 'bag' with Map and fat deserialisers with type checking)
- This SDK is a solid, but huge one. So maybe a good approach will be to be modernized and step-by-step internally replacing and changing critical and painful parts (bolts, local storage issues, etc). This is not a job for one person who don't know the SDK internals and decisions taken there.
- I was start thinking and actually rise a question why to not replace this SDK in my project with a Apollo GraphQL. For me seems that the overhead will be manage of authentication and of persistence which I start manage also using this SDK because of problematic local storage. I address also that I will lose some flexibility in manner of typing because of the flexible ParseObject.
After all I decide to give a chance on this SDK and see where I can go for a short time and was hoping for support from the core members to continue this discussion and to help somehow with the native Android SDK. Pure Kotlin SDK also means that, it should run on the JVM and Parse can be consumed from other servers (microservices) or desktop apps. Also means that with proper decisions and discussions, can be a Kotlin Multiplatform Module KMM another option to the community.
My master plan for this SDK is:
- Migrate everything and refactor the code to Java 8
- Update all dependencies to be up-to-date
- Waiting all feature PRs to be merged
- Port the source base to Kotlin
- Remove bolts and replace them with coroutines
- Remove local storage and provide extensible storage interfaces, so everybody can implement their own storage - Room, ObjectBox, Kodein-DB, etc.
- Create runtime or api module which can be KMM or just for the JVM without bound to Android APIs.
- Normalized cache
@mtrezza I open this issue more like a discussion board, where I hope 🤞 to find followers and push the Android SDK to a bright future and in the right direction 😄 ...again, inspired by the Parse-Swift.
Looking forwards,
Asen