-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modularize and decouple from rust-windowing #372
Comments
Sorry for dropping the ball on this. We have merged a few PR's to xbuild recently that have significantly closed the gap in terms of features supported by xbuild/cargo-apk. I'm still happy to transfer the xbuild repo to The remaining open question for me is who has access to this repo and authorization to transfer it to a different org? |
ok pulled the trigger on my end xbuild is moved |
Someone with write access to this repo would also need to handle the transferring of any PRs/issues for |
Just looking at re-filtering |
I've just moved the |
Okey, I think the standalone I think it'll also make sense for the |
The ndk-glue and ndk-macro subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-glue This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-glue --path ndk-macro \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e Although ndk-glue is also being deprecated at the same time as splitting it out this commit doesn't make any README changes for this repo yet which will be addressed separately.
The ndk-glue and ndk-macro subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-glue This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-glue --path ndk-macro \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e Although ndk-glue is also being deprecated at the same time as splitting it out this commit doesn't make any README changes for this repo yet which will be addressed separately.
The ndk-glue and ndk-macro subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-glue This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-glue --path ndk-macro \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e Although ndk-glue is also being deprecated at the same time as splitting it out this commit doesn't make any README changes for this repo yet which will be addressed separately. For now the ndk-examples continue to use the ndk-glue crate (the 0.7 release) and the current plan is to move these examples to the cargo-apk crate where they will be ported to use `android-activity`
Since looking at The examples package needs to use a |
As a bonus (since CI didn't actually have any host tests to run for ndk-context previously) the standalone repo has a patch to get the Doc-tests working before updating the CI for the standalone repo. |
I think it could be simpler to just have a single patch / PR that removes everything that's been split out in one go instead of dealing with order dependent patches and ensuring the CI is updated for each intermediate stage of removal. In case it's necessary to iterate I think that'll be easier to handle too. |
The ndk-glue and ndk-macro subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-glue This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-glue --path ndk-macro \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e Although ndk-glue is also being deprecated at the same time as splitting it out this commit doesn't make any README changes for this repo yet which will be addressed separately.
The ndk-context subdirectory has been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-context This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-context \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e
Should we also move For the rest, I am under enough time pressure lately that I cannot really look into all this separation/cleanup for now, thanks for understanding. |
done
nothing particularly difficult here. @rib is splitting up the repos as discussed, I can approve the PR. the main thing is we don't merge any PR's in this repo anymore that aren't to the ndk and ndk-sys crates. |
No worries, I think I am nearly done with the bulk of the changes to modularize the repo. The last thing was just to make the patch that removes cargo apk from this repo. I'll hopefully get that ready soon. I think the filtered repos on rust-mobile are in good shape already but it could be good if you can at least cast an eye over them (mainly the cargo-apk repo). As @dvc94ch said, it would be good to avoid landing changes outside of ndk and ndk-sys to avoid having to redo the filtering ideally. |
The main point is also that I need to touch Especially that new rule of only using this repo for Perhaps we should pull in @rust-windowing/publishers (I can do it myself, just looking for some acks) to move this entire repo as a whole to |
I think the cargo-apk repo itself on rust-mobile could be good to go, though we should probably wait until merging the PR as the final commitment for when to switch (just incase we want to make a last moment tweak to it). One minor tweak I was considering was just to update the commit message that fixes CI for the standalone repo to just repeat the information about how the repo was originally filtered from this repo. |
And yeah some additional ACKs e.g from @msiglreith and perhaps earlier contributors like @m64 and @francesca64 could be good to get here. |
Thanks for the ping - I don't have a problem with moving this away from @rust-windowing, if you think it'll help you find more maintainers and such. I second the need for an ACK from @msiglreith, since they maintain the Android backend for Wrt. crates.io ownership:
While @rust-windowing/publishers can publish and yank to those crates, we can't change their ownership - and as such I can't help you transfer those to something like |
I guess it would make sense for @MarijnS95 to get ownership rights on crates.io for the |
I'm fine with the transfer, more collaboration is welcome (currently can't help much myself tho) |
btw just to note that, yep, @msiglreith is already a co-owner of the rust-mobile organization 👍 |
Regarding team owners, it doesn't seem to be possible : https://doc.rust-lang.org/cargo/reference/publishing.html
|
ah okey, interesting. I'd figure that to start with the main ownership change that would make sense to me is that @MarijnS95 would get ownership for cargo-apk and ndk-build since the new standalone It could also make sense for @MarijnS95 and @dvc94ch to get ownership of the Having I guess it could make sense for more people including @MarijnS95 to co-own the ndk + ndk-sys crates but since these are staying in the existing repo I expect the existing permissions associated with CI hopefully stay in tact even if the repo is transferred between organisations. |
…modularization The cargo-apk, ndk-build + ndk-examples subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/cargo-apk This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path cargo-apk --path ndk-build \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 9b4dbfa The CI for this repo is considerably simpler now that the examples have been moved to the `cargo-apk` repository since it now just checks that the `ndk` and `ndk-sys` crates successfully cross compile without running a hello_world example under an emulator. Runtime tests could be re-added in the future, but especially while there is no significant test coverage from the examples it's more valuable to keep those for testing `cargo-apk` packaging and simplify testing in this repo.
…modularization The cargo-apk, ndk-build + ndk-examples subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/cargo-apk This is being done as part of the modularization effort described in issue rust-mobile#372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path cargo-apk --path ndk-build \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 9b4dbfa The CI for this repo is considerably simpler now that the examples have been moved to the `cargo-apk` repository since it now just checks that the `ndk` and `ndk-sys` crates successfully cross compile without running a hello_world example under an emulator. Runtime tests could be re-added in the future, but especially while there is no significant test coverage from the examples it's more valuable to keep those for testing `cargo-apk` packaging and simplify testing in this repo.
Ok, I think we might be in a position where we can commit to the modularization via #374 now (I recently pushed a patch for the removal of @dvc94ch has already given it a thumbs up and I think it'd be good if @MarijnS95 can also take a look too if possible. The other checklist items in the plan above can be tackled in follow up changes after the initial modularization so then we can minimize the time that we pause landing changes in this repo. Dealing with updating the crates.io ownership permissions can also hopefully be dealt with asynchronously - though it would be nice to get a ACK from @tomaka about adding @MarijnS95 as an owner for |
I doubt you'll get them with a GitHub ping, but it would probably make sense to send them an email about it at some point |
As noted here #376 (comment) I hadn't fully appreciated that @MarijnS95 is also a member of I was thinking there were credentials associated with the CI for this repo that @MarijnS95 relied on to publish releases. It would probably still make sense for @MarijnS95 to be a co-owner for cargo-apk and ndk-build on crates.io but it's not a blocker for switching to the standalone repos. |
just tried transfering an issue. I think you can only transfer an issue within the same organization |
okey, yeah, sounds plausible. At least for the two PRs that were recently opened for cargo-apk I was able to make equivalent branches based on the original patches and have opened new PRs against the standalone repo. |
Ran into this last week that I cannot transfer issues outside of the
For completeness, as discussed in #376 the publish rights will stay intact as long as I remain part of @rust-windowing/publishers, at least until crate ownership is granted. I already received the rights from @tomaka for
Agreed. I think the split here is done and ready to be merged, would still like to go over the other repos through for a sanity check (mostly did that, you've seen the commit reviews by now) and hope we can add/update the readme's sooner than later - especially to make new visitors aware of this split. All that remains then is to rename this repo and transfer it to |
Cool! Just a suggestion, I'd recommend adding someone else to that from the org, so as to reduce the bus factor ;)
I'll try, sorry for the delay |
I think you need to give me permission to create repositories in @rust-mobile (just temporarily) - otherwise, @msiglreith can probably do it (they have admin rights in @rust-windowing as well) |
@madsmtm Whoops, I invited you with admin permissions (needed for the transfer, apparently)! |
Nice, looks like you also took care of renaming it to |
Yeah, I've completed the transfer to |
Cool, thanks @madsmtm |
* ndk-examples: port to use android-activity * Removes ndk-glue + ndk-macro as part of #372 modularization The ndk-glue and ndk-macro subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-glue This is being done as part of the modularization effort described in issue #372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-glue --path ndk-macro \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e Although ndk-glue is also being deprecated at the same time as splitting it out this commit doesn't make any README changes for this repo yet which will be addressed separately. * Removes ndk-context as part of #372 modularization The ndk-context subdirectory has been split into a stand-alone repository at: https://github.com/rust-mobile/ndk-context This is being done as part of the modularization effort described in issue #372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path ndk-context \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 107f03e * Removes cargo-apk, ndk-build + ndk-examples as part of #372 modularization The cargo-apk, ndk-build + ndk-examples subdirectores have been split into a stand-alone repository at: https://github.com/rust-mobile/cargo-apk This is being done as part of the modularization effort described in issue #372 The stand-alone repository was filtered like this: ``` git clone https://github.com/newren/git-filter-repo git clone https://github.com/rust-windowing/android-ndk-rs.git ndk-glue cd ndk-glue py ../git-filter-repo/git-filter-repo \ --path cargo-apk --path ndk-build \ --path ndk-examples --path-rename ndk-examples:examples \ --path LICENSE-APACHE --path LICENSE-MIT \ --path Cargo.toml --path rustfmt.toml \ --path .github --path .gitignore ``` The last commit in this repo that is included within the stand-alone repository is 9b4dbfa The CI for this repo is considerably simpler now that the examples have been moved to the `cargo-apk` repository since it now just checks that the `ndk` and `ndk-sys` crates successfully cross compile without running a hello_world example under an emulator. Runtime tests could be re-added in the future, but especially while there is no significant test coverage from the examples it's more valuable to keep those for testing `cargo-apk` packaging and simplify testing in this repo.
so think we can close this one too |
Okey, yeah no worries. I had been intending to continue using this issue to track follow up work for the modularization but I'm sure we'll figure it out ok from here. |
Following up from #365 here is a specific plan for us to modularize this repo
Why?
Several of the crates are very orthogonal from each other:
ndk-glue
in particular is unlikely to see continued development / maintenance so it would make sense to clearly sign post from here toandroid-activity
and provide an archive for posteritycargo apk
may eventually be superseded by something likexbuild
and it's also not inherently coupled to the the otherndk
componentsndk-context
redundant if we can instead encourage crates that support Android to have explicit initialization APIs that may be given a jvm + Context/Activity (and therefore enabling multiple Activities in a single process)rust-windowing
specific and there is probably more opportunity to foster collaboration around an organisation that's more broadly related to mobile OSs in general.Where to?
Since it's anticipated that most people interested in Rust + Android are likely also interested cross-platform mobile support, we have created a general rust-mobile organization, initially owned by the contributors to
android-ndk-rs
andandroid-activity
.The idea is that I will also move
android-activity
here, along with splitting theandroid-activity/examples
out into a new repo.I believe @dvc94ch was also open to moving
xbuild
here tooOther Rust utilities and build tools etc catering to supporting Rust development for mobile operating systems would also be welcome to create repos here
How?
These are key repos that would be split out of
android-ndk-rs
:ndk-glue
- A filter of thendk-glue
andndk-macro
subdirectories, updated with a notice to recommendandroid-activity
for new projects and then archived for posterity.cargo-apk
- would be a filter of thecargo-apk
+ndk-build
subdirectories andndk-examples
(renamed to `examples) and outstanding PRs + issues would be transferred to the new repondk-context
- A filter of thendk-context
subdirectoryndk
- After removing all the subdirectories that have been filtered into standalone repos this repo would then be transferred torust-mobile
(so all issues / PRs are preserved)How to filter the repos:
ndk-glue
cargo apk
ndk-context
Coordination
What needs to get done?
ndk-glue
ndk-glue
repo and push torust-mobile
ndk-glue
repondk-glue
repondk-glue
to recommend that new projects useandroid-activity
Open + merge a PR to remove thendk-glue
andndk-macro
subdirectories from this repocargo-apk
cargo-apk
repo and push torust-mobile
cargo-apk
repo (including porting the examples to build againstandroid-activity
instead ofndk-glue
)cargo-apk
repoOpen + merge a PR to remove thecargo-apk
,ndk-build
andndk-examples
subdirectories from this repondk-context
ndk-context
repo and push torust-mobile
ndk-context
repondk-context
repoOpen + merge a PR to remove thendk-context
subdirectory from this reporemovals from this repo
ndk-glue
,ndk-macros
,cargo-apk
,ndk-build
,ndk-examples
andndk-context
from this repoThis PR will indicate:
As follow up tasks we will:
ndk-glue
repo as "archived" on GitHub for posteritycargo-apk
issues / PRs from this repo to the standalone reporust-mobile
I'm happy to get the ball rolling with re-filtering the repos (since we already did one draft run of this a while ago) as well as getting CI bootstrapped for the standalone repos (I already have a draft for getting the
cargo apk
CI working and porting thendk-examples
to build againstandroid-activity
)Does this plan sound practical?
The text was updated successfully, but these errors were encountered: