{"action":"created","issue":{"url":"https://api.github.com/repos/nayuki/QR-Code-generator/issues/1","repository_url":"https://api.github.com/repos/nayuki/QR-Code-generator","labels_url":"https://api.github.com/repos/nayuki/QR-Code-generator/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/nayuki/QR-Code-generator/issues/1/comments","events_url":"https://api.github.com/repos/nayuki/QR-Code-generator/issues/1/events","html_url":"https://github.com/nayuki/QR-Code-generator/issues/1","id":156125481,"number":1,"title":"Feature Request: Please consider expanding project scope to include decoding","user":{"login":"bidafiwoc","id":17789959,"avatar_url":"https://avatars.githubusercontent.com/u/17789959?v=3","gravatar_id":"","url":"https://api.github.com/users/bidafiwoc","html_url":"https://github.com/bidafiwoc","followers_url":"https://api.github.com/users/bidafiwoc/followers","following_url":"https://api.github.com/users/bidafiwoc/following{/other_user}","gists_url":"https://api.github.com/users/bidafiwoc/gists{/gist_id}","starred_url":"https://api.github.com/users/bidafiwoc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bidafiwoc/subscriptions","organizations_url":"https://api.github.com/users/bidafiwoc/orgs","repos_url":"https://api.github.com/users/bidafiwoc/repos","events_url":"https://api.github.com/users/bidafiwoc/events{/privacy}","received_events_url":"https://api.github.com/users/bidafiwoc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-05-21T22:56:21Z","updated_at":"2016-05-23T23:35:10Z","closed_at":null,"body":"First off, I really like what you've done with your QR-code-generator project.\r\n\r\nI came across your work while searching (web + GH + BB) for pure python-based programs to handle QR code decoding / encoding.  Much as you describe in your writeup [1], I found a lot of projects with sub-optimal dev choices---too many external dependencies, insufficient documentation (internal comments and external manuals / examples), incomplete or unfaithful compliance with Denso-Wave and ISO/IEC 18004 standards (models 1&2)---some don't even implement Reed-Solomon.  Anyway, kudos to you for a really clean and concise project:\r\n\r\n * for clearly defined API; \r\n * for simultaneous / equal coverage across four in-demand languages;\r\n * for complete coverage of all 40 versions and 4 EC levels;\r\n * for avoidance of magic constants;\r\n * for flexible (MIT) license selection; and\r\n * for sensible choices about what portions of encoding are included in your library (ie, 3-11 of your \"generation procedure\" [1]) and what are left up to implementation by library user.\r\n\r\nIn short, thanks for what you've shared with the O/S community here.\r\n\r\nAll that being said, I hope to motivate you to please consider expanding your project to include decoding of QR-Codes.  If anything, there's an even more limited ecosystem of open-source QR-code decoders, compared to that of QR-Code encoders.  In the python world, at least, there's pretty much only ZBar (or a multitude of projects which depend upon it); and ZBar's last stable release was in 2009, with no code checkins since 2012 (and it doesn't support modern Python).  Of course, there's also a Python port of ZXing (from native Java), but ZXing is a large (~70k LOC!), all-encompassing framework.  While there are obviously additional decoders in your other target languages (JS, Java, C++), I believe there are similarly fewer choices there, compared to the situation with encoders.\r\n\r\nGiven what I can sense of your philosophy with this project, I assume you'd consider any type of QR-code image manipulation (necessary for \"full-stack\" decoding from the analog world) to be well **outside** of scope, and I'm not suggesting otherwise as part of this feature request:  scope would still exclude image capture, deskewing / perspective-correction / contrast-tuning, and (finally) conversion of pixels into a vector QR-code (ie, SVG).  For example, just as you provide the 'to_svg_str()' function in your QRCode class as the final output stage (after which user-code takes over to otherwise manipulate QR codes), perhaps the appropriate scope to accept input for decoding would be a similar 'from_svg_str()' function, or just a logical 2D numeric array (representing input to be decoded).  This would leave all bitmap->vector image manipulation external to your library, and instead in user-supplied code (through custom libraries, PIL/imagemagick, opencv3, etc).\r\n\r\nI look forward to your consideration of this feature request, though it significantly expands the scope of your library.  If it's beyond the itch you're proverbially scratching here, I'll continue to enjoy using your library for encoding only.\r\n\r\nThanks, and best wishes for continued success with this (and other) projects!\r\n\r\n\r\n\r\n[1] https://www.nayuki.io/page/qr-code-generator-library\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/nayuki/QR-Code-generator/issues/comments/221126580","html_url":"https://github.com/nayuki/QR-Code-generator/issues/1#issuecomment-221126580","issue_url":"https://api.github.com/repos/nayuki/QR-Code-generator/issues/1","id":221126580,"user":{"login":"nayuki","id":672172,"avatar_url":"https://avatars.githubusercontent.com/u/672172?v=3","gravatar_id":"","url":"https://api.github.com/users/nayuki","html_url":"https://github.com/nayuki","followers_url":"https://api.github.com/users/nayuki/followers","following_url":"https://api.github.com/users/nayuki/following{/other_user}","gists_url":"https://api.github.com/users/nayuki/gists{/gist_id}","starred_url":"https://api.github.com/users/nayuki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nayuki/subscriptions","organizations_url":"https://api.github.com/users/nayuki/orgs","repos_url":"https://api.github.com/users/nayuki/repos","events_url":"https://api.github.com/users/nayuki/events{/privacy}","received_events_url":"https://api.github.com/users/nayuki/received_events","type":"User","site_admin":false},"created_at":"2016-05-23T23:35:10Z","updated_at":"2016-05-23T23:35:10Z","body":"Hello bidafiwoc and thank you for your gracious, well-explained feedback. I appreciate the time you took to include all the important details and make a really polished write-up. =)\r\n\r\nResponse to miscellaneous topics:\r\n\r\n> (web + GH + BB)\r\n\r\nDe-acronymized as (web + GitHub + Bitbucket). When I was scouting for competitors, I searched Google and [PyPI](https://pypi.python.org/pypi?%3Aaction=search&term=QR+code&submit=search).\r\n\r\n> Denso-Wave and ISO/IEC 18004 standards (models 1&2)\r\n\r\nI implemented Model 2 and I think everybody else did the same. I have read the Model 1 section described in the ISO specification out of curiosity, but are there any libraries out there that actually implement it?\r\n\r\n> some don't even implement Reed-Solomon\r\n\r\nI wonder what this means? If a QR code blanks out all the Reed-Solomon ECC codewords, then it won't be decodable by a conventional RS decoder (you'd have to force it to accept the data as-is and ignore all the ECC bytes). Did you mean that they offload the RS encoding to some other library?\r\n\r\n>  If it's beyond the itch you're proverbially scratching here, I'll continue to enjoy using your library for encoding only.\r\n\r\nAre you building an application that needs to encode and decode QR codes, if I may ask?"}}
{"actor":{"display_login":"nayuki"}}