Hi everybody,
I just created a wiki page for a short development guide which should help new contributors to understand how develop and release new versions of the app.
https://github.com/nextcloud/android/wiki/Development-Guide
It is just a draft. I thought it is easier if we have some stuff written down to kick off the discussion. For now I focused on versioning and the code review process.
Feel free to challenge anything I have written down ;)
cc @jancborchardt @LukasReschke @tobiasKaminsky @przybylski
Just a detail thing, I would prefer if we don鈥檛 use the Github wiki at all and have all the necessary files in the repository. Then when you clone it you have everything offline etc, and people don鈥檛 need to know that we use the wiki (cause we don鈥檛 use it otherwise).
Hmm, that seems wrong to me :wink: I already highly dislike the fact that the user documentation is linked with the code repo since general documentation and code shouldn't be mixed imho. So, yes it doesn't have to be the GH wiki but I would not like it to be within the code repo either.
Edit, since we don't have much documentation dev wise (yet) we can put it into the .md file if you like. But still for every change you will need a PR and two thumbs up to even merge...
The reason I dislike it is the fact that I WILL HAVE TO checkout/clone the documentation with every branch again and again and again and obviously don't care about documentation at all since this is nothing that changes between all the branches...
As this guide will change only in the beginning I am fine with a file.
But then we should discuss it here.
Some open questions I have:
This should be added to make clear that every idea should be discussed prior to implementing it.
Developing roadmap:
Sounds good to me, so let's finish up an initial version in the wiki and then put it in the Repo
Next question: who should merge? Anyone or the pr opener as he/she can verify it a last time?
Good point, with two thumbs up we should be fine with anybody merging.
Next question: which labels? Same as ownCloud?
How do we distinguish proposed issues and "verified" issues?
I would suggest just having a label for approved issues: "approved"
how often do we release a stable version? Fixed time slot? After x PRs merged?
I would say we keep it flexible for now and decide on a case-by-case / release-by-release basis. Right now I consider, you, @tobiasKaminsky and myself being the core developers. So it is probably the three of us that usually merge stuff to master and create tags/releases for the different channels. I would for now keep it flexible since doing releases depends on our availability which might be floating.
In case we agree we do have enough new features worth and stable to be released we do one. Like with oC I would say we create a release issue with a task list and go for it. During that time we should have a feature freeze, so no new PR will be merged to master.
how are PRs chosen?
The easy answer is: When they are ready ;)
To me ready means reviewed, tested and in some cases already out in the wild via one of our beta channels. PRs should only exists and be reviewed/approved if the correspond to an approved issue so there is no argument not putting them into a release.
Only thing I can think of not putting a PR on master is if it implements a future server side feature which hasn't been released yet.
My Question + opinion
master, stable beta and beta?
@tobiasKaminsky @schiessle proposed "1 to develop" as one of the general set of labels. This one could also serve as an "approved" label. What do you think?
"approved" should be an independent label to not confuse us ;)
PR:
1 in progress
2 ready to CR
3 ready to test
4 ready to release
Issue:
nothing
approved
PR exists (and then the PR # should be shown in first post)
What do you think about the guidelines on when changes should go into each release channel and the steps to prepare for stable releases?
I do not fully understand the difference between "stable beta" and "beta". In beta every PR that is "ready to test" will be included by me.
And I thought the same is for "stable beta", but with the public beta test by google play store?
we have a documentation repo I thought, why do we not place the android documentation there as well?
Maybe we should use "alpha" and "beta" instead of "beta" and "stable beta"
alpha is more unstable than beta, at least for me.
But I understand that "stable beta" and "beta" have the same code quality...?
Not imho. The stable beta is stuff we put on master but haven't released yet. That is what we then public in Google Play store as beta, if that survives for around two weeks without incidents we can release it as stable. Things we put on the master would imho be tested thoroughly already while things we put in the beta in F Droid wouldn't necessarily be.
The beta and stable in the Play store are the same app where betas only get distributed to people who joined the beta and will automatically be updated with the next upcoming stable. It is no app installed in parallel!
So yes it is something like leading edge and bleeding edge
Fancy seeing you all here :D mostly glad :+1:
Just mostly @skymania ? Should I send you a team invite? :)
@tobiasKaminsky I'll try to redefine my three terms :)
example for stuff put in beta but not in the release candidate: the new drawer implementation. It works for newer Android versions but the account switching doesn't work on at least one Android 4.x device as reported. So we would not publish it so a larger user base but to the beta app for users who are willing to help us out with testing and reporting issues.
Regarding the labels: @schiessle configured the labels, so we now have a larger list at our disposal :+1: Thanks!
@AndyScherzinger ok very glad ;) no need, already in :)
We now have the following labels, @ all - anything missing from your point of view?
How do we want to progress here?
Just an idea
It would then be an initial version which which of course still change over time and adapt to lessons we learned done the road but should be enough for anyone new to the project to understand how development is done here from a high level perspective. Things we will probably link to when we have would be things line code formatter setup, etc. etc.
Sounds good? - I will probably not find the time to update the guide before Sunday (or later).
After an internal discussion with @AndyScherzinger we suggest to handle new PRs in this way:
(of course this is just a discussion base and is not fixed)
Feedback and ideas are more then welcome
@LukasReschke regarding play store beta
We should really going on with this...
Absolutely!
I'll do this now :+1:
Let us discuss in the PR: #68