Who am I
I’m Tony Qu, member of .NET foundation. I’m the author and major contributor of NPOI. I have been working on NPOI for more than 12 years since Sep, 2008.
Why do I write this post
Someone may think this post is a bit aggressive and someone may misunderstand as I’m not willing to see others maintaining NPOI. But it’s totally opposite. I do encourage normal contribution on NPOI from the community.
Here ‘normal contribution’ means you should not remove git history to erase others contribution before you; forking project is a must in order to merge the code in the future easily and in order not to make too many non-forked repository appear, which may confuse the users. If you only migrate NPOI from .NET to .NET core in 1 month and release the nuget package with another name in order to fame yourself, this is totally not encouraged. Because your contribution is too little compared with NPOI huge code base and there is no extra features added with your contribution.
The contribution of Dotnetcore/NPOI and the NCC’s community behavior is definitely abnormal. That’s the major reason I want to write this article to get you understand what’s going on in the .NET community.
What is Dotnetcore/NPOI
I also felt confused. A community guy called Lei Yang (A senior QA engineer from Chengdu,China) even challenged me with the following questions:
A. What’s my contribution to NPOI? Why can only you contribute to NPOI instead of others? How can you say you are the author of NPOI?
B. What’s the relationship between Dotnetcore/NPOI and NPOI?
These 2 offending questions attract my curiosity and my investigation on Dotnetcore/NPOI started 2 month ago.
I used to believe that Dotnetcore/NPOI has a few own fixes in their code base. But after my detailed investigation on their commits, I write down the detailed comparsion between Dotnetcore/NPOI and NPOI in Dotnetcore-NPOI-Review-By-Timeline
According to this comparsion, I can conclude the following:
A. Dotnetcore/NPOI IS JUST a .NET core version of NPOI 2.2.1, which was released 4 years ago.
B. The major contribution of yang-xiaodong happens in 2017. The rest of his contribution is only release new nuget package. Nothing else.
c. yang-xiaodong deleted git history on purpose in order to hide the real line numbre of contribution he really owns. His contribution is less than 2500 line code. It’s more like a PR instead of standalone branch.
Why NPOI team didn’t release a .NET core version in 2017
Firstly, I was busy creating my startup company Neuzilla to earn money although the original purpose of Neuzilla is to earn money by maintaing NPOI and support subscription. I can summarize that the open source market is the worst market in the business world. Anyway, I don’t want to expand in this post but it’s true and in order to raise the company, I have to do some offshore oursourcing and industry customization after one year struggle with NPOI support.
Secondly, I don’t recommend you to follow Microsoft latest technology such as .NET core. Do you still remember WPF and Silverlight? .NET core is almost same in the early stage of release. There were huge breaking changes from .NET core 1.0 to 2.0 and 3.0. Shall I waste time on a framework which has not been dedicated to a fixed architecture yet? The answer is no. For example, there is no native GDI+ library to migrate System.Drawing in .NET core 1.0. You have to use a 3rd-party GDI+ library to solve this if you do migrate your code since .NET core 1.0 during 2016–2017.
Frankly speaking, I DON’T WANT TO WASTE MY TIME ON DOGFOOD From Microsoft. That’s the major reason there was no NPOI version supporting .NET core 1.0.
My comments on Dotnetcore/NPOI
In any case, I do appreciate yangxiao-dong that what Dotnetcore/NPOI has done during 2017 and 2018 to fill in the gap of no .NET core support from NPOI.
However, what he did after 2018 is TOTALLY NOT ENCOURAGED. Especially something like he want to totally replace NPOI major release with Dotnetcore/NPOI. He is even titled himself Master of NPOI. This is totally not acceptable because he even doesn’t know how to fix NPOI bugs. If he does, why doesn’t he fix any valid bugs in the past 3 years. You can figure this answer with the commits of Dotnetcore/NPOI by yourself.