powered by Jive Software

Smack Android API requirements

So I wanted to bump my Smack from 4.3-heavilydiverged to 4.4, and had to realize that in e98d42790a, the API level is raised from r9 to r21. As I’m currently targeting r14, this is an inacceptable change (for my project).

What is the specific reason for this API bump? Can we still make Smack 4.4.x work on Android 4.x (r14)?

Would it be possible to document the Java API / Android API levels somewhere, e.g. in https://github.com/igniterealtime/Smack/wiki/Smack-Release-Life-Cycle?

Thanks :slight_smile:

It got raised to 19, not 21.

Rest assured that the times where I rolled a dice to determine the minimum required Android API for Smack are long over (In fact, I never did roll a dice).

Not without putting significant work ripping out the parts require newer APIs.

I am not going into an argument if supporting anything below Android API 19 is sensible. But be assured that I believe to be very conservative when raising the minimum required Android API level in Smack. In fact, I believe this is only the second time this was done in many years.

But now it was time. I also note that Smack 4.4, which includes the requirement change, is not released nor is there any ETA on the release. By the time the release eventually happens, you probably really should not support anything below API 19.

Those things are usually documented in the README of the release series. Such a README does currently not exist yet. I really should create one now.

Thanks very much, now I can sleep again at night. I know it can be too much to ask, but a short list of the things that require the new API would have been helpful. Something like “Smack 4.4 core is heavily using Java NIO, which requires r19”.

I’m aware of that. But you expect me to submit my patches to the master branch, so I have to develop against the unreleased 4.4 anyway, or forward-port my patches from 4.3 without testing them.

Unless you are willing to accept feature submissions against 4.3, or to backport my submissions immediately to 4.3, I’m in a very uncomfortable place, and I wanted to reduce the pain of contributing to Smack.

P.S: There is actually an ETA on the 4.4 release in the linked Smack-Release-Life-Cycle wiki page, and it says Q4/2019, which is sufficiently close for me to worry :wink:

I can’t remember stating any such expectation.

There are certain restrictions of which kind of patches should be applied to which branch. Patches for the current stable branch (i.e., the ‘4.3’ branch at the time of writing) should

  • be minimal
  • be bugfixes
  • add no new features
  • introduce no API changes
  • apply “easily” on the master branch

The first line of that pages states

This plan is subject to change. No guarantees are given about the availability of a release.

Essentially, that reduces the patches you will accept in 4.3 to bugfixes. The features I’m working on (like the stream language, or a wrapper around XEP-0066 OOB) don’t qualify for inclusion into 4.3.

So essentially, I have the choice between maintaining a fork of 4.3 (we’ve been there before, and it was ugly) or becoming as “conservative” as you, and bump my SDK level (for which I’m not quite ready yet).

Or maybe you have a better suggestion for how to go on? :wink:

Unfortunately I believe that there is no win/win situation. Somebody probably has to “loose”, And judging from the current Android version distribution chart, which shows that the number of people still using Android API < 19 is very small, that is probably the best choice for the loosing group.

If I where you, then I’d probably create a ‘stable’ branch of yaxim using Smack 4.3 and use a composite build with Smack 4.4 in yaxim’s ‘master’ branch. That way you can still a little bit support the shrinking fraction of Android API < 19 users. Thought they probably won’t get new features but only bugfixes, but that decision is then up to you.

The ‘4.3’ and the ‘master’ branch have already heavily diverged. And I have limited resources, especially the kind of spare-time and unpaid, to support the 4.3 branch with new features.