News for hackers. Stuff that matters.
Re:Open Sourcing Our SDKs by GeneralTspoon on Thursday August 13, 2015 @06:06PM (#10057508)
Last time I used Parse the Android SDK had a crippling bug that made it unusable. This was version 1.8.0 I believe.

Essentially Disk I/O was using the same synchronized lock as the main thread. On some devices this caused a reproducible ANR (App Not Responding). I ended up writing a small REST Api client using Retrofit to replace the SDK. It worked well but as mmastrac mentioned there are just too many other critical issues with Parse to make it suitable for anything other than quick prototypes.

Besides, it's super expensive if you need have any sort of scale. You could almost hire a part-time engineer to build and maintain a backend for those prices.

Re:Open Sourcing Our SDKs by grantland on Thursday August 13, 2015 @07:25PM (#10057799)
It's unfortunate to hear you had a bad experience with our SDK :(

We've actually fixed a few ANR deadlocks in this last release [1], as well as a few others in the releases since 1.8.0 [2].

If you can supply reproduction steps, we'd love to be able to fix this issue as I'm sure you're not the only one experiencing it. In addition, we're more than happy to accept fixes as contributions :D

[1]: https://github.com/ParsePlatform/Parse-SDK-Android/releases/...

[2]: https://parse.com/docs/downloads

Re:Open Sourcing Our SDKs by GeneralTspoon on Friday August 14, 2015 @03:51AM (#10059057)
The issue is still open here: https://developers.facebook.com/bugs/838833329491346/?search...

I think the guy on the ticket didn't really understand what I was saying. I'm happy to provide any extra info necessary (what I can remember anyway).

From looking through the code, the issue still appears to exist. [1] is called on the Main Thread. It eventually calls to a synchronized block [2]. [3] is called from a background thread and uses the same synchronised lock.

--> Main Thread + Background Thread using same lock == Trouble

One other annoying issue I reported (#937744189590638 - private) was not being able to update the GCM token. The field is readonly, even though the GCM docs explicitly state that the key changes over time. Meaning you have to delete and recreate the Installation - and what happens if you have other objects linked to that installation? Super annoying. Could be easily solved by making that field writable.

[1]: https://github.com/ParsePlatform/Parse-SDK-Android/blob/mast...

[2]: https://github.com/ParsePlatform/Parse-SDK-Android/blob/mast...

[3]: https://github.com/ParsePlatform/Parse-SDK-Android/blob/mast...

Re:Open Sourcing Our SDKs by grantland on Friday August 14, 2015 @09:16PM (#10063919)
I've responded to both your tickets. The deviceType issue seems be resolved now, but please ping me on Twitter at @grantland if the deadlock issue fails to re-open. I just need the SDK version you were using since your thread dump was obfuscated.

WRT the ParseCommandCache links you sent, you're right that there is some trouble using the same lock on a background thread and UI thread. It would possibly cause some UI stuttering, but it wouldn't necessarily cause a deadlock on it's own. There's probably a bit more to it and I'd love to dig deeper and find out why.

Re:Open Sourcing Our SDKs by GeneralTspoon on Saturday August 15, 2015 @08:00AM (#10065150)
For any others reading this - can confirm, deviceToken issue is resolved. It is actually possible to update a pushToken, but you need to have an installationId set (otherwise you'll get an error saying it's not possible).

Posted more info for the ParseCommandCache ANR in the ticket.

Cheers for taking feedback seriously! :)

Re:Open Sourcing Our SDKs by grantland on Tuesday August 18, 2015 @03:24PM (#10081531)
No problem, thanks for helping us squash this bug!
Re:Open Sourcing Our SDKs by evv on Thursday August 13, 2015 @06:16PM (#10057557)
I wouldn't write off Parse's value because one client was rough around the edges. I suspect the SDKs will become much more stable and usable now that the community can help contribute to them.

If you can find a part-time engineer that can build and maintain a backend with all of Parse's features, you should absolutely do that.

Re:Open Sourcing Our SDKs by GeneralTspoon on Friday August 14, 2015 @03:57AM (#10059067)
Now that it's open source it's possible to fix, but it wasn't back then. We couldn't ship an app that locked up a user's phone. Combined with all the other issues (mentioned at the top of this thread), we had to write-off Parse.

> If you can find a part-time engineer that can build and maintain a backend with all of Parse's features, you should absolutely do that.

Most likely, you're not going to be using all of Parse's features; probably just a small subset of them. So I think it's easily doable. In fact, if you were intending to use Cloud Code, you could probably do it yourself with the time you'd save by not having to deploy to production to test your code!