What is the difference from the original (java) C# conversion

Mar 20, 2013 at 11:35 AM

I would like to know
  1. What is the difference between this lib and the original C# conversion found in (here or here) ?
  2. How often these two libraries are merge? And if not, its clearly that the Java implementations is still being developed so why not perform a merge every now and a while
    If you can, please explain why did you forked the original lib
    Thank you
Mar 21, 2013 at 8:33 PM
ZXing.Net started on top of the original C# conversion which you have found.
But that version was very old and not maintained. So I started to re-port the whole java code (including the testing code).
After that I made some .Net specific changes:
  • I renamed the namespace from com.google.zxing to ZXing
  • removed the exception-based flow control
  • added some classes which make it easier to use the library
  • made it compatible with nearly all .Net variants (like Silverlight, CE, WinRT, Micro Framework, Mono/Xamarin, Windows Phone, PCL, Unity3D)
  • added support for specific graphic classes like WriteableBitmap
  • added support for more RGB based formats (like RGBA, RGB565)
  • added a whole bunch of working samples
  • made it available via NuGet
I never merged ZXing.Net with the original C# conversion.
But I'm following the changes of the java version and try to port them as soon as possible.
Btw. the zxing team does a great job.

And yes, I think I can explain why I forked the original lib. At the beginning of ZXing.Net I wasn't sure
if I can finish the work. I wanted to start independently. The re-porting was necessary because I need PDF417 support
which isn't available with the original conversion.
I know there are pro and cons for a fork.
The main cons would be that users have the challenge to find out which library they want to use.
One pro could be that issues and question related to the .Net version can be asked here and the zxing team can focus on the java version.

Did it answer your questions?
Mar 23, 2013 at 4:12 PM
Thank you very much for the detailed response. This does answer my question.

I am very happy to know that you are following the Java version and porting the changes. I understand the need to start independently without knowing how serious you would get with your adventure. But now, isn’t this a good place to “merge” with zxing as the “Proper C# implementation”? I know this could be hard but I think that both communities will benefit eventually.
I hope you are reading my tone right, I'm really curious and don’t intend to sound pretentious.

One other thing: porting the Java code with IKVM is something you considered?

Thank you so much for the detailed answer, and the time you devote for this project.
Mar 23, 2013 at 8:19 PM
I understand your point of view.
Of course merging could be a good idea. Btw. ZXing.Net would be a full replacement for the current official port.
On the other hand I love my project and I feel comfortable with the independent development here.

I didn't try IKVM. And as far as I understand that solution I would have to implement my extension classes with java instead C#.
I'm not that familar with java.

I don't know what the future brings. But I will provide a maintained port of zxing as long as possible.
Mar 23, 2013 at 8:35 PM
I can understand your point of view also. Instinctively I prefer your project for the C# side, especially after our “little talk” and your dedication. Any way, it sounds like that in any given point, since you keep track on the original project, you can just replace the original C# conversion.

but than again, it's good to have a "baby" of your own :)
Thanks again