accord-net / framework

Machine learning, computer vision, statistics and general scientific computing for .NET
http://accord-framework.net
GNU Lesser General Public License v2.1
4.46k stars 2k forks source link

I'd like to identify a group of people who are willing to work with me and take over responsibilities for Accord.NET #1710

Open ceremony opened 5 years ago

ceremony commented 5 years ago

I could be wrong - but it does not look like the maintainers of Accord.NET are active with this project - which is perfectly fine - life happens.

But I use Accord.NET quite extensively, and I'd like to find out if several others were willing to fork & take over responsibility for Accord.NET; if the maintainers are reading this then I would appreciate if they could help this process happen.

Accord.NET is a great idea and framework, but it needs more administration and love.

justingruenberg commented 5 years ago

@cesarsouza has mentioned in the past that he'd be interested in adding additional maintainers. That might be a better route than a new fork.

cesarsouza commented 4 years ago

I am really sorry for answering this issue so late.

Some years ago Microsoft announced they wanted to make ML.net, which would eventually means that Accord.NET would become obsolete.

Then I had to focus on my PhD so I could not keep up maintaining the library.

Then somewhere after that I actually developed anxiety of even opening the issues page or checking my e-mails because I feel I might have left so many people behind years ago. I did not have the time and will to keep working on the library because so much changed for me now.

I even tried to hire freelance developers to help maintaining the library, and it worked for some extent, but I do not have the resources anymore.

I am willing to make someone who would like, also an administrator of the project.

I am also willing to change the license of any file where I am the single author (you can check the copyright headers in each file) to MIT so people can reuse individual pieces of code more easily.

cesarsouza commented 4 years ago

I am going to add this to the project's README so people are aware of this.

ceremony commented 4 years ago

Hi Cesar,

Thanks for getting back.

Absolutely no need for apologies - the Accord.NET library itself is an incredible contribution for the .NET community. I can't begin to tell you how difficult it was to find proper statistical, optimization, numerical, and general mathematical libraries for .NET projects. In fact, in many projects I had been working on, the lack of open-source, extensible libraries in this regard was a dealbreaker.

Congratulations on your Ph.D - I completely understand how grueling it is, along with other life changes that happen.

With respect to ML.NET, I have to respectfully disagree with the general feeling that it would be a replacement for Accord.NET (either now or in the future). I've been an avid Microsoft watcher for the past twelve years (even moreso now), and the feeling I gather is that obviously in recent years there has been a tremendous push towards AI adoption in every stack (except perhaps Javascript/UI). MSFT realized there was a gaping hole in their offering that precluded adoption of .NET in new projects (and hence, monetization), and made a concerted effort to fill this gap with ML.NET.

But in using ML.NET - I've come to the conclusion that it is designed to "simplify" AI, and is a pipeline-oriented product where the end goal is a working pipeline that produces a desired result. As it stands, it does not solve the need for a general statistical or optimization library with arbitrary objectives in mind (that may or may not have much to do with ML). It is almost as if the difference is between Windows and Linux, or Python and C.

The way to think about this (and which I explain to a lot of others in the data science community) - is that twenty or thirty years ago - the set of "Users" of AI and the set of "Developers" of AI were pretty much the same - it was a specialized skill for which the only qualified/interested users were also writers of algorithms. Today, however, the set of "Users" of AI is a vastly larger set than the set of AI developers/algorithm writers.

ML.NET aims to be confluent with the much larger set of AI Users - for example, a group or company who require a quick image or text classification pipeline embedded in a larger product. ML.NET in its current incarnation (and the predictable future), does not present a toolbox for the AI writer, however.

It is this crucial area that I think Accord.NET really shines; along with the much larger set of non-AI users/developers who require algorithms that may not be primarily associated with ML.

I'm seriously considering taking up your offer of administering/maintaining Accord.NET - but I too have to consider my life situation (I just recently had a baby daughter born). What I'm going to do is ask the community once again for additional volunteers to form a group to work together to achieve this task. If there are enough individuals who are willing to contribute, then I certainly think that we can make it happen by adding other administrators to this project and rejuvenating the effort.

One of the key aspects of the rejuvenation of course, would be to delineate how the Accord.NET vision differs from ML.NET, and to serve as a complementary effort that satisfies the goals I described earlier.

cesarsouza commented 4 years ago

Hi Srikant,

Thanks a lot for your comment. It is very informational (and motivational) to me.

One of the key aspects of the rejuvenation of course, would be to delineate how the Accord.NET vision differs from ML.NET, and to serve as a complementary effort that satisfies the goals I described earlier.

Yes, that would be a critical area. Another one is that I wanted to simplify the project a lot; as it is right now, it carries over 10 years of code that had tried to maintain compatibility with several versions of .NET, .NET Core, Mono, and even Unity. That is really hard to maintain. Plus, when I started the library, there was not much of anything else to build upon, therefore the project does many things from scratch (e.g., matrix operations) where actually right now there other libraries that could be used for that.

If I were to bring new life to the project, the first thing I would do would be to create a new branch supporting only .NET Standard/Core (specially now that MS has added support for windows forms in .NET Core), and dropping all the obsolete methods and classes from the project.

There are also certain modules that do not make sense to exist anymore, such as the neural networks library, which is completely outdated by now. If I could, I would like to focus only on things that have actually been useful to the community in the recent years.

Another thing that I would certainly like to do, would be to change the project license to MIT. For this I would need to isolate parts which may need to stay under the LGPL (e.g., because someone contributed code to it under the LGPL) and pack them in a separate package.

If we start moving to be .NET Core only, starting a brand new branch and leaving all the old cruft behind, I think this should really simplify how new users could administrate the project, specially because they could start by only caring about the parts that make sense to them.

justingruenberg commented 4 years ago

I would be interested in contributing to the library if someone creates a roadmap for where to take things next.