Gradle is the build tool we use on this project. We use version 7, and version 8 is the latest. The Gradle support policy seems to be to support one version back from the latest, and possibly two versions, so version 7 is currently supported, but may not be once version 9 is released. It's not clear exactly when version 9 will be released, but it's slated to be next year. Upgrading now will guarantee us support through the release of Gradle 10 in the worst case, and possibly Gradle 11 in the best case, which should give us support through 2025 or perhaps 2026 if we're lucky.
Demo
N/A
Notes
The big change here is not upgrading Gradle, which was easy on its own, but rather that we've pulled https://github.com/sayyam/carouselview into the project source as a module rather than an external dependency. This is okay because both projects are Apache-licensed, so we've essentially forked carouselview. The reason for this is that carouselview has been abandoned for about 4 years, and in the intervening 4 years since it had its last update, the JCenter package repository, where carouselview was hosted at the time, was shut down, and carouselview has not been migrated to a new package repository. Gradle 8 enforces the JCenter shutdown by removing the jcenter() convenience method for resolving dependencies, but we would have wanted to stop using it either way because although JCenter still seems to be active in a limited, read-only way (otherwise we wouldn't have been able to spin up this project), it is well past its projected retirement date of February, 2022, and could presumably disappear for good at any moment, which would make it suddenly impossible to build the project. Also, there's a pretty good case to be made for bringing abandoned repositories in-house anyway, because it makes it easier to fix problems with them that may arise in the future. I did briefly research alternatives to this library and I suspect that there may be built-in Android capabilities that make this capability much easier now (because I couldn't find any alternatives that weren't also abandoned), but those probably won't be drop-in replacements, so I held off on conducting any surgery.
Given the previous point, it's probably not worthwhile to closely review the copy-pasted files from carouselview; they're broken out into a separate commit to make it easier to ignore them.
Testing Instructions
Open Android Studio and in the terminal window, run ./gradlew build --refresh-dependencies. It'll take a while, but it should work.
Check the deprecation warnings in the build output and confirm that it refers to features deprecated in Gradle 9.0 rather than 8.
Run the app in the emulator and confirm that everything (especially the image carousel) continues to work as expected.
Overview
Gradle is the build tool we use on this project. We use version 7, and version 8 is the latest. The Gradle support policy seems to be to support one version back from the latest, and possibly two versions, so version 7 is currently supported, but may not be once version 9 is released. It's not clear exactly when version 9 will be released, but it's slated to be next year. Upgrading now will guarantee us support through the release of Gradle 10 in the worst case, and possibly Gradle 11 in the best case, which should give us support through 2025 or perhaps 2026 if we're lucky.
Demo
N/A
Notes
carouselview
. The reason for this is thatcarouselview
has been abandoned for about 4 years, and in the intervening 4 years since it had its last update, the JCenter package repository, wherecarouselview
was hosted at the time, was shut down, andcarouselview
has not been migrated to a new package repository. Gradle 8 enforces the JCenter shutdown by removing thejcenter()
convenience method for resolving dependencies, but we would have wanted to stop using it either way because although JCenter still seems to be active in a limited, read-only way (otherwise we wouldn't have been able to spin up this project), it is well past its projected retirement date of February, 2022, and could presumably disappear for good at any moment, which would make it suddenly impossible to build the project. Also, there's a pretty good case to be made for bringing abandoned repositories in-house anyway, because it makes it easier to fix problems with them that may arise in the future. I did briefly research alternatives to this library and I suspect that there may be built-in Android capabilities that make this capability much easier now (because I couldn't find any alternatives that weren't also abandoned), but those probably won't be drop-in replacements, so I held off on conducting any surgery.carouselview
; they're broken out into a separate commit to make it easier to ignore them.Testing Instructions
./gradlew build --refresh-dependencies
. It'll take a while, but it should work.Closes #214