parse-community / parse-server

Parse Server for Node.js / Express
https://parseplatform.org
Apache License 2.0
20.91k stars 4.78k forks source link

Android SDK Attention! #3356

Closed nitrag closed 7 years ago

nitrag commented 7 years ago

Sorry to post this in the wrong place, on purpose. The Android SDK is in dire need of some TLC. I however am not an Android Dev. I am here to encourage experience Java devs to step-up, as flovilmart has done for parse-server, and ask Facebook (@nlutsenko) for administrative rights to Parse-SDK-Android so we can push development forward. The iOS SDK is getting some love but no attention at-all for Android.

There are many many nuance bugs, many are already in PR Stage waiting to be approved thanks to some of the devs listed below.

I would hate to see all this work going into parse-server be for naught because the SDK's have major flaws that results in hours of troubleshooting and causes new devs to become frustrated and walk away.

@sashakhail, @natario1, @jianwatertown, @mlauwers-edentify, @Joelo14, @rebahbouchaib, @dkuspawono, @nonda, @Ilhasoft, @evocodes just to name a few, please also comment your concerns to bring attention to this issue.

Even though this is in the wrong place, can we please keep it open for 7 days to get the attention it needs?

MartinHerman commented 7 years ago

Fully agree, the saddest part is that Parse Server and the iOS SDK are actually powerful, well maintained repos.

To be honest, I am pretty confident a major update of the ParsePlatform might be coming up soon, based on numerous answers (scroll down). Too bad there are no official news.

Still - even with no update to the client SDKs - if ParseServer keeps moving forward like it did in 2016, it will stay a viable development tool for me. The speed/cost at which you can develop apps at a proof-of-concept level isn't comparable to any other PaaS out there. Even without the client SDKs, the REST API is a reasonable fallback.

natario1 commented 7 years ago

and causes new devs to become frustrated

Old devs as well. FWIW I agree with the OP.

I’d like to contribute, but we need a present, experienced developer doing at least some coordination (and that is not me for sure). Current maintainers sadly have stepped down from this role as well. We have issues that end with ‘please at least say something’.

I am pretty confident a major update of the ParsePlatform might be coming up soon

I am not. Plus, it might introduce LiveQuery, but there are 100+ open issues, ignored PRs (this one being the saddest), minor and major flaws. Don’t want to get technical, but I can’t believe ParseObject is still not Parcelable. That itself should make every experienced dev to not even consider Parse.

I have already seen comments here and there @ stack overflow discouraging newcomers about Parse. And I myself would go for something else if I were to start from scratch.

The SDK was an incredible effort, I am grateful to whom worked on it, and it’s sad to see it go. I wouldn’t say the REST API is a reasonable fallback, honestly. There are alternative services out there. We need client libraries. Moreover, the Android SDK crumbling down will have an impact on other SDKs as well. Quoting @benitech from the other post,

yea, doesn't seem to be much going on in the "Android-SDK" repo at all. Doesn't make sense to use any feature which is released for iOS and almost 4 months later has no compatibility with Android. If it continues like this, better consider other options.

I hope the Parse Server team would let this issue open until it is solved somehow.

jiraya85 commented 7 years ago

@nitrag , @natario1 : I totally agree with you. Parse for Android needs more consideration and some issues have to be resolved.

MartinHerman commented 7 years ago

@natario1 would you elaborate on

There are alternative services out there.

While I've worked on Firebase projects last year, it wasn't a match to Parse's simplicity. The same goes for AWS Mobile Hub.

I fully agree with you on the necessity to upgrade the client SDKs - but why still maintain / add features to Parse Server without the intention of upgrading the client SDKs? I believe most projects running on Parse are mobile apps...

If its really over with the Parse Platform, someone should already rip the bandaid and get it over with...

natario1 commented 7 years ago

While I've worked on Firebase projects last year, it wasn't a match to Parse's simplicity

It might not, but hey, corporate backing is better than no backing at all. Also, ‘simplicity’ breaks down when you find yourself spending weeks debugging nasty internal bugs. I agree Parse is still the best service for AnyPic / AnyWall apps. But for anything more complex, the SDK needs some love at this point, IMO.

but why still maintain / add features to Parse Server without the intention of upgrading the client SDKs?

Yes, that makes no sense. If Parse Server wasn’t so incredibly improved in the last year we probably wouldn’t be here struggling about android.

flovilmart commented 7 years ago

@natario1 Most of the (almost every) new features added to parse-server have been contributed by people outside parse/facebook. I don't believe anyone has risen to take over that SDK and start contributing and fixing those issues you mention.

I am not part of Facebook or parse, I contributed on my own time to parse-server. I haven't seen this kind of activity on the Android SDK, and no one can force the community to come together to maintain that project.

It seems that you all want to see those SDK well maintained, and evolving, I would love to see it too. This starts with contributing, answering the issues etc...

If no one is ready to take over, the community 'ripped the band-aid' themselves.

natario1 commented 7 years ago

@flovilmart sure, this is not a corporate rant against Facebook or Parse (not mine at least).

I think the goal of the OP is ask Facebook to open up the maintainance part to someone else, and to find that someone else. Right now no one is even merging PRs. And that is discouraging for anyone else.

That’s what I would like.

benitech commented 7 years ago

As someone who is not a developer, i was very disheartened by the minimal progress on the Android SDK personally, especially after i had made the choice to start my project with Parse (even after the parse.com shutdown announcement) assuming that the community would really step in big time. Which they did on the Parse-Server for sure.

As of now, i have had to spend considerable time and effort in moving away from whatever i was using in Parse Server. I would personally not recommend any new project with Parse.

Harsh but real from a PM perspective.

benitech commented 7 years ago

On another note, the amount of time i had to spend to simply get oAuth working was just unreal. @flovilmart was very helpful always, but everyone will note there is still not a simple writeup "how to for dummies" anywhere

flovilmart commented 7 years ago

assuming that the community would really step in big time

The community is not something magic you can invoke to solve your project, if you're a PM, you know developers, and if you know developers you could have enticed them to become that community.

i have had to spend considerable time and effort in moving away from whatever i was using in Parse Server

So you don't use parse-server anymore? Not sure you're adding anything constructive to the discussion besides criticizing the lack of community support for the android SDK.

everyone will note there is still not a simple writeup "how to for dummies"

No there isn't, also nothing prevents you to do it once you managed to get it working.

I am really sorry you guys feel that way, and abandoning ship, but I can't do much about that either. Unless someone / many ones are wanting to step up and maintain the android SDK, I'm not sure it's relevant to discuss much more over here. (also this feels more like a bashing than a discussion).

I'll close the discussion here, feel free to reopen on the Android SDK.

natario1 commented 7 years ago

@flovilmart sorry, but let’s pretend I am an experienced Java developer. I start working on it, make ParseObject parcelable, implement LiveQuery, stop using undocumented, deprecated GCM stuff. Then my PR lies open, just like 95% of what was opened in the last months. What do we do?

I think some words are needed from current maintainers, e.g.

flovilmart commented 7 years ago

please, if someone wants to step up, join our team as a maintainer

The best way to get that would be to open those PR, start commenting on issues etc...

nitrag commented 7 years ago

@natario1, slow down. Let's stay on target.

The point of this thread was not to rant and re-hash what is already known but to get Android developer support in the community.

@flovilmart I understand you are encouraging the community to step up but as mentioned before the PR's just sit there unapproved. Can you ask FB or Android maintainers and to spend a few hours of their time approving the PR that are already out there? Once we get the ball rolling on PR's more people will contribute. Finding a maintainer within a 5 day window here was never likely. Let's focus on breathing life into the SDK first. I'd really hate to fork it, that just get's messy and confusing for new devs.

benitech commented 7 years ago

I have been a part of opensource community for many years on various Apache projects and know well how it works.

I am happy to have left parse totally and @flovilmart 's comments make me feel even better about doing so.

Good luck and good riddance.

flovilmart commented 7 years ago

@benitech thanks for making me feel wasting my time on helping you instead of someone else.

benitech commented 7 years ago

feel free to make yourself feel as self important as you can.

MartinHerman commented 7 years ago

Seriously - how the hell did this turn into a rant?

Maybe we could summon @inlined (one of the orig. contributors to the Android SDK)? He has worked on the massive PR that never got accepted - but seems to be working on Firebase now - however he still contributed to the Android repo...

@flovilmart I really thought you were a member of the Parse team... you've done a great job. @benitech - what the actual f*ck.

To be honest, I won't be jumping ship just yet and I'm willing to contribute to the iOS SDK, as far as my experience will allow.

What would move things along is a Parse Slack channel - anyone know of one?

nitrag commented 7 years ago

@benitech STFU.

@flovilmart Ignore the losers please. You do great work.

flovilmart commented 7 years ago

@nitrag as always

There is the gitter open, https://gitter.im/ParsePlatform/Chat

I don't hang out much there but that would be a good start for discussing int

benitech commented 7 years ago

you wanna get abusive, then write it in detail. no need for acronyms.

flovilmart commented 7 years ago

@benitech your account have been reported.

inlined commented 7 years ago

It's fun to be summoned, though I'm sorry it was due to frustration.

For everyone's sake, let's all take a deep breath and be sure we're calm before continuing. As a wise Parser once told me, always try to deescalate. In the meantime, I'm glad to offer some background if it will help:

FCM: I was actually the Parse Push developer, not really an Android maintainer. I'm a pretty bad Android dev, so this is better for everyone. The PR I sent out tried to move the Parse Android SDK to GCMv4. I couldn't reveal at the time this was in prep for the public release of FCM. I didn't want the Parse SDK left in the cold when FCM was officially released and I got permission from Google leadership to contribute in that narrow regard.

The PR was rejected for the right reasons. Parse went through pretty long lengths to reverse engineer GCMv3 so the Parse Push API could be implemented without a dependency on GMSCore, which contributes to the DEX limit. Unfortunately GCMv4/FCM is a much thicker client and it would be foolish to reverse engineer. Also, due to a behavior change in multiple senderID registrations from v3 to v4, this PR had to drop Parse's senderID when the developer provided their own. If the developer's account had any trouble there would be no backup. The advice was to wait until Parse.com is fully sunset before endangering the Parse.com experience.

Now that the radically simplified FCM SDK exists & the Parse.com shutdown is sadly here, I think it's definitely time to do some deep cuts in the Android SDK. Almost all of the ParsePush code can be ripped out--from PPNS to the GCMv3 helpers to the weird trampolines we added to reuse BroadcastReceivers/IntentServices to avoid new setup instructions. Instead, just one BroadcastReceiver can be repurposed to listen to the Intent sent by FCM when a new token is found and stuff it into ParseInstallation. Devs who add the FCM dependency will just work (no code necessary) and devs who don't use Parse Push won't lose the DEX space.

I've been burning the midnight oil for a long time now and add can't afford to add this to my plate, but I'd be glad to give someone tips if they want to take a whack at it.

Parcelable: I appreciate the praise for Parse's simplicity. To abuse a quote: it takes a lot of complexity to make good simplicity. ParseObject's state management is really complex. Look for "opSetQueue" and you'll start to pull on that thread. ParseObject.save causes a recursive save on all dirty children of that object. It's the reason you love Parse's simplicity, but it also means that a ParseObject isn't a simple serializable atomic unit. Tearing the state could be very dangerous to your app. I'm not even sure what should happen if you broadcast a ParseObject to another app--that app could interpret the ParseObject as its own and try to do some weird stuff. It'd likely clog the entire network queue for that app if it ever tried a save.

The real Android stewards were very good at what they did. I'd create a separate request inside the Android SDK repo and tag an owner to get better context here. I highly recommend working out a strategy for Parcelable before doing any coding. The result of the conversation might be that that the intentional decision to not implement Parcelable stands.

Community: First and foremost, @flovilmart deserves respect. He is an unpaid contributor working in his area of expertise. He has been so active in the community that even I once thought Parse had hired him after I left. You won't get anywhere treating a gift as an obligation--@flovimart's prior contributions don't require him to give anymore and his skills in ParseServer don't mean he's the right person for any Android love.

The dirty secret about Parse's open source future is that it's at risk because of community abuse. Not a single Parser, past or present, is happy with the shutdown. A lot of good people poured their soul into Parse. The people who stuck around to help the community took a lot of abuse from developers who were hurt & angry about the shutdown. Anyone would have trouble staying moralized when stuck between a parent company that pulled your project and a community that abused you for it.

Here and everywhere else, please remember that open source is a gift and you get the community you create. If you want to contribute, make sure the maintainers are on board with changes before you do them. If you are asking someone to contribute for you, try to make it easy for them to help you. If a repo needs TLC, talk to the owners about why. Here it seems the Android SDK needs an active contributor. Try to find one who is willing and able to do the job. If you know enough to talk about Parcelable and outdated dependencies, you might actually fit the bill. None of us really knew what we were doing when we started. You'll just need to accept a slow ramp-up as you learn the design decisions that guided the codebase.

natario1 commented 7 years ago

Funny to see people bashing at @flovilmart, when all we’d need is just another flovilmart for android :-) respect to you man.

If you want to contribute, make sure the maintainers are on board with changes before you do them. If you are asking someone to contribute for you, try to make it easy for them to help you. If a repo needs TLC, talk to the owners about why.

Thumbs up. There’s a kind of vicious circle to be broken, due to owners somehow being away and contributors not being encouraged to contribute. I think breaking it takes something from both sides.

MartinHerman commented 7 years ago

Not a single Parser, past or present, is happy with the shutdown. A lot of good people poured their soul into Parse. The people who stuck around to help the community took a lot of abuse from developers who were hurt & angry about the shutdown. Anyone would have trouble staying moralized when stuck between a parent company that pulled your project and a community that abused you for it.

What a shame really... @inlined, do you happen to know if someone from the old Parse team would even consider coming back to the Android repo? If not @nitrag where do we go from here? As I've already wrote - I'll be taking a look at the iOS issues, but there is nothing I can do for the Android SDK :/.

Also - did we just established that there is no "official" support left for the platform? Because from what I've seen, I think the community still thinks that there is someone at Facebook still hacking away at this. Maybe making that clear in the READMEs would help the community mobilize...

Edit: I've just checked out the stats for CocoaPods Parse installs - 20k a week, 70k a month - if you ask me, the platform is far from dead. If the numbers for Android are 1/2 that, thats still massive enough for us to bring together a team of contributors...

alexblack commented 7 years ago

I'm also curious, what are some possible next steps then? Is it that we need someone to ask @nlutsenko for merge permissions on the repo?

(Is there somewhere to see who the maintainers are?)

flovilmart commented 7 years ago

I'm not sure one want to 'give' merge permissions to anyone at random. There is some trust to be established first with external contributors. So the next natural step is that some/many ones start to actively maintain the project, open PR's, help with issue triage, investigation etc... before we can talk about commit access.

This person should at least demonstrate some knowledge of the AndroidSDK and complete understanding of the parse platform in general.

I'm happy to discuss this point of view.

I'M pretty sure that if one or few people start taking this matter in their hands, @grantland and/or @wangmengyan95 will happily leave the keys to the castle to those people.

As for me, unfortunately, I'm not versed enough with Android to provide a critical eye on the Pull requests, nor have sufficient knowledge of the SDK.

alexblack commented 7 years ago

"I'm not sure one want to 'give' merge permissions to anyone at random."

I didn't suggest that. No need to be argumentative.

alexblack commented 7 years ago

Here is something concrete that could be discussed: this PR looks (I think) like it could be merged, what would be a good next step for it?

https://github.com/ParsePlatform/Parse-SDK-Android/pull/548

flovilmart commented 7 years ago

Here I disagree, the justification of the fix seems weak, no test added etc...

alexblack commented 7 years ago

Good point. Is this the next step then: close it, until test(s) and (possible more) justification are added?

Is this something the current maintainers should do, or, something we need new maintainers to do?

codegefluester commented 7 years ago

Hey everyone, thanks for bringing this up. I flagged this issue internally to the Parse team to discuss it but I can't make any promise about outcomes though.

Just like @flovilmart I do not know enough about Android Development, let alone how the Parse SDK does things in detail to provide any useful help with the Android SDK that would go beyond helping get all the details off folks that report issues to make sure that we have solid repro steps etc.

In general I feel that there is more involved than just maintaining the SDKs itself. The development needs to be driven together with maintainers of Parse Server to make sure that they're both well aligned and that no breaking changes are introduced too often and that older SDKs stay compatible with the Parse Server (not sure how this is handled at the moment).

Some of this can and should most likely be done by using the Parse Evolution process @flovilmart kicked off here https://github.com/parse-server-modules/parse-evolution.

nitrag commented 7 years ago

@flovilmart what about this, it's very straightforward.

https://github.com/ParsePlatform/Parse-SDK-Android/pull/506

flovilmart commented 7 years ago

Again, I don't have commit access on the Android SDK nor want to take the responsibility that comes with merging code. I already have my hands full, and also lagging behind on many side projects (like the file migration tool).

The development needs to be driven together with maintainers of Parse Server to make sure that they're both well aligned

I can't agree more with that.

alexblack commented 7 years ago

I was hoping we could discuss actual next steps for the Android SDK.

It (appears to me that) the issue is that the repo does not have active maintainers. So I am wondering (not being an expert on this stuff), if the solution is not to find new maintainers, so that PRs (like the one's mentioned above) could be taken to the next step (whether that be merging, rejecting, etc).

Again, I don't have commit access on the Android SDK nor want to take the responsibility that comes with merging code. I already have my hands full, and also lagging behind on many side projects (like the file migration tool).

This doesn't seem productive. I don't see anyone suggesting this line of thinking.

nitrag commented 7 years ago

Well, I was curious if you thought the justification seemed weak for that one too.

Ok, let's give this another week for either a community developer to step up or for guidance from Parse team. If nothing happens, I'll fork the repo myself and have it be an Unofficial SDK where PR's get attention. I don't see any other way to move forward.

flovilmart commented 7 years ago

@nitrag it seems that you're willing to maintain a forked SDK, why not maintain the official SDK?

nitrag commented 7 years ago

This person should at least demonstrate some knowledge of the AndroidSDK and complete understanding of the parse platform in general.

I'm only just starting to get into Android development. Likewise I'm a Swift developer, not Objective-C. I'd be an amateur maintainer good for handling the low hanging issues. Anything advanced would be over my head and I wouldn't want to be responsible for it breaking someone's app - hence the Unofficial repo.

flovilmart commented 7 years ago

ok... but I don't believe the fork is the solution, actually that may end-up making things worst...

inlined commented 7 years ago

That second pull request seemed OK. I'm honestly not sure why there was no accept nor comment. The repo does seem a bit active though. @grantland accepted a PR just 5d ago. He's a great Android dev, but he's no longer related to Parse and I'm sure his day job calls.

To help do my part, I started a discussion on the Android SDK repo about what to do w/ Push.

alexblack commented 7 years ago

hey @inlined I don't see that PR that was accepted 5d ago, latest commit I see on master was Nov last year?

https://github.com/ParsePlatform/Parse-SDK-Android/commits/master

inlined commented 7 years ago

Ack You're right. I must have remembered wrong from when I skimmed this morning pre-coffee.

MartinHerman commented 7 years ago

Guys have we moved forward on this? The next step should be updating the READMEs so its clear we are looking for maintainers...

codegefluester commented 7 years ago

@MartinHerman I raised this to the Parse team and we're discussing the next steps, hang in there.

cc @gfosco

WebRence commented 7 years ago

Even I am excited to see next update on Android Mobile App SDK because I am usually doing more work on android apps. :)

natario1 commented 7 years ago

No news about this, or is there a discussion going on somewhere else? @codegefluester

MartinHerman commented 7 years ago

@inlined @flovilmart @codegefluester - guys, any news on this?

codegefluester commented 7 years ago

@MartinHerman @natario1 Nope, haven't heard anything new so far

flovilmart commented 7 years ago

Is any one of you interested in taking over? It first starts with triaging issues.

rogerhu commented 7 years ago

@flovilmart I can help =)

rogerhu commented 7 years ago

Given the Parse shutdown, the question also behooves what min Android SDK version is needed. A lot of backwards compatibility choices were made to support older Android versions (https://github.com/ParsePlatform/Parse-SDK-Android/issues/189). I think the community can be more aggressive about supporting newer Android versions and then receiving help to address backwards compat issues (https://github.com/ParsePlatform/Parse-SDK-Android/issues/231 for instance, HttpUrlConnection should be good enough to go)