As mentioned, this has been suggested before, but the flexibility of being able 
to mix-and-match XEPs means there's no simple way to do it.

At the simplest end, we try to decide on a strict subset of XEPs to be defined 
as "XMPP-1.0"; this will ultimately fail as nobody can agree what should and 
shouldn't be included (Compliance Suites revisited.)

At the other end, we already have Capabilities Hashes which define the exact 
features a client supports; but these are neither human parsable nor comparable.

So any solution would need to be somewhere in between, preferably closer to the 
simpler end..



One idea would be to define feature subsets, much as the compliance suties 
already do, and assign each one a letter; then the version can be referenced as 
a combination of these, e.g. XMPP-1.0-AJM.


So, WRT the Compliance Suites:

  XMPP-1.0-A = Core Compliance: Core Client
  XMPP-1.0-B = Core Compliance: Advanced Client
  XMPP-1.0-I = IM Compliance: Core Client
  XMPP-1.0-J = IM Compliance: Advanced Client
  XMPP-1.0-M = Mobile Compliance: Core Client
  XMPP-1.0-N = Mobile Compliance: Advanced Client
  XMPP-1.0-W = Web Compliance (Core and Advanced)


A very basic client would support "XMPP-1.0-A", while an advanced client that 
supports everything would be "XMPP-1.0-BJNW" (no need to specify A, I or M, as 
these are covered by B, J and N.) Additional feature subsets could easily be 
defined, e.g. F for Jingle File Transfer (and dependencies).


Though this may be approaching cryptic, I think it's a good compromise, and any 
version identifier will necessarily hide a lot of detail - it's specific enough 
without being a hash value, and allows clients to be compared directly (this 
one supports M, that one doesn't).


But it could quickly become unwieldy, and thereby less useful, so it must come 
with some restrictions:

 - letters represent feature subsets, not XEPs (one letter per XEP would be 
bad, though a particular feature subset may happen to be fully specified by a 
single XEP);

 - identifiers are restricted to a single uppercase letter (A-Z; this purposely 
limits their length and variability - discouraging numerous subsets, and 
keeping version identifiers succinct);

 - a version identifier lists supported feature subsets in a defined order (not 
necessarily alphabetical), to avoid AJNF seeming different from AFNJ.


One problem will come from feature subsets changing over time, but this could 
be restricted until a version bump is deemed necessary, i.e. XMPP-1.1 redefines 
some subsets, XMPP-2.0 would be a full redefinition of A, B, and others.



Thoughts?

_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
_______________________________________________

Reply via email to