Description
This issue is intended to initiate version 2.0 of the QRCoder. I would like to see an active discussion here so that we can shape the implementation of version 2.0 together. Feedback from the community is very important to me.
Why QRCoder 2.0?
The current version of the QRCoder is essentially still based on the first developments from 2013. Although the QRCoder has been repeatedly adapted to the times, large parts are still based on System.Drawing.Common, which since .NET 6.0 has only been supported under Windows.
Since then, this has often led to confusion, as parts of the QRcoder have only been available under Windows since .NET 6.0, which despite I wrote an Wiki entry is far from obvious to all users.
Although there have already been some PRs and suggestions for version 2.0 in the past, I have shied away from adopting the vision of individual contributors without consulting the community. I want to make up for this with this issue.
Version 2.0 should first and foremost provide clarity and create a consistent interface that is available on as many platforms as possible. Since this most likely means turning away from System.Drawing(.Common) and thus requires breaking changes, this release will be merged into a new major version (2.0).
Requirements for QRCoder 2.0
- The QRCoder should work on as many platforms as possible (at least near full support under Windows and Linux)
- If a component is only available on one platform, this should be clearly recognizable and comprehensible for the user
What needs to be clarified?
In order for the implementation of version 2.0 to be a success (both in terms of the result and the path to it), a few decisions need to be made in advance. Here I am hoping for feedback from you, the community.
(To keep things clear and simple, please give feedback in the dedicated issues, linked below).
- [WIP] How do we split the QRCoder? (NuGet packages) #540
- [WIP/QRCoder2] How do we split the QRCoder? (Github repositories) #541
- [WIP/QRCoder2] Version number handling #542
- [WIP/QRCoder2] Documentation and wiki #543
- [WIP/QRCoder2] How do we handle changes during the 2.0 development? #544
- [WIP/QRCoder2] Coordination of development (VCS) #545
- [WIP/QRCoder2] Coordination of development (Organization) #546
- [WIP/QRCoder2] Communication tools besides Github? #547
- [WIP/QRCoder2] System.Drawing vs X #548
- [WIP/QRCoder2] Use of System.Drawing.Primitives #549
- [WIP/QRCoder2] How do deal with COM-support? #550
- [WIP/QRCoder2] Shall we re-think the Payload Generator? #551
- [WIP/QRCoder2] Consider Removing QRCodeGenerator Instance Methods #552
- [WIP/QRCoder2] Which frameworks and language version to target #553
- [WIP/QRCoder2] Consider Removing Nested Types from Public API Signatures #555
- [WIP/QRCoder2] Consider Updated Abstractions #557
What else is missing from this list? Do you have any other points? Let us know!
Which issues / PRs does the QRCoder 2.0 solve?
As mentioned, there have already been some issues and PRs in connection with a version 2.0 or the replacement of System.Drawing.Common. I would like to list the ones (that are still open) here in order to track which problems we can solve with the 2.0 release.
PRs
Issues
- Consider a Streamlined/Slimmed-down Version 2.0 #242
- System.Drawing.Common version conflict #308
- System.Drawing.Common is deprecated on non-Windows platforms #315
- QRCode class is not visible on net6.0 targeted web app projects #366
- Type or namespace "QRCode" could not be found in new Blazor Server .Net 6 App #377
- .NET 6.0 Compilation Error: The type or namespace name 'QRCode' does not exist in the namespace 'QRCoder' #382
- The type initializer for 'Gdip' threw an exception. #389
- .NET 6.0 - TypeLoadException #393
QRCode
is not found in .NET 7 #435- QRCode' does not contain a definition for 'GetGraphic' and no accessible extension method 'GetGraphic' accepting a first argument of type 'QRCode' could be found #441
- QRCode namespace doesn't exist in .NET 8 #489
Support
To get the discussion started, I would like to mention some of the contributors who have worked on the QRCoder in the past. I hope I can count on your valuable feedback once again:
@Shane32, @csturm83, @mishfit, @iamartyom, @abdoutech93, @DevonJSmith, @jnyrup, @nayuki, @alexnsfx, @sbrickey, @strawberryfield, @giccifelipe, @gfoidl, @oheim, @SteveGTR, @PolnerA, @MarkusG, @pontusi, @Timwi, @maartenba, @JimmyPun610, @AntonKorn, @emorell96, @natehitze, @cezar-pimentel, @codeputer