Giter VIP home page Giter VIP logo

antidupl's People

Contributors

ermig1979 avatar geogeo-gr avatar gigas002 avatar heinrichi avatar inger147 avatar yfdyh000 avatar

Stargazers

 avatar

Forkers

koolru dtmen

antidupl's Issues

Roadmap

Recently I've started working on some features and wrote a roadmap for updating the repo with some plans for future. After listening to the opinions of the author of AntiDupl (@ermig1979 ) and the community, I'll contribute to this repo or I'll continue on developing the app in my fork, if you don't think, that proposed changes will affect good on this project.

Main points:

  • Drop support of x86 and end-of-life OS (these users can still use outdated versions anyway);
  • Move to latest stable .NET for dotnet projects (since we can publish portable, self-contained apps this change shouldn't matter for users in case of pre-installed frameworks);
  • Support for SemVer;
  • Add CI/CD for dotnet projects in the future (GitHub CI or Appveyor);
  • Clean up repo (close outdated/resolved issues, write issue/pr-templates, add milestones, projects, write a proper CHANGELOG.md, etc);

Core:

The purpose of changing the core is to separate logics in solition. We shouldn't build c++ project with all of it's dependencies for each time we want to debug program. And we also don't need to have heavy c++ developer's tools if we're working on dotnet GUI only. The core itself should be reusable and have one code base for all the other projects. So, the points are following:

  • Move AntiDupl dependencies out of project to simplify build and the process of updating dependencies (I suggest doing it through vcpkg):
  • libwebp (1.1.0#1);
  • libopenjpeg (2.3.1#2);
  • turbojpeg (2.0.5#1);
  • prebuilt simd;
  • vcpkg simd (waiting for it to be added to vcpkg packages feed);
  • Create nuget package with native libraries (AntiDupl.Native.Win-x64);
  • Move bindings with unsafe code from current AntiDupl.NET to new AntiDupl.NET.Core library;
  • Build and publish AntiDupl.NET.Core separately as new nuget package (so it can be reusable in other apps without rebuilding and with one code base);
  • Write unit tests for AntiDupl.NET.Core (or AntiDupl c++ library itself; needs help!);

Unfortunately, I don't have a lot of experience in writing c++ code, so I can't help with fixing core bugs/improving core performance/etc. Because of this, for the part with tests we'll definitely need some help. I suggest writing tests for bindings (AntiDupl.NET.Core, not AntiDupl) on C# to not complicate CI/CD in the future and make these operations with dotnet/pwsh-scripting only.

WinForms app:

  • Move AntiDupl.NET to AntiDupl.NET.WinForms namespace and rename the project itself;
  • Remove unsafe code and use AntiDupl.NET.Core with AntiDupl.Native packages as dependencies;
  • Update and beautify all dotnet code in project (naming conventions, moving Strings.cs to Strings.resx with Strings.ru-ru.resx and others as localization, etc);
  • Release updated app as 2.3.11 or 2.4.0 (last release of WinForms app?);

The point of these changes is to simplify protracted transition to WPF and develop only it in future. From my perspective, for first new major 3.0.0 release we should rewrite WinForms app as WPF straightforward as it is, and then we can move to a better architecture, like MVVM.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.