We're currently working on the first release for Samza and have run into a problem involving the source release and our build system, Gradle. Both DataFu and Aurora use Gradle and will run into this issue as well when they do a source release.
Gradle provides a wrapper script, gradlew that allows the end user to run all the usual build tools without having gradle itself installed on the system. This script and its required resources are intended to be checked [1] to the source control this. This is contrast to Ant or Maven, which require those tools to be pre-installed on the system before executing a build against a build.xml or pom.xml, respectively. However, for the gradlew script to work, it downloads the a version of the gradle jar and requires that jar to be checked in as well. Counterintuitively, a project using gradlew must be bootstrapped by an install with gradle installed, or have the result of that bootstrapping checked into the repo. The problem lies with the Release Check List [2], which prohibits the inclusion of jars in a source release. Under this rule we effectively can't use gradlew as our build system in that we can't distribute it (absent some hacky solution like us trying to download the script and jar ourselves. We'd obviously prefer to avoid this.) I'm thinking we should make an exception to this no-jar rule for the gradlew jar. The Gradle project is open source [3], Apache 2 licensed [4] and intends for this jar to be included as part of the source of projects [1]. Finally, the jar itself contains only Gradle-generated classes with no other code fat-jarred [5]. The gradlew wrapper actually makes it easier for users to get and play with our code as it removes the need for any particular version of Gradle to be availabe beforehand (it also hides much of the complexity of the rapidly evolving gradle spec). Thoughts? -Jakob [1] "The wrapper is something you should check into version control." http://www.gradle.org/docs/current/userguide/gradle_wrapper.html [2] "This package may not contain compiled components (such as "jar" files) because compiled components are not open source, even if they were built from open source." http://incubator.apache.org/guides/releasemanagement.html#check-list [3] https://github.com/gradle/gradle [4] http://www.gradle.org/license [5] https://gist.github.com/jghoman/42f683bd92c3599cdf26