Jetpack, AndroidX, and the Books

In what may be a first, the focus of the Android sessions at a Google I|O conference were not on a new version of Android. While Android P certainly got its fair share of coverage, the emphasis clearly was on Jetpack and AndroidX.

On one level, Jetpack and AndroidX are just branding exercises. Jetpack, in particular, isn’t a thing right now: it is merely a label applied to a semi-random collection of concepts and libraries that mostly already existed. And those concepts and libraries reflect Google’s biases (emoji? good! encryption? not so much!).

However, the power of branding cannot be dismissed. Google is likely to heavily promote the Jetpack brand for the next couple of years, at minimum. Eventually, Google will kick it to the curb, as they have lots of other brands, but for the time being, Jetpack is going to “rule the roost” in terms of mindshare.

And, in truth, something like Jetpack is needed. While I disagree with some of the choices, reducing the mental footprint of Android app development is necessary, as we approach the 10-year anniversary of Android 1.0. Here, branding becomes important, in that developers can rely on brand signals to better determine what knowledge resources are up to date with respect to Google’s prescriptions for app development.

Similarly, while AndroidX does not directly change what is in the suite of libraries, making a bright-line cutover to a new comprehensive naming-and-numbering scheme is welcome… though not without some pain.

(and it is a sign of my age that I keep trying to type “ActiveX” for “AndroidX”…)

The pain comes in the conversion.

Google focuses on individual projects, and rightly so. For any given Android existing app project, Jetpack is not something that you will worry about; Jetpack mostly will be for new projects and major rebuilds of existing projects. The pain for existing projects primarily will be in the one-time conversion to the new AndroidX artifacts and packages. Google seems to be doing a fairly good job at providing tools for that conversion.

There may be long-term lingering pain from libraries, as I am skeptical that “Jetifier” will be reliable. Converting pre-AndroidX references in compiled code into AndroidX references is the sort of thing that probably can work most of the time but feels fragile. But, once again, the power of branding plays a role, as I expect “AndroidX-ready” or Jetpack-ready” sorts of slogans to be used to identify libraries that are ready for use in an AndroidX project.

The bigger pain stems from our knowledge bases. Books, courses, blog posts, Stack Overflow answers, and the like do not change on their own. That requires work. Some of this stuff is unaffected by the Jetpack/AndroidX shift. For the rest, what I expect to happen most of the time is that the older material will remain as-is, but it will get replaced, in terms of attention, by things that explicitly reference Jetpack and AndroidX.

Which leads me to… me. It’s possible that I am the single most affected person on the planet with respect to these changes.

I have written the most material about Android on Stack Overflow by a fair margin. I am not planning on wading through 20,000+ answers to try to update them for Jetpack/AndroidX, though I will make some changes as I see the need. Similarly, I am not going to update 8 years of blog posts.

But I also have written the most material about Android in book form by a fair margin. Right now I am staring at 5,000-ish pages of material, much of which is at least partly affected by Jetpack/AndroidX. Some of that reflects direct changes — while Android Studio offers conversion tools for AndroidX, I have hundreds of sample projects. Some of that merely reflects “technical debt” with respect to the book content, where Jetpack/AndroidX merely accentuate the existing issues with that content (e.g., ListView instead of RecyclerView). For many authors, “what’s done is done”, but I focus on keeping these books relatively up to date… and for that, Jetpack/AndroidX is an unnatural disaster, but a necessary one.

My plans are still in flux, as it is not every week that 10 years of my work gets rendered a wee bit obsolete.

Here is what I can say with some certainty:

  • I will be publishing updates to The Busy Coder’s Guide to Android Development, Android’s Architecture Components, and Exploring Android in the coming weeks. These updates will not have any Jetpack/AndroidX material, as that stuff is still in an alpha state.

  • I will release further updates to The Busy Coder’s Guide to Android Development and Android’s Architecture Components in the next few months, but they will be few and far between. They also will not have any Jetpack/AndroidX material, as I need to wait on releasing anything based on that until Android Studio 3.2 reaches a stable release and AndroidX artifacts reach a 1.0.0 stable release.

From there… I have a plan, and we’ll see how that plan works over the coming months. Once Android Studio 3.2 and AndroidX 1.0.0 are final, expect more updates from me as to where the books are going.