serratus / quaggaJS

An advanced barcode-scanner written in JavaScript
https://serratus.github.io/quaggaJS/
MIT License
5.08k stars 978 forks source link

Is Quagga dead? #381

Open MidnightDesign opened 5 years ago

MidnightDesign commented 5 years ago

Is this project still maintained? On one hand, there has been a pull request merged as late as April 16, but on the other hand there hasn't been a new version tagged in over two years.

I wanted to try to replace the ZXing scanner in our application with Quagga because ZXing doesn't support portrait barcodes and Quagga claims to do, but I couldn't get it to work because we're using TypeScript and #1adba48 hasn't been tagged yet.

Should I stick to ZXing?

dictosistemas commented 5 years ago

Hi! I would like to know too! There are news coming soon about barcodes: https://developers.google.com/web/updates/2019/01/shape-detection

It will be great if QuaggaJS still alive and continue this great work. :)

UziTech commented 5 years ago

@ericblade are you planning on releasing a new version?

TroyWolf commented 5 years ago

Hi! I would like to know too! There are news coming soon about barcodes: https://developers.google.com/web/updates/2019/01/shape-detection

It will be great if QuaggaJS still alive and continue this great work. :)

If I read that Google developer document correctly, it would render QuaggaJS unnecessary as the browser would have barcode detection and decoding built in--and take advantage of device hardware that is fast at doing the job. It looks to be a long ways off...especially before most modern browsers would support it.

UziTech commented 5 years ago

It looks to be a long ways off

I wouldn't expect iOS to support it for quite a few years.

MidnightDesign commented 5 years ago

Well, I think it could be polyfilled pretty "easily" with a WebAssembly implementation.

Domratchev commented 5 years ago

I present you the TypeScript version of QuaggaJS: https://github.com/serratus/quaggaJS/pull/385

UziTech commented 5 years ago

I think it could be polyfilled pretty "easily" with a WebAssembly implementation.

@MidnightDesign do you know of a polyfill that uses WebAssembly?

The only polyfills I have seen are using this library.

MidnightDesign commented 5 years ago

@UziTech I think Google is doing something like that with their Web Perception Toolkit. But I haven't looked into it very much.

ericblade commented 5 years ago

Hi everyone!

I hate that this topic has had to come up so much, but the original author has moved on for some time now. I'm intending, this week to this weekend, to figure out how to setup a release off a fork, and move forward from there. (and i'll be more than happy to hand it back off to Christian if he comes back)

Quagga is an integral part of the application that I've been working on for quite some time, and I don't see it getting replaced completely in the near term. Long-term, Chrome may supplant Quagga completely with built-in features, but I think short-term, there's not many other options out there. So, I'm happy to maintain, although I'm pretty sure I've said in a few places, I don't know anything about image processing. :-D

ericblade commented 5 years ago

Clearly, that didn't happen this weekend (else I'd have posted about it), but I did take care of a lot of stuff that has been sucking up my time.. so.. on it after my work day today.

ericblade commented 5 years ago

hey all. i've got through the relatively easy part of it (which was made slightly harder by the fact that i had an existing fork, but github mostly figured that out for me yay).

So, my fork is here: https://github.com/ericblade/quagga2

I've enabled issues, merged an auto pull request that snyk generated, and will be moving on from there.

I'll generate a new npm package that'll be 99% equivalent to this current repo (minus package.json changes, the security fix, anything i have to change to get it to npm correctly) just as soon as I can. All are welcome to come and join in.

ericblade commented 5 years ago

btw, i've also released @ericblade/quagga2 to npm .. it should be functionally equivalent to the current code here, i'm working on infrastructure and maintenance mostly right now, getting dependent modules closer to up to date, testing, auto building, etc.

develorem commented 5 years ago

Can we get Serratus to hand over control of this repo to you so that you can drive it forward here rather than in a fork? Oh and thanks for taking over. I've only used this in personal projects but it works and I'd hate to see it die.

ericblade commented 5 years ago

@develorem myself and @TomasHubelbauer do have collaborator access on this repo, but we don't have the other sample repos, or npm access.. so although that's how I/we wanted to do it originally, it's been a very very long time since we've heard from Christoph. I feel that it's probably best to have a new repo and a new npm package, and go from there. I don't want to break from the original, but I think we have to at this point.

ralyodio commented 4 years ago

Do you have a demo link of your 2.0 fork? I don’t see anything in the readme. I want to see if this works before I use it in production.

ericblade commented 4 years ago

I do not have a full demo that I'm serving right at the moment (i should probably look at that), but i do have a VERY simple React application that can be run quite quickly (npm install, npm run start) to check the bare minimum, and get to doing some hacking with it, if you'd like: https://github.com/ericblade/quagga2-react-example

Other than presently disabling Worker threads (i've found many issues with them) and adding a feature to add external readers, it should functionally be identical to the demo for this repo. The live_w_locator.js that is in the repo should also function with my version, if you build that, I'd think, though I've never tried it.

fuzzzerd commented 4 years ago

I'd suggest be worth updating the readme on this repo to point at the maintained fork.

DerekCresswell commented 4 years ago

Agreed with @fuzzzerd there should be indication to use the quagga2 repo front and center.

I'd also like to know the ease with which I can transfer a project from quagga to quagga, are we talking major refactors or just minor tweaks?

baiatulutata commented 4 years ago

major issue on quagga is that you can't resize the video on the screen. if you use a smaller video it will not scan images anymore. is quagga2 working differently?

ericblade commented 4 years ago

I have never intentionally attempted to resize the video area while it is running, but my app that uses quagga has not had issues with phones switching between landscape and portrait while running, which definitely triggers a resize. So, I've done nothing specific towards that end, but if you have some code that can show a problem, I'd be more than happy to look into it.

ericblade commented 4 years ago

Agreed with @fuzzzerd there should be indication to use the quagga2 repo front and center.

I'd also like to know the ease with which I can transfer a project from quagga to quagga, are we talking major refactors or just minor tweaks?

While I do have collaborator access to this repo, I am not wanting to steal any credit due to Christoph, nor make it appear that he does specifically endorse the new repository. While we have had contact a few times over the last couple of years, I have not received an endorsement from him for forking. So, unless he specifically tells me that I have his blessing, I'm not modifying his repo to point to mine.

baiatulutata commented 4 years ago

1s of all, @ericblade , I totally appreciate your work. I really do! My main issue now is that I am trying to use old quaga in a modal window. This limits the video size to I don't know, 300x400 lets say. Isn't that affecting the scan quality? I noticed that when I pass a bigger video feed to the app the scans are faster and quicker but when I do that my screen gets screwed up. I'm resizing the video tag now after i start quaga but the nice debugger boxes that show the user that the scan is working are still following the initial path.

ericblade commented 4 years ago

Honestly, if you want to move this discussion over to my repo, or a new issue here, that might be a good idea, it's not really relevant to the topic of this issue. That said, I think that some research could stand to be done on exactly how cameras work in browsers, and some differences between how they work on phone browsers and non-phone, I've seen some fairly significant differences between playing with various options on desktop vs how they react on a phone. I honestly don't have the slightest idea how resizing the video area works. If you request a camera at 800x600, but the video area is only 400x300, does the browser rescale the image to fit the video area? does it force the video area to fit the camera view? I think that there's some difference between how that behaves on a PC and on an Android at least.

edw19 commented 2 years ago

do you know any alternative to quagga?

UziTech commented 2 years ago

https://github.com/ericblade/quagga2