|
| 1 | +# Zulip Android plan |
| 2 | + |
| 3 | +We are merging the Zulip Android and iOS development communities, to |
| 4 | +focus on the React Native app codebase (zulip-mobile.git). We’ve |
| 5 | +found with the iOS React Native project that we’ve been able to build |
| 6 | +an app that performs well using the platform, and the benefits of |
| 7 | +being able to share a codebase (so that we only have to implement each |
| 8 | +feature and design each detail once) are huge, and outweigh the |
| 9 | +advantages of continuing to invest in the existing, more mature Java |
| 10 | +Android app. |
| 11 | + |
| 12 | +So, in preparation for Google Summer of Code applications opening on |
| 13 | +March 20th, we’re planning to merge the communities now so that we can |
| 14 | +direct students interested in Android to propose projects for the |
| 15 | +React Native app. Our goal is to have the best possible Zulip Android |
| 16 | +app by the end of the summer, and we think the best way to achieve |
| 17 | +that is to combine the efforts of both the Zulip iOS/React Native |
| 18 | +developers and the Zulip Java/Android development team on a single app |
| 19 | +codebase. This will also as a side effect benefit both the iOS app |
| 20 | +and potential future apps for other React-Native supported platforms |
| 21 | +like Windows Phone. |
| 22 | + |
| 23 | +Here’s how this will work practically: |
| 24 | + |
| 25 | +- The Java Android app will remain in the app store until the React |
| 26 | + Native app is good enough to completely replace it. This probably |
| 27 | + means 3-6 months, depending how quickly RN development goes. We’ll |
| 28 | + continue doing releases both to fix bugs and to roll out features |
| 29 | + that are already partially implemented, but want to avoid putting a |
| 30 | + lot of work into totally new features for the Java app. |
| 31 | +- Folks who have open PRs on the Java Android app should work on |
| 32 | + finishing them so that we can close out those features. It’s still |
| 33 | + super valuable. |
| 34 | +- The goal is to get the React Native app to be better than the Java |
| 35 | + Android app as fast as possible (probably by end of August at the |
| 36 | + latest), so that we can minimize total work. |
| 37 | +- This Android strategy means it doesn’t make sense for us to have |
| 38 | + GSoC projects working on the Java Android app; those students would |
| 39 | + be able to help Zulip more working on the React Native app. So |
| 40 | + students who were planning to do GSoC with the Java Android project |
| 41 | + should write their proposals for improvements to the React Native |
| 42 | + app instead. A few important details are worth highlighting: |
| 43 | +- Zulip’s GSoC selection process is focused more on general |
| 44 | + engineering skills and approach than specific language knowledge, so |
| 45 | + good work done on the Java Android app is just as valuable for your |
| 46 | + application as work done on the React Native app. |
| 47 | +- Good engineers can learn new tools and languages, so if you’re shown |
| 48 | + your skills well on the Java project, we’re confident you’ll be able |
| 49 | + to effectively contribute to the React Native project after a bit of |
| 50 | + learning time. Students are encouraged to start learning React |
| 51 | + Native and contributing to the React Native app now to help prepare |
| 52 | + for a successful summer. |
| 53 | +- Proposals should highlight any work done on either app as well as |
| 54 | + describe a plan for the improvements they want to make to the React |
| 55 | + Native app over the summer. |
| 56 | + |
| 57 | + |
| 58 | +Logistical details checklist for migration: |
| 59 | + |
| 60 | +* [x] Make sure all existing Java contributors understand the plan and |
| 61 | + can give feedback on it and this plan. |
| 62 | +* [x] Announce on chat.zulip.org |
| 63 | +* [ ] Update GSoC ideas page to clarify the plan |
| 64 | +* [ ] Update zulip/zulip-mobile README.md |
| 65 | +* [ ] Update zulip/zulip-android README.md |
| 66 | +* [ ] Update zulip/zulip README.md |
| 67 | +* [ ] Email zulip-devel@ and zulip-ios@ and zulip-android@ with the |
| 68 | + announcement |
| 69 | +* [ ] Announce on Twitter @zuliposs, linking to email |
| 70 | +* [ ] Use @zulipbot to update open PRs and issues for Android app with |
| 71 | + a heads-up about the plan |
| 72 | + |
| 73 | +Logistical details that can be follow-up items but are important to |
| 74 | +making the transition successful: |
| 75 | + |
| 76 | +* [ ] Get the Zulip RN app working on Android (main issue is |
| 77 | +implementing the scrolling extension) |
| 78 | + |
| 79 | +* [ ] Attempt to clear out Java Android open PRs and open bugs to buy |
| 80 | + us 3-6 months of time without major development to the Java Android |
| 81 | + app, since it may take a while for the React Native app to achieve |
| 82 | + feature/quality parity. |
| 83 | + |
| 84 | +* [ ] Audit features of Java Android app and open issues for them in |
| 85 | + the RN app project. |
| 86 | +* [ ] Audit open issues for feature ideas in the Java Android app and |
| 87 | + open corresponding ones in the RN app project. |
| 88 | +* [ ] Add a bunch of links to JS, React, and RN tutorials to the RN app docs |
| 89 | +* [ ] Create good onboarding docs for RN for developers who only have Linux (and no Mac). |
| 90 | +* [ ] Move/rename/merge, as appropriate, the Zulip mobile mailing lists |
| 91 | + |
0 commit comments