-
Notifications
You must be signed in to change notification settings - Fork 269
Started a fork/v2 at https://github.com/vilinet/Utf8Json-v2 #223
Comments
do you really have a time and energy to maintain the fork? |
@neuecc said that he gonna work with this repo after he release UniTask v2 |
That is great news! It does not matter to me which version just need to keep this stuff alive. |
I made my repo private :) I have seen he is is active on many other projects. |
I'm relieved to hear he may start giving this attention, but I would certainly be happier if there was more than one maintainer. Even if it means that it requires unanimous consensus on all pull requests, that'd be better than the feeling that things were abandoned for a couple years. There are a few fixes that we all can look at and agree would be good, but without him personally approving them, the issues linger, and that results in way too many forks with the same fix. |
I would welcome a well maintained fork. The goal here is to have a low allocation UTF8 aware serializer for JSON in .NET. The point in the MIT license in to foster innovation. If @neuecc (who has done a great job here) does get the time to come back to maintain this library, then all we will have is 2 great libraries to choose from. Maybe there will be some differences that will make each more suitable for different applications, but that also sounds great to me. I think calling it the same thing is probably unfair though and could create confusion, you should probably come up with a new name, and then maintain recognition for the original base. |
Would be much better if everyone could concentrate on one lib instead decentralizing manpower into 2 separated libs. Best option really would be to share ownership with someone who could review and approve PR. There are fundamental very basic and simple bugs and they have not been fixed in the last 2 years. I know many people who look at the repo and they just dont use it as they dont thrust in an abandoned codebase that have these basic issues untouched. And the best is how the owner does not even write a single comment ... |
I don't see it such essential to justify a fork. Json serializing is a not complex operation. You can always take another format if it is not fast enough. |
@vilinski, hello do you think you can share your private link? I'd like to see if we can use it while waiting for the author. |
@markmadlangbayan you surely mixed me up with @vilinet ? Don't know why he even has my nick :D |
@firephantomassasin Lets have a look at it :) |
@vilinet Thank you so much. |
Drop me a mail to the vilinet9@ the mail domain that google uses dottt com :) |
@st-gwerner it works! Thank you so much. Hey guys @vilinet, i think while the main author is not yet around and looks like this repo is not active anymore, it would be better to create a V2 Fork of this repo and include all the current pending Pull Requests especially those who are bug fixes. |
@st-gwerner I would do something like this: https://pastebin.com/xfYC7f3z |
@firephantomassasin Yeah but also there are many PR that would slow it down serialization. Of course sometimes there is now way to avoid it but many of them can be improved. |
@vilinet All the more reason that your idea of a single repo would be amazing, managed by multiple heads who can discuss and evaluate the best ways to do it. My focus was getting correct behavior with the same relative performance (in my testing of 40-50MB files, the check didn't slow performance much at all), but I would love it if we had a central repo where we can bat things around, do additional testing, etc. I also agree with you also that not all "fixes" are good. |
@st-gwerner Yeah :) Also i checked that Swifter.Json that was linked above and i need to stay that is much more faster then this lib(by 35% with my test data), but also has less feature. But this code base is much more "contributor" friendly and there are things we could use from that lib as well. |
@vilinet just wonder, which features you miss in Swifter.Json compared to Utf8Json? |
@vilinski No simple way for camel case output for example. You can use the callback but perfermance drops heavily. Or you rename your properties to use camel case. No attribute support to ignore/rename properties. |
@vilinet not yet tried myself, but there are |
@vilinski you are right! I will have a try! |
@st-gwerner @vilinet have you checked this another security issue in this library? #127 |
@vilinet If you think that you have time to continue this project, please go on with the fork. It is badly needed. |
Okay guys. So i made this https://github.com/vilinet/Utf8Json-v2/ public again. So please have a look :) We can also decide to stop it and we will switch to another library. (There are some nice candidates) |
Do you really think someone will work on this new repo if you deleted the history and just copied all the source code in the initial commit!? https://github.com/vilinet/Utf8Json-v2/commit/fdf4515d7cac2bef8e4b700706ca98aad0a08301
Not related to this library, but recently I forked a 5-years-old near 1k-stars library and I spent almost a day just to clean and keep Git history, otherwise I could hardly navigate and understand what was going on in this 3rd party codebase. This is important. In my fork of this library I try to force-push to have as few commits as possible and view them as patches rather than full-blown continuation of upstream development (I do not have skills and resources for that, do you?). There are multiple "natural" forks of this library and it's easy to cherry-pick bug-fixes from there (or from PRs) and keep the changes to upstream visible as isolated patches. It would be great if there is one place that accumulates all useful PRs and fork commits in one place, but keeps the development anchored to the upstream. My fork is incompatible with the upstream (no explicit Unity support and I do not know if it works there, changed internals so it works with native memory and not only with So, ideally and in my opinion, a new centralized fork should have all worthy PRs and commits from other forks that are cherry-picked from their branches (or merged with their authors kept in git history). Anyone should be able to cherry-pick from this fork or rebase their fork on the new centralized fork. This also makes it possible to backport all community contributions to the upstream in a couple of clicks whenever it is active again. Without this any "artificial"/"forced" fork adds more hassle than value. |
@vilinet what are those another library (There are some nice candidates) ? So far i've tried other libraries and this one gives the fastest performance. |
@buybackoff I do agree. The creation of that "fork" is crap, not the way as it should have been done. So the question is again: Who wants to fork it? or Do we choose an existing fork that has been already worked on? If you say okay, do it properly i am willing to fix my errors and create a new valid fork, clean it up, upgrade to latest libraries, etc. |
@vilinet from the "right" fork your are just one click on "Fork" button away. ) Wrong way is just mkdir and copy sources. You can also create an organization for the owner(s) and move the repo into it. This way the changes can be backported to the parent repo or cherry picked in other forks. @firephantomassasin some nice candidates are mentioned above in this thread, if you not tried them already |
Yeah. There was a guy above how knows him and told he will work on it later maybe. |
Aren't you concerned that MSFT will eventually make their new JSON serializer almost as good? And given that MessagePack serializer v2 was integrated with SignalR by @AArnott with @neuecc help, I won't be surprised if the same machinery that makes this library fast will be employed by This library is not friendly to The worst thing in this story is the silence and absence of a roadmap from the author. |
if it were my commercial project maybe I would close the sources exactly for this reason. MSFT has multiple times proven they understand nothing from doing open source, or supporting communities. This alone, and looking around, renders .NET as an almost obsolete plattform for me, even with all improvements last years. But otherwise I would only welcome any improvements in BCL, cause I can only profit from it. This doesn't stops me in any way to contribute to the libs I use, even it it is difficult to contribute. |
I can't speak for @neuecc, but I'd guess this repo works for him as-is so his priority is low to improve it. MessagePack v2 happened because I wanted to pick it up for Visual Studio but couldn't in its v1 form. I started that with a fork and tried to keep communication open as much as possible with the original author to increase the odds of the fork eventually merging back into the main repo, which turned out to be a success story. |
Thanks @AArnott for replying and MsgPack v2 background! I mentioned you in case you know something more by being in contact with the author and from MSFT :) |
BTW, interesting tweet from today showing difference of @giraffe-fsharp in Techempower benchmarks when using Utf8Json. https://twitter.com/dustinmoris/status/1309133995796463623 Maybe @dustinmoris could add something from F# side and join the discussion if Utf8Json is important for Giraffe. |
@buybackoff Good stuff! And would worth considering switching/supporting Span. |
Hey, thanks for tagging me. Interesting thread. It's a pitty that @neuecc hasn't responded here or to any other issue yet. I totally understand that there are many good reasons why someone doesn't have the time/passion/motivation to work on an OSS project any more, but at least responding to these threads would have been helpful :( I just hope that it's only a complete lack of interest and not something else which prevents @neuecc from responding here. Wishing him the best of luck! Regarding an official fork I agree with the advice given by @AArnott. In order to support an official fork I would like to see the following things:
EDIT: BTW I really like Utf8Json and I'm happy to assist with anything which needs to be done in order to get this thing properly off the ground. I didn't look into the ins and outs of this project enough to feel comfortable to maintain it myself, but I'd happily help in shaping the initial OSS organisation, writing some docs and helping with other things like setting up a GitHub Actions pipeline to deploy directly to NuGet on official releases and doing other "maintenance" work to help @vilinet or whoever wants to take the leadership of this project. |
i think @vilinet can initiate a clean fork from this repo and re-apply some of your changes again and let's start from there the official fork version of this repo? This library should have a new official fork version, this is a nice library for .net. |
@dustinmoris Very great comment! So we could create this free organization and having this as one of its projects. |
Re name, I think a new name might have more longevity than trying to version I would suggest something like
|
Sounds cool definitly. There is only a zeroJson user on github but it may not be that confusing. |
I think a lot of things in this discussion are for creating a fork for the sake of creating a fork. There should be some plan/roadmap for what the new fork should include and wants to achieve. There are several existing forks:
'+ PR bug fixes. One thing that would turn me off from the new fork is if there will be changes for the sake of changes, e.g. no improvements in performance or functionality, but beautification and/or refactoring, moving code around for "better organization". It's so easy to do that with VS/R#/Rider in one click, but quite soon merging would be a mess. That should be done only after the fork is proven to be independent and maintained by multiple people. E.g. even if the project is renamed to |
That's a very kind thought. @neuecc is fine. He's active on MessagePack still, at least. I'm sure it's just a priority thing.
I'm not sure what constitutes an "official fork" if you haven't got the blessing of the original repo author. Perhaps "active fork with several contributors" would be more accurate and still very encouraging to newcomers.
Orgs can be abandoned if all the committers lose interest just as well, so I don't personally see that as a mitigation. Repos on personal accounts can have many collaborators as well, and if the sponsoring account's user loses interest, they can always transfer the repo to another user or org at that point, and github performs all the 301 redirects automatically so you don't lose traction. GitHub is all about open source, yet we don't see an org behind every repo. So I'm not against the idea, but it feels overkill to jump into it too fast. I would also defer the rename of anything (nuget package, namespaces, etc.) till later. Invest in the fork, make it a worthwhile repo to maintain and tempting for the original author to merge back in. In the meantime, push with the original nuget package ID to some alternate feed somewhere (Azure Pipelines offers free NuGet feeds and I think GitHub does too) so you all can consume it. I would suggest you keep it with unstable versions (rather obviously forked ones, like |
+10 to this, @buybackoff |
Thanks for the ping @buybackoff.
The Utf8Json fork that the client is using is in https://github.com/elastic/elasticsearch-net/tree/7.x/src/Elasticsearch.Net/Utf8Json The separate nullean/Utf8Json repository was originally used and IL-merged into the client, but then it became easier to manage by including the source in Elasticsearch.Net project. The fork in the project is quite different in places to fit the client's needs, and contains additional fixes such as handling all allowed offset formats in ISO8601 Date string formats (i.e. |
So, I've been following this thread since the get-go. Is Utf8Json-v2 a go or not? The reason I'm asking if this v2-repo is still happening because it was created, then hidden, then public again, now it's gone again. Would love to see this project kept going strong 👍 |
Since nothing has happened on this for a while and I have a need for it for my company and its projects, I've forked it. Right now, I've favoured the use of netstandard and dropped the old frameworks. Executables and tests are targeting .NET 5. I've already pulled in a few PRs such as #217 #129 #172 #193 and will be looking at bringing more in soon. Not sure when a nuget package will get built, what its version number will be, its name etc, but it will be soon. As such I welcome conversations from those with an interest in this project and need a working library. If you want to help maintain it, get in contact with me. Would like to build a consensus on what is the most pressing issues, get it all tested and working for everyone's platforms and sort those issues as they come in and then take it from there.
|
@cryptisk-grs I think it's a good case to activate discussions in your new repo |
Done. Cryptisk#12 |
For folks wanting an up to date working package, I've released what I'm calling v1.4.0 and is now available on NuGet. See here for more information. https://github.com/Cryptisk/Utf8Json/releases/tag/v1.4.0 |
I know it is not the nicest way to introduce a fork of a repo but i had no other choice. I asked the author but my messages were ignored.
The v2 can be found at https://github.com/vilinet/Utf8Json-v2/
I cleaned up the code a bit, added new frameworks.
And already fixex some issues but there are many left.
I hope we can make this stunning library even better :)
Its alive!
@vilinski
@RamType-0
@st-gwerner
@SaAnnka
@neon-izm
@Kiryushin-Andrey
@AndrewGumenyuk
@ pCYSl5EDgo
The text was updated successfully, but these errors were encountered: