In the last few weeks I’ve been working on a prose description of how the type-erased container iteration with QVariant works. The existence of the feature and how it can be used was described in my presentation at DevDays 2013. The slides are available here. The video is not available currently, but will be published RealSoonNow™.
The reason I wrote a prose description of the type-erased iteration features available with Qt 5 was for a defensive patent publication. A defensive publication is a way of establishing Prior Art of a method, so that any patent applications made after it may be deemed ‘obvious’, or not innovative enough in light of the disclosed method. That means that any patent application submitted after 23-Jan-2014 which attempts to patent a method of type-erased container iteration may not be granted because of the established Prior Art.
The resulting document, and any future defensive publications are available here for now.
Qt 5 already practices the method in the QVariant and QMetaType classes, since March 2013. Many of the concepts and methods for the modern type-erasure features in QVariant come from my Grantlee library, based on Qt 4. I described part of it in a blog post in September 2010 as “Recursive Autoconditional Container registration”, and made another relevant commit in the following month including a unit test showing the feature in operation.
However, patent examiners attempting to decide whether to grant a particular patent do not search source code repositories for existing methods of achieving particular goals, and do not necessarily understand source code, how it corresponds to an abstract idea, or why it could make another disclosure ‘obvious’. They also do not read my blog (their loss I suppose).
Instead, patent examiners search publication databases such as ip.com for existing patents and other disclosures. The disclosures should list appropriate keywords, prose describing how it can be implemented, and optionally a reference implementation in a suitable source code language. My disclosure of the method behind the type-erased container iteration features of Qt are now published there too with an official reference number.
Describing the method
I tracked the progress of the publication in a git repository. The initial submission of the published document was much more simple than the final submission. I worked together with Andrea from Open Invention Network to extend the description of the method, make the description less-specific to C++ and particular operations on containers, add a diagram, and show how the prose of the description relates to the reference implementation. Initially I had used the LGPL license for the source code referense implementation. However, to increase the usefulness of the disclosure to others, relicensed it to a BSD license.
The initiative to publish a patent defense disclosures relating to implementations in Qt is driven by Mirko Boehm, formerly of KDAB, and Armijn Hemel and Andrea Casillas of Open Invention Network. There are many more standalone (and non-standalone) designs and methods in Qt which can be published in this way to create Prior Art. The author of the defensive publication does not need to be the same person who wrote the code or submitted it to Qt. Mirko is looking for other implementations in Qt which could be worth describing in a defensive publication. Join the Defensive Publications mailing list to help out.
Help create publications
If there is code in Qt which you think is worthy of patent defense protection, you can link to it on the mailing list, write a few lines describing it, or write a more-complete description of the method together with a diagram if you want to push forward with making a final publication. We are learning more about creating such publications in the process of doing them, and the results will grow better with time.
A rule of thumb is that if an implementation of a method in Qt is worth blogging about or talking about at a conference, it is probably worth of a defensive patent publication. This strengthens Qt against a third party filing a patent for the method in the future.