Gradle Newsletter, December 2016 ======== As the year draws to a close, we want to reflect on what has been a pivotal year for Gradle. It was the year in which we started to think of Gradle as a _platform_ rather than solely as a build tool. The build tool is of course necessary for effective build automation and continuous delivery, but is it—or any other build tool for that matter—sufficient on its own? We believe our users need more, which is why we introduced _build scans_[1] this year and plan to provide additional services like them in the future. And it's not just great tools and services that we value: we know it's important to learn how to use them effectively as well. To that end, 2016 saw the first steps towards new training options and a new collection of guides. Let's now take a look at these and other significant events of 2016 in more detail. Better information ------------------ The Gradle platform is always evolving, so it's important to keep abreast of the changes. Many of you will have kept track of the build tool release notes for that reason. While useful, those release notes don't cover what's happening within the rest of the platform and it's easy to miss a new feature or other significant change in all the detail. So we rebooted both our blog and this newsletter to help you stay up to date with everything happening across the Gradle ecosystem. Speaking of the blog, we recently added support for categories and the option to subscribe[2] independently to each of them. Now you can easily keep track of all the posts or just the subset that you're interested in. As a starting point, we recommend that you subscribe to the New Features category so you don't miss any big feature announcements. This year, we also started to look at new ways to help you learn Gradle. We began by introducing two new guides to cover important topics that weren't adequately addressed before: improving your build performance[3] and migrating from Maven to Gradle[4]. These guides are the vanguard of a more concerted effort in 2017 to dramatically expand the coverage of important topics. And many guides will be aimed at simply making it easier to learn the basics of Gradle. In October, we trialled a free, online, introductory training course as an additional mechanism to help as many people as possible get started with Gradle. It worked out well, so we've decided to offer a second free training on January 11-12th[16], which is now fully booked. Don't worry if you missed out, though, as there will be another opportunity to attend this training in April. Stay tuned! Gradle Cloud Services --------------------- Earlier this year, we introduced Gradle Cloud Services to the world at the Gradle Summit. This was the first step in expanding the Gradle platform beyond the build tool, with build scans providing a better way to understand and tune your build, while also allowing for more effective collaboration. Not only can you use our publicly-available hosted service[24], but you can also run it privately with Gradle Enterprise[25]. Since that introduction, we have produced regular releases[5] with improvements to the user interface and the introduction of important features like customizing build scan data. Expect more features and services over the months to come, such as the ability to compare the dependency graphs between two build runs—particularly useful when you're using dynamic dependency versions. Continuous improvement in the build tool ---------------------------------------- The Gradle build tool remains at the core of the platform, and it saw significant progress in 2016. Our primary and unremitting focus was on improving the tool's performance for a wide variety of builds, with big improvements in dependency resolution and configuration times. This year also saw us flip the switch on the Gradle Daemon, enabling it by default in Gradle 3.0. And version 3.3—whose first release candidate is now available[6]—makes `gradle tasks` execute much more quickly than before, particularly for large multi-project builds. We also made incremental builds work better by adding greater control over how inputs and outputs are defined, ensuring that if tasks don't need to run, they won't. And our focus on performance didn't come at the cost of important new features, as witnessed by the introduction of _composite builds_. This feature may very well change the way you think about structuring your builds and it certainly empowers IDE users. If this is the first time you have heard of composite builds, check out the blog post[7] that introduces them. Let's not forget that 2016 was also the year in which you could start building projects based on Java 9 with Gradle. And despite the fact that Java 9 is still being actively developed, you can even run Gradle on its JDK. We will continue to track this new version of Java and incorporate support for features like the Java Module System (AKA Jigsaw) as soon as feasible. Even the way you define your builds is evolving, with the introduction of Gradle Script Kotlin[26] earlier this year. Progress has continued apace and it should reach version 1.0 early in 2017, giving you a type-safe way to write Gradle build scripts along with strong IDE support, including refactoring and autocompletion. It's worth bearing in mind that we don't intend Gradle to be a build tool exclusively for the JVM ecosystem. That's why, for example, so much effort has been invested in our native language support. With that in mind, we were very happy to see LinkedIn broaden our language support by open-sourcing PyGradle—their collection of plugins for building Python projects. We are fortunate indeed to have such high-quality contributions from our community! Last, but for many of you not least, 2016 saw the long-awaited arrival of the `compileOnly` configuration—the one that behaves like Maven's `provided` scope. You can read about it in one of our blog posts[27] in case you missed it first time around. Its introduction highlights the increased capacity of the Gradle team as we continue to grow, allowing us to focus on quality-of-life improvements, not just new features and performance. Long may that trend continue! Hopefully our review has given you an idea of the direction that we're headed, but we also want to make it more concrete by looking at what you can expect in 2017. In 2017... ---------- There's no doubt about it, we're excited for next year! Here are just a few of the changes you can look forward to: - A greatly expanded portfolio of guides of varying types, particularly task-oriented ones - Even better build tool performance for everyone - A shared _task output cache_ that further speeds up builds, especially for teams - Powerful support for separating APIs from their implementations, resulting in another way to avoid unnecessary compilation - Feature parity between Groovy and Kotlin build scripts, with the latter allowing for awesome IDE support - More value from Gradle Cloud Services, for example with a _timeline_ page that gives you a graphical view of a build run—providing yet more insight into what your build is doing and helping you identify potential problems or opportunities for improvement Our very own Stefan Oehme provides more details on some of these in his article[8] for the Eclipse newsletter. With that, we look forward to seeing you in the new year! —The Gradle Team PS: What were your Gradle highlights of 2016? What are you most looking forward to in 2017? Please let us know at newsletter@gradle.com. Announcing the Gradle Summit 2017 --------------------------------- We're delighted to announce that both the call for papers and attendee registration are now open for the Gradle Summit 2017[15]. Come for unparalleled insight into what's happening in the Gradle ecosystem and how best to use the platform. In addition to all the learning opportunities, you'll be able to talk in person to the Gradle team and other passionate members of the Gradle community, including folks from the likes of Google and Netflix! As a reader of our newsletter, you can get a $100 discount on the entry price by using the coupon code `gsnews100`. This is in addition to the current $150 off for early-bird registrations. New Releases ------------ - **Gradle 3.3 RC1**[6] improves the performance of `gradle tasks`, provides support for Visual Studio 2015, and incorporates version 0.5.0 of Gradle Script Kotlin. - **Gradle Script Kotlin 0.5.0**[10] improves build startup times by caching the compiled build scripts. The Gradle API has also been improved to make it easier to use from Kotlin build scripts. - **Gradle Enterprise 2016.4.1**[28] is a patch release that fixes problems with the display of multi-lined custom values and TestNG results. The specific changes are detailed near the bottom of the release page. Featured Plugins and Tools -------------------------- - **PyGradle**[12]: LinkedIn have been heavy users of Gradle for some time now and their contribution of the PyGradle collection of plugins will make the lives of many other polyglot users that much easier. A complete language extension, particularly for one not based on the JVM, is no small undertaking, so we're immensely grateful that LinkedIn have open sourced the plugins. If you'd like to get started with building Python projects with Gradle, check out the blog post[11] introducing the project and the README on the GitHub project page. - **Git Publish Plugin**[13]: as the project page says, this plugin allows you to "publish files to a remote Git repository". As an example of its utility, we find it particularly useful for publishing to GitHub Pages from our Gradle builds. Perhaps most importantly, it doesn't use the native Git commands, relying on the jGit library to do the work instead. This plugin highlights how Gradle allows you to do more than build software, although it can enhance that process too. Upcoming Events --------------- - Feb 22–24: DevNexus[14] - Jun 22-23: Gradle Summit[15] Upcoming Trainings ------------------ - Jan 11-12: Introduction to Gradle[16] (Online—no more places available) - Jan 24–27: Advanced Gradle Fundamentals for Java/JVM[17] (Online) - Jun 19-21: Gradle In-Depth[18] (Palo Alto) Job Openings ------------ - Gradle Build Tool Software Engineer[19] (Worldwide) - Gradle Cloud Services Back-end Engineer[20] (Worldwide) - Gradle Cloud Services Front-end Engineer[21] (Worldwide) - Gradle Services Engineer[22] (USA) - Developer Advocate[23] (San Francisco) -- Gradle Inc. 325 9th Street San Francisco, CA 94103 https://gradle.org %%unsubscribe%% (Unsubscribe from future Gradle emails) [1]: https://blog.gradle.org/introducing-build-scans "Blog: Introducing Build Scans" [2]: https://blog.gradle.org/subscribe "Subscription Feeds for the Gradle Blog" [3]: https://gradle.github.io/performance-guide/ "Gradle Performance Guide" [4]: https://gradle.org/migrating-a-maven-build-to-gradle/ "Migrating from Maven to Gradle" [5]: https://gradle.com/enterprise/releases "Gradle Enterprise Releases" [6]: https://github.com/gradle/gradle/releases/tag/v3.3.0-RC1 "Gradle 3.3 RC1 Release" [7]: https://blog.gradle.org/introducing-composite-builds "Blog: Introducing Composite Builds" [8]: http://www.eclipse.org/community/eclipse_newsletter/2016/december/article4.php "The Future of Build Tools—Eclipse Newsletter" [10]: https://github.com/gradle/gradle-script-kotlin/releases/tag/v0.5.0 "Gradle Script Kotlin 0.5.0 Release" [11]: https://engineering.linkedin.com/blog/2016/08/introducing--py-gradle--an-open-source-python-plugin-for-gradle "PyGradle—Gradle for Python Projects" [12]: https://github.com/linkedin/pygradle "PyGradle on GitHub" [13]: https://github.com/ajoberstar/gradle-git-publish "Git Publish Plugin for Gradle" [14]: https://www.devnexus.com/s/index "DevNexus (Atlanta, GA)" [15]: https://summit.gradle.com/ "Gradle Summit 2017 (Palo Alto, CA)" [16]: https://go.gradle.com/free-training/ "Free Introduction to Gradle Training (Online)" [17]: https://www.eventbrite.com/e/advanced-gradle-fundamentals-for-javajvm-tickets-29528264835 "Advanced Gradle Fundamentals for Java/JVM (Online)" [18]: https://www.eventbrite.com/e/gradle-in-depth-training-palo-alto-tickets-29778177330 "Gradle In-Depth (Palo Alto)" [19]: https://boards.greenhouse.io/gradle/jobs/85251 "Build Tool Software Engineer Job (Worldwide)" [20]: https://boards.greenhouse.io/gradle/jobs/217786 "Gradle Cloud Services Back-end Engineer Job (Worldwide)" [21]: https://boards.greenhouse.io/gradle/jobs/206107 "Gradle Cloud Services Front-end Engineer Job (Worldwide)" [22]: https://boards.greenhouse.io/gradle/jobs/85247 "Gradle Services Engineer Job (USA)" [23]: https://boards.greenhouse.io/gradle/jobs/248017 "Developer Advocate Job (San Francisco)" [24]: https://gradle.com/get-started "Get Started With Build Scans" [25]: https://gradle.com/enterprise "Gradle Enterprise Home Page" [26]: https://blog.gradle.org/kotlin-meets-gradle "Blog: Kotlin Meets Gradle" [27]: https://blog.gradle.org/introducing-compile-only-dependencies "Blog: Introducing Compile-only Dependencies" [28]: https://gradle.com/enterprise/releases/2016.4 "Gradle Enterprise 2016.4.1 Release Notes"