There are a number of algorithms an XMPP developer needs to deal with, either directly or through a library. Some of these are defined in XEPs, while some are external specifications which we work with.<br><br>These include:<br>
<br>* DIGEST-MD5<br>* SCRAM<br>* Entity capabilities hashing<br>* JID escaping<br><br>Over the years, I’ve seen people trying to implement these through trial and error, and frequently getting them done only partially correctly. After helping people fix their DIGEST-MD5 implementations at least a dozen times, I think we have a problem.<br>
<br>I propose that we start a small project to act as an aggregator for existing open source implementations which could be used as references. Once we have that going, an implementation selected for its readability could become the (official?) reference implementation.<br>
<br>What this would achieve:<br><br>1. It would save people writing new implementations hours and hours of guesswork<br>2. It would make new implementations more interoperable, reducing the chance of mistakes<br>3. It would make existing implementations more visible, improving the chance of mistakes being found and reported, and implementations being reused<br>
4. For experimental XEPs this would give direct evidence of how simple or complex an algorithm is, what the edge cases are, and if it could be simplified without losing its important characteristics<br><br>In fact I wouldn’t mind it being required that any XEP moving beyond Experimental have implementations available for the algorithms it defines, under a permissive license.<br>
<br>I’m hoping to not be the only one who sees this as a problem we should solve. What does everyone else think?<br><br>--<br>Waqas Hussain