Inspired by community projects like <Awesome Kotli...
# feed
b
Inspired by community projects like Awesome Kotlin & multiplatform-libraries I've decided to write the next gen of such projects. Introducing KAMP (camp but with k, because you can't have kotlin without k...)! This is still in early stages of development, but the idea is the self-updating catalog that automatically scans various maven repositories and finds kotlin libraries. Today I'm happy to share the scanner preview, that is already able to scan mavenCentral and jcenter. Turns out there are over 1.3k kotlin libraries published with gradle metadata on maven central alone! You can have a look at them all in
sampleData/mavenCentral.zip
. The end goal of the project is a hosted web-service to serve as a one-stop-shop for all your kotlin lib needs allowing you to filter available libraries by the set of platforms your project is targeting. Star/watch the repo for further updates :)
❤️ 1
👍 5
m
You’re building Koogle 😄
b
Wait what?
Got a link?
m
No, I mean you’re making a Google search engine for Kotlin libraries. So I’ve just dubbed your approach Koogle 😛
b
Damn man, don;t scare me like that 😄 Thought I've spent all this effort in reinventing the wheel
😁 3
m
So far it’s just the scanner, right? No website for exploring yet.
b
Not yet. Want to nail down the scanner first before I start with the website.
m
What really annoys me all the time is having to find the latest version for every single Kotlin library. I go to http://mvnrepository.com, look up the library and find the version number. Your website could make that significantly easier for me 🙂
b
I'm hoping to get started with the rudimentary website sometime next month
m
I hope built with Kotlin React 😛
b
That's the plan. Auto population of libs and version sync. Also relevant links to source code and publishing repos
Either that or fritz2.
a
big problem is bintray repositories...also #package-search do autofetch from maven repos, and implemented by jetbrains, but bintray separated repositories not fetched at all yet...
it also contains and web version as i see from google - https://package-search.jetbrains.com/
m
😮 that thing was well hidden
No website though. I don’t like IDE-first 😅
a
https://libs.kmp.icerock.dev in future will be reworked to dedicated fullstack kotlin multiplatform application (mobiles, desktop, web, backend) and will be work with current logic of autofetch from maven repos, but scanning will be very good feature, if it will not cut all bintray repos from registry
m
Doesn’t work with my IDE either. Can’t even see it in Marketplace
you can ask questions about state of project in #package-search
(it's not about libs.kmp, its about package-search)
m
again, well hidden 😮
Does it include Java-only projects?
a
see on page 🙂 here also multiplatform filter
m
OK, the UX of both websites isn’t great Developers designing I guess 😅 Looking forward for all projects to evolve 🙂
I don’t need a multiplatform filter. I need a “Kotlin-first” filter 😛
Libraries made for Kotlin, not compatible with Kotlin
b
It wasn't easy, but I've managed to figure out a way to pull all Bintray repos linked to jcenter as well! The scanner is currently running, will post back here with the results
m
Cool. Test with
raptor
(group
io.fluidsonic.raptor
) and see if you find it. It’s neither in Maven Central nor in JCenter but a personal Bintray where other of my libs are linked to JCenter.
b
Also, while package-search is great, main pain poitn with it (ant other catalogs like it) for me was that I cannot select a list of platforms I want the lib to be available for
@Marc Knaup, if it's not linked to jcenter it won't be found as the curent bintray scanner only scans linked jcenter repos repos. But I do have a plan to write an extension to that to do a full bintray scan 😉
m
Maybe you can just allow people to register their own repositories. Just like you can add URLs to Google :)
b
Of course! 😄 But I took that as a given, since otherwise it'd be a regression from other projects like this out there
m
I don’t know other projects doing that 🤔
b
Both, awesome-kotlin and icerock mpp-libs allow you to submit packages
m
Yes but not package repositories
That are scanned 🙂
I wouldn’t have to submit to awesome-kotlin if it scans repos anyway. Mine are all in JCenter & Maven Central
Maybe GitHub one day. Do they have a central one?
b
icerockdev scans submitted repos for latest version 😉
The main problem between them all is the fact that users need to submit, which I'm trying to solve now 🙂
So the plan is that while you shouldn't need to submit your repo, you could if it's not captured for whatever reason
m
Most libraries are either in JCenter or Maven Central anyway, so that’s a solid basis
b
That's my thinking as well. Wanna get the scanner ready for those 2 (it's already quite pluggable so it shouldn;t be hard to add new repos in the future) and focus on getting the website out.
Happy to accept some help with the website if anyone's interested 😛 😄
m
Already overflowing with OSS work unfortunately 😅
b
Yeah, saw your post on libs channel. Quite a baggage you carry
m
too much fun building all that stuff ¯\_(ツ)_/¯
b
Just realised that I didn't push mavenCentral scan output to LFS properly, here it is now
m
Nice. There probably will need to be a way or a logic to exclude certain (sub)libraries because they’re just “behind the scene” dependencies of other libraries.
Using them directly would probably fail spectacularly 🙂
b
Lol, I'm shocked how many libs are not being published to maven-central. The scanner already found 900 Kotlin libs on jCenter and it didn't even start scanning
heavy
groups like
com
io
or
org
😮
What do you mean by sub-libraries?
Like ktor-client-serialization for ktor-client?
If you mean filtering out stuff like ktor-client-jvm, ktor-client-js etc... then it's already doing that, only the wrapper modules are included in the final output with references to platform-specific modules
m
No. Libraries that are added implicitly, invisibly (implementation) and not meant for direct usage. https://mvnrepository.com/artifact/io.fluidsonic.i18n I have for example
fluid-i18n
. Behind the scenes it uses
fluid-i18n-data-identifiers
and
fluid-i18n-data-regions
. The latter use private Int-based indices that change between versions. Normal humans can’t do much with these libraries and their API is not stable.
b
Ah, I see. Well it might be possible if more details are added in gradle metadata in the future, but as things stand now I don;t see a way to reliably do that
m
Yeah maybe there’s a publishing property for that that would fit but is rarely used. Just to keep in mind. When looking at the other two projects above I was flooded by useless sub-libraries in the result. But that’s a different thing that you’ve already covered 🙂
b
Can you drop me a link to your bintray repo?
m
Kotlinx, Ktor, Google repos are important for a start
b
I think i'll stick with bintray & maven central until I get the website published 😄 Extra repos can be added quite easily afterwards
👍 1
Btw kotlinx and ktor repos are on bintray so there already being picked up