<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<p>Hi!</p>
<p><br>
</p>
<p>Qt Purchasing is a convenience API for handling in-app purchases on different platforms. Qt 6 will go through lots of changes that affect many modules. It is therefore a good time to reconsider the future of Qt Purchasing API.</p>
<p><br>
</p>
<p>One potential pitfall of the API is that apps developed with it could suffer from weakened copy protection due to Qt open source nature. For example, platforms like Android recommend doing code obfuscation for the app's source code [1]. It might be possible
 to replace the app's package with a custom-built Qt Purchasing library and use instead, thus breaking copy protection.
<br>
</p>
<p><br>
</p>
<p>Another challenge we have been facing is with the community contributions. By nature, contributions should be cross platform, and if not then at least not break the functionality of another target platform. Following this has proven to be very difficult
 thus leading to rejection of many submissions to improve Qt Purchasing API. This in turn makes for unhappy contributors, and Qt missing the needed feature.
<br>
</p>
<p><br>
</p>
<p>I propose to exclude Qt Purchasing from Qt 6, and instead move the underlying use cases forward as examples, which has the following advantages:
</p>
<p> The examples would be easily copy-pasted, improved, obfuscated, and more secure.
</p>
<p> They can demonstrate how to use purchasing capabilities for different platforms with their native purchasing APIs (e.g. Android, iOS, WinRT).
</p>
<p> They can act as good examples of how Qt users can interact with more advanced platform-specific and native APIs that the core Qt doesn't cover.
</p>
<p> Modifications and contributions would be much easier added to an example than to a module which has more restriction such as feature-freezes.
</p>
<p> OS-specific features could be added and demonstrated if one feature is available in one OS and not the others. Updates related to this are tracked under the ticket QTBUG-82847.
<br>
</p>
<p><br>
</p>
<p></p>
<p>References: </p>
<p>[1] https://developer.android.com/google/play/billing/billing_library_overview#Verify-purchase-device
<br>
</p>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div>
<div id="Signature">
<div>
<div></div>
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: Calibri, Arial, Helvetica, sans-serif;">
<p style="margin-top:0px; margin-bottom:0px"><span id="ms-rterangepaste-start"></span></p>
<div><span style="font-size:12pt">Eskil Abrahamsen Blomfeldt</span><br>
</div>
<div>Senior Manager, Graphics</div>
<div><br>
</div>
<div>The Qt Company</div>
<div>Sandakerveien 116</div>
<div>0484 Oslo, Norway</div>
<div>eskil.abrahamsen-blomfeldt@qt.io</div>
<div>http://qt.io</div>
<p style="margin-top:0px; margin-bottom:0px"></p>
</div>
</div>
</div>
</div>
</body>
</html>