JCenter & Bintray must be some of the worst se...
# random
m
JCenter & Bintray must be some of the worst services we have to work with. Publishing to Bintray works intermittently and is slow as hell. Sync with JCenter is partially broken. JCenter downloads are partially down. (https://status.bintray.com/) Gradle publishing with secure checksums is still broken for Kotlin MPP. And don’t even start with Bintray’s horrible and buggy website. Publishing plugins to Gradle Plugin Portal requires manual approval for updates. Maven Central has requirements that make every Gradle setup way more complicated. Today is one of those days where nothing works. At some point the IDE even refuses to close windows and after a restart all my file changes are gone. Maybe it’s just not my day 😅 I really wish Kotlin would get its own official build & publishing ecosystem 😐
💯 5
blob hug 2
7
👍 2
n
Some other issues to mention about Bintray: • Obscure error messages that lack basic detail • Official Bintray Gradle plugin isn't Gradle Kotlin DSL compatible • Stingy Maven Artifact versioning requirements (EVERY project should be able to decide what versioning system it uses) • Bintray website isn't very user friendly
Keeping Gradle as the defacto build system for Kotlin would be the way to go. Publishing on the other hand needs a BIG overhaul. Like @Marc Knaup has mentioned Kotlin needs its own publishing ecosystem that isn't under the control of Bintray (JCenter), or Maven Central. Instead there needs to be an organisation setup (one that is recognised by Gradle Inc) that just deals with the distribution of Kotlin libraries, and Gradle plugins that are Kotlin related.
j
If it was community run, I'd donate 50 bucks per year. (A coffee per month).
With 5000 users, that would be 250K / year - should be enough to build something nice?
l
@Marc Knaup Are you using publish=1 to publish on bintray?
m
yup
Haven’t touched my publishing code in a while. But it seems to be working now. I guess that one was a temporary issue with JCenter.
l
FYI, I stopped using publish=1 in multi-modules projects because it's become slow as it'd block the response until it's propagated to all servers, and would return 405 or 409 when it replied.
I have a complicated setup in Splitties that I want to extract as a Gradle plugin that still allows me to publish when all the artifacts are uploaded, with retries for that last long and prone to fail http call (until it's complete).
m
I should probably move to manual publishing on the website as that would be faster then 😅
It would be awesome if we could just publish to GitHub and then sync to Maven Central and JCenter.
👍 2
a
I think "manual publishing on the website" is a must for multi-module projects. In my projects I first upload everything, and then verify all uploaded Gradle modules can be resolved in a test project. This is done automatically from GitHub actions. Then if all Jobs are green, i just manually pressing the publish button.
l
That "publish if all jobs are green" can actually be automated (at least for bintray, there's a public API endpoint for that), that's what you inspired me to do back then, Arkadii.
👍 1
b
There was an attempt at a buildsystem: https://github.com/cbeust/kobalt
l
I think such an attempted could be rebooted with coroutines (kobalt predates Kotlin 1.1 and 1.3)
Lots of asynchronous work in build systems
It's also an opportunity Gradle could take. I'll see if they're hiring.
n
There is an opportunity for Gradle Inc to provide an alternative service to Bintray, and Maven Central which has support for Kotlin libraries out of the box (incl providing a official Gradle plugin that is Gradle Kotlin DSL friendly). Who knows maybe JetBrains decides to do something similar 🙃. Stranger things have happened.
b
this stuff is so complicated to get right
e
have you seen the Jetbrain Space?
m
So they have Maven Central and jcenter sync? 🤔