dmitry-merzlyakov / nledger

.Net Ledger: Double-Entry Accounting System
Other
182 stars 51 forks source link

Continuation of the project #30

Closed alensiljak closed 1 year ago

alensiljak commented 1 year ago

Hi all!

Since @dmitry-merzlyakov seems to be absent (hope everything is alright, in any case!), I am wondering if anyone is interested in keeping this project alive (bugfixes and updates) and building upon it. I think it would be a healthy part of the Ledger ecosystem and would like to work on building other parts on top of it, myself. Please ping me and we can arrange an org on GitHub to pool effort.

dmitry-merzlyakov commented 1 year ago

Hi,

Sorry for delayed response. I am actually here; if you do not have my response for several days or more - please, send a direct message to dmitry.merzlyakov@gmail.com; GitHub notifications might be not reliable sometimes.

Thank you for your interest to this project. I am open to any suggestions how to organize our collaboration and change further roadmap. My personal intentions were about fixing all upcoming bugs and making infrastructural changes in the build process to reflect new dotnet versions. People did not show big interest to other focuses, so I did not prioritize other enhancements so far. If you see something that might be added or te-prioritized in the roadmap - let's discuss.

So, I am here, sorry again for missing the new issue, I will work on it. If you have any thoughts, issues, enhancement requests - please, add them here or as tickets; I am glad to see interest to this stuff.

Thank you!

alensiljak commented 1 year ago

Hi, Dmitry! Glad to see your response. Thanks for the direct contact details! I've only today noticed the new branches that you've been working on a few months ago. By default I've only gotten the main branch locally so I was under the impression that the activity on the project stopped two years ago.

By no means was the intention to rush you into fixing the issue I reported a few days ago. I'd actually hope to be able to fix that myself with some assistance and explanation on the side. Anyway, I'll be in touch via email with additional background information. Here I'd just mention a couple of items - Rusty Ledger where I experimented with Rust implementation of Ledger, and https://cashier.alensiljak.eu.org/ (or https://cashier-II.alensiljak.eu.org/), where I'd like to include Ledger journal parsing. Long story short, after going through several technologies/platforms, I've tried doing this in .Net. Blazor in the later iterations seems like a decent enough target. Then I found your implementation of Ledger in .Net. I'd like to participate in the project to an extent, and try to include it with Cashier or built on that. I don't have concrete plans but would love to have a decent personal finance tool on my phone.

In any case, glad that you're around. I'll share some of my suggestions either as issues, or perhaps you'd want to enable Discussions and keep Issues to only items to NLedger in its current form. Or we could also form an NLedger org, similar to Rusty Ledger, and have interested people join in, if they wish so. Cheers!

dmitry-merzlyakov commented 1 year ago

@alensiljak Hi, as you asked to provide some generic background about the project principles, this is probably a good time to briefly review the current state of the project and consider next steps.

First of all, the main goals of this project are:

It implies how I see the published artifacts produced by this project. Currently, they are:

The main value of these published artifacts is that they went through a regular build process and passed all tests (for each target). Thus, they guarantee that all declared features work reliably and exactly conform the corresponding version of Ledger (without exceptions).

We can also consider dev tools (PowerShell scripts) as public artifacts; they let people download the git repository, configure environment and rebuild the project with minimal effort. It is a simple way to produce binaries for any target platform and OS. However, they are part of repository code, and it is up to people responsibility to validate produced binaries.

Essentially, these points define the acceptance criteria for the development process:

As for how development is currently organized:

Currently, there is "next-dev-0.8.5" branch containing some bug fixes and "next-dev-0.8.5-net6" that contains a big piece of work to adopt existing development process for multitargets (net6/net8).

Thus, according to the described principles, there is the following vision of the current roadmap:

Progress has been slow in this area but it may be forced. This seems to be my task because this work deals exclusively with the old build infrastructure. The good thing is that this likely the only task in the project that requires my direct contribution: any other changes to the dotnet code can be made by anyone as long as they follow the principles described above.

An interesting question arises as to what should be considered the most popular targets for NLedger right now. This is a question for many developers releasing shared libraries (e.g. https://community.devexpress.com/blogs/news/archive/2023/07/05/net-net-standard-2-0-deprecation-support-for-net-6-or-net-8 - lts-by-default-in-libraries-and-more-v23-2.aspx). I'm leaning towards the following concept:

Of course, the above describes my personal vision, and I am open to discuss any aspects of this process. Any input is welcome, thank you! Also, if you want to move this comment to any another place - do it, I just added it here in continuation to your input.

alensiljak commented 1 year ago

This is great info, thank you! I'd suggest adding this as the Contributing doc, which I don't see at the moment, anyway. I've seen mention of the roadmap but am not sure where to find it. Is this on GitHub (milestones) or is/was there a different doc?

dmitry-merzlyakov commented 1 year ago

Hi, you can find the roadmap here - https://github.com/dmitry-merzlyakov/nledger/blob/next-dev-0.8.5-net6/roadmap.md (see it is a bit different from the version in master). However, this stuff probably needs to be generally re-visited. It is based on old ideas (5 or more years ago). Actually, at the moment, I see only two tasks that really need to be done: 1) the work related to the build process and multitargets; 2) get recent changes from the original Ledger (I did not do it for more than one year). If you have other ideas - we can create a ticket that accumulates all new ideas or requests.

I agree with you that contribution section needs to be added. The best time to do it is when a version is finalized, and we made final corrections in the doc. I worry I can forget this point - you can add a ticket for it so we will recall this point when, thanks.