You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The DataFrame project infrastructure has become large, complex, and fractured, making it difficult to maintain, and we often forget to bump versions in places because they are not synced.
I believe this sample project can be used as a good base for the DataFrame project itself:
(type safe) convention plugins allow us to remove duplicate build code and avoid using allProjects {}
(It's also the recommended way to structure builds according to Gradle and Kotlin)
It fixes the issue where we have to manually sync versions to subprojects like /plugins/keywords-generator. We can simply use a build-settings convention plugin that finds and sets up the correct version catalog :)
Create "common dataframe IO plugin" convention which provides and sets up plugins we use everywhere, like KtLint, binary compatibility validator, publisher, build config
Move Korro logic into dedicated convention (we now have duplicate logic in :core and :samples)
Make the setup for running the compiler plugin inside local modules a convention plugin (currently worked out in :samples, but we might need it in other places later as well). Alternatively, we could turn :samples into a separate project, like the examples.
Move :plugins:expressions-converter, :plugins:keywords-generator, and :plugins:public-api-modifier (if we actually use that one) into build-logic. They are only used from local build files, so essentially, they're already convention plugins.
Move :core:dependencyUpdates task to convention plugin. It depends on dataframe via our old KSP plugin which will not be published anymore for beta5+ See dependencyUpdates convention plugin #1821
Related to #1614
The DataFrame project infrastructure has become large, complex, and fractured, making it difficult to maintain, and we often forget to bump versions in places because they are not synced.
I've been experimenting with gradle convention plugins and composite builds: https://github.com/Jolanrensen/GradleConventionsExperiment
I believe this sample project can be used as a good base for the DataFrame project itself:
(It's also the recommended way to structure builds according to Gradle and Kotlin)
/plugins/keywords-generator. We can simply use a build-settings convention plugin that finds and sets up the correct version catalog :)We could introduce it gradually:
allProjects {}logic into dedicated conventions (likedfbuild.kotlinJava8anddfbuild.kotlinJava11, for instance) Convention plugins part 2 (and disable KSP/Gradle plugin) #1670:examplesbe separate projects and use the compiler plugin #1614 and Update android example #1610, WIP: Examples separate projects #1677:samplesinto a separate project, like the examples.:plugins:expressions-converter,:plugins:keywords-generator, and:plugins:public-api-modifier(if we actually use that one) intobuild-logic. They are only used from local build files, so essentially, they're already convention plugins.:core:dependencyUpdatestask to convention plugin. It depends on dataframe via our old KSP plugin which will not be published anymore for beta5+ SeedependencyUpdatesconvention plugin #1821