colgreen / sharpneat

SharpNEAT - Evolution of Neural Networks. A C# .NET Framework.
https://sharpneat.sourceforge.io/
Other
388 stars 100 forks source link

Project status and code stability. #67

Closed camelCaseSharp closed 5 years ago

camelCaseSharp commented 5 years ago

I hope my broad question is ok given this specialized project.

Looking at the GitHub project pulse for this repository and the original colgreen/sharpneat, I get the impression both projects have been in concurrent active development for a few years by the founding main contributor. Periodic formal release notes indicate that colgreen/sharpneat has reached a go-live type status whereas sharpneat-refactor has an experimental feel.

After studying both codebases I would prefer to implement my new (and first) NEAT application on this sharpneat-refector implementation. Would that be wise?

f.y.i. I am more of a software engineer than data scientist. My plan is to apply the NEAT algorithm to a new category of problem and I intend to make substantial source code revisions to either sharpneat or sharpneat-refector to achieve this objective.

colgreen commented 5 years ago

Hi. Yes, at this stage I would recommend basing your work on the sharpneat-refactor codebase. I have been working on it for about two and a half years, and earlier this year it reached a stage where I can say with some confidence that it is ready to replace the legacy implementation. I.e. I started to actually use it and run tests, fix teething issues, and compare results with the legacy codebase. So in terms of code quality its beyond alpha, and more of a Release Candidate 1 level I would say.

Furthermore, my hope is that people will find the code structure and 'API' easier to work with, there will also be some performance benefits, especially in later releases as I move to targeting dotnet core directly, and use of some dotnetcore-only features.

One thing to note is that currently there is no UI code in the refactor repository, and you may encounter some issues as the codebase is less mature that the legacy repo, however I will be able to assist if any such issues come up.

I should also say that although the refector repo doesn't show any recent commits I am actively working on the project, and expect to move the main sharpneat repo over to the new codebase sometime in early 2020. At that point the legacy codebase will become a maintenance branch.

Thanks for your interest.

camelCaseSharp commented 5 years ago

Thankyou for the prompt status update, the plans for sharpneat-refactor sound positive and exceeded my expectations.

I look forward to the future shift onto .Net Core as this would deliver benefits, for example adoption of not-null references would provide clarity and allow many arg-null exceptions to be removed. Will the move to .Net Core be part of the early 2020 release or a follow-on release?

How could I communicate any observations I have on the code? For example in the past I have used whole class Json.Net deserialization rather than individual property extraction:

NeatExperiment ne = JsonConvert.DeserializeObject(configJsonStr);

colgreen commented 5 years ago

Will the move to .Net Core be part of the early 2020 release or a follow-on release?

I'm not sure. However, the current code targets dotnet standard, therefore it will run on dotnet core or .NET.

How could I communicate any observations I have on the code?

I think raising an issue on this repo (sharpneat-refactor) will be ok for any questions/discussions, or you can email me directly.

For example in the past I have used whole class Json.Net deserialization rather than individual property extraction:

By the way, my expectation is that all json handling will move to the new built in support in the System.Text.Json namespace.