Elmish.WPF icon indicating copy to clipboard operation
Elmish.WPF copied to clipboard

**To new users**⚠️**Warning**: This library is no longer maintained or updated

Open YkTru opened this issue 6 months ago • 3 comments

Don't be fooled by the "readme" file:

• this library is no longer maintained or updated • it's not production-ready (even if it says so in the readme) • support by the maintainer will not be provided for any questions (no sign of life in the last 8 months..) • pull requests are unlikely to be reviewed • is not up to date with current .Net version (and corresponding F# new features) • some samples are not properly working (eg.: deselection issues with SubModelSelectedItem) • a real pain to work with recursive data structure and subviewmodels (if even possible) (eg.: TreeGrid)

Use at your own risk.

(if ever the maintainer @marner2 (or @TysonMN ?) has the decency to at least update the readme so that no user wastes his precious time, a pull request has been opened on this subject...)

YkTru avatar Jun 04 '25 05:06 YkTru

Hello @YkTru ,

Thank you for creating this issue. It required some of your time. I interpret that to mean that you care about this project and its success.

I too care about the success of this project. However, I no longer have any time to contribute to it. I expect both of these are true for @marner2 as well.

I agree with you that this project needs an active maintainer to be successful. This project has been led by four wonderful maintainers in the past. The next chapter will involve a different maintainer, but no one has stepped up yet to fulfill that role.

TysonMN avatar Jun 07 '25 13:06 TysonMN

Certainly, I clearly cared about this project.

What I’m criticizing is the fact that @marner2 said 8+ months ago that he would resume investing in the source code “in the fall or winter,” and now, two weeks away from summer, he still hasn’t taken the time to at least inform us that, in the end, he wouldn’t be able to.

It takes like.. 5 min to write: "Sorry finally I don't have time/interest to invest" and update the README?

I wasted a considerable amount of time trying to learn/understand the source code over several months, trying to get helpers to work that ultimately didn’t seem very compatible with WPF (eg the infamous subModelSelectedItem on recursive data structures), make samples to show issues/wayarounds, etc.

I find it disrespectful of @marner2 as a maintainer not to have at least let us know during the winter that he wouldn’t have time, and the fact that he doesn't update the README so that no other user waste as much time as I wasted (yeah I learned some stuff along the way.. but it wasnt worth the hassle).

Time and energy are precious resources, especially in programming — you must know that @marner2 ?

That said, thank you @TysonMN — you’ve always responded to me, even if just to say you didn’t have time, which I completely understand and value the fact that you take time to inform me.


Well it’s sad — it was an excellent library IMO and MAUI should definitely learn from it. But now I’ll have to go back to dealing with ridiculous null exceptions, verbose hacked disjoint unions, boring TDD, MVVM/Prism class and project explosion + a ton of other stupid practices/bugs in C# 😓

YkTru avatar Jun 07 '25 22:06 YkTru

(*of course, if @marner2 has since had an accident, is facing mental health issues, or worse (caught in a war etc), I withdraw my criticism entirely and sincerely apologize)

YkTru avatar Jun 07 '25 22:06 YkTru

I want to throw my hat into the round as maintainer.

I am already a maintainer of the ruby jwt package.

I am currently working on a LOB app which needs some overhaul. The app will be ported in the next few months to a F# base and requires a Windows environment. Elmish.WPF will become a core part of the app. It will receive the required attention it needs.

@YkTru I understand your frustration. I really do. I don't want to deal with all the NullExceptions as well. That's why I want to step up as a maintainer and get this ship moving again.

excpt avatar Jul 07 '25 06:07 excpt

Hello @excpt.

Sorry for my delay. This the first evening since your comment that I haven't been coaching my son's baseball team.

Thanks for stepping up. I gave you write access. This should be enough permissions to get started. Let me know if you want to do something but lack permission.

All choices are now yours to make. I am still around and might be able to provide some advice or guidance if you would like it.

Good luck!

TysonMN avatar Jul 11 '25 01:07 TysonMN

Hi @TysonMN

Thanks for the trust.

excpt avatar Jul 12 '25 10:07 excpt

@excpt Great.

  • Do you intend to resume work on static bindings? I used that library for a little over a year, and it clearly helped on the XAML side for intellisense/debugging.

  • One of the main challenges with using Elmish.WPF is supporting recursive data structures (e.g., trees) in a way that integrates smoothly with WPF. A good test case would be implementing a directory-style tree grid, similar to what you see in macOS Finder.

Image

In my experience, submodelSelectedItem doesn't handle selection well beyond a single level of depth (i.e., at 1+n depth). I've managed to work around it by initializing the submodels in ViewModels class constructors, but this led to UI update issues where selection changes weren't properly reflected (you can check my others PR and Questions/Issues for more details). A built-in helper for this scenario would make things much easier and more reliable.

Well good luck—looking forward to seeing what you come up with. In the meantime, I’ll be stepping away from programming for a bit; the past eight months trying to make work that library have really taken a toll on me, to be honest.

YkTru avatar Jul 12 '25 21:07 YkTru

@YkTru

I will focus on the static bindings and the docs. It's what I need as well. I need bindings to DataGrid, TreeViews, etc. Also I am using 3rd party libraries like DevExpress with all their custom calendar, timeline and other view solutions.

A recursive access to structures is for me essential as well.

Currently working on adding all samples as static typed versions. First I need a good foundation.

excpt avatar Jul 13 '25 10:07 excpt

@TysonMN you are correct. I had hoped to invest some time in the winter, and then other things came up and then piled on again in the spring and now summer (I just got married 3 weeks ago). These things are hard to predict, and I've been accused more than once of being overly optimistic.

@YkTru This project is fully free and open source, which means ALL of the source code is available and open for you to read and understand. This is exactly how I was introduced into the project a few years back. I've found the codebase to be pretty well-documented once you invest the effort, despite a few rough edges (such as subModelSelectedItem, which is a hack anyways as stated in the documentation - the best way IMO is to use something that supports SelectedIndex or just not drive selection from the ViewModel at all, and instead do it all in the view. Otherwise you end up with copies of submodels on the MVU model, plus duplication of effort that WPF views already handle). You're right though that it needs to be accessible to more than those that can invest so much effort into it as I did. However I and I think everyone else here would appreciate more constructive conversations to those ends. I find it hard to sympathize with your points about your lost time when you are making direct demands of my time. The old adage of Open Source being "free as in speech, not as in beer" definitely applies here.

@excpt I can be available from here out in limited amounts to assist with others developing directly to the project. My contributions specifically were implementing the Static View Models and some threading work with the model loop. I also had (past tense, unfortunately) used the library in a very large corporate project, so I'm familiar with many development issues (such as how to handle selection, performance, storage, WPF as an MVU View, etc).

Apologies if my terminology isn't quite exact, as I'm a bit rusty with Elmish and MVU.

marner2 avatar Jul 13 '25 19:07 marner2

@marner2:

The old adage of Open Source being 'free as in speech, not as in beer' definitely applies here.

That’s not the point at all. Please don’t reduce what I'm saying as if I’m just a leech trying to consume your time. I specifically mentioned that I found it disrespectful of you, as a maintainer, not to at least let us know during the fall or winter that you wouldn’t have time to continue work on the project—especially after you wrote nine months ago (without any feedback at all after):

I do plan on resuming more regular work on the project over the fall and winter.

I wasn’t asking for anything "free" — only to know whether it was relevant to keep investing my time here. I don’t think that’s an unreasonable ask, despite what your tone seems to suggest. The fact that you say you “don’t sympathize” with the time I spent — which was significant, even if I’m clearly not as skilled as you — trying to understand the codebase, proposing PRs, working to get TreeGrid selection (1+n depth) working properly, offering samples, etc. — says more about how you value others’ time, effort and hope than anything else.

@TysonMN was clear and respectful: he told me upfront that he didn’t have the time, and I thanked him and said I understood. You, on the other hand, didn’t take 30 seconds to do the same last fall or winter — or even just update the README to indicate that you were stepping away and that the library was no longer production-ready. That small gesture could have prevented others from wasting their time using or learning the library — at least until someone like @excpt showed up, which, until a few days ago, was far from guaranteed.


On October 1st, 2024 — your last interaction on the repo — you wrote:

I appreciate the feedback. At this point, the more feedback I have once I restart effort on it in the next few months, the more efficiently I'll be able to work.

So what exactly do you mean now by "more constructive conversations"? Are you suggesting it’s unreasonable for me to feel frustrated and finally expressing it (now that I gave up) after spending nine months trying to contribute and engage — only to be met with dead silence, rather than a simple “Finally, I no longer have time for this”? I gave a lot of feedback + samples on some issues, always being polite (up until this message), sometimes writing too much I agree, I couldn't engage in a more "constructive way" IMO.

In any case, my developer friends had warned me against relying on obscure libraries, no matter how promising they may seem — like Elmish.WPF. I suppose I had to learn that lesson for myself. Thanks to this experience, I won’t make the same mistake again. It’s a shame Microsoft doesn’t realize how much they could gain by adopting this kind of architecture along with F#.

Just next time, if you maintain another project, I don't think it's unreasonable to ask that you share a bit of feedback when you decide to step away from something that others care about.


The best way IMO is to use something that supports SelectedIndex or just not drive selection from the ViewModel at all, and instead do it all in the view...

Good to know. That would’ve been very helpful to learn a year ago — it’s not something I could have easily inferred from the codebase and WPF internals alone IMO.

YkTru avatar Jul 13 '25 23:07 YkTru

@marner2 Could spare a moment and grant me merge permission on the main/master branch?

Edit: Fixed the name.

excpt avatar Jul 23 '25 16:07 excpt

@excpt, I think you should have that permission. Is there an error message when you try to do that?

TysonMN avatar Jul 25 '25 12:07 TysonMN

This library is production-ready, should not be in beta, and if you start with static view models it's a much more enjoyable experience. I can't remember if MS even offers a template for WPF + f# in Visual Studio, because why would you use anything else.

WPF is by its undercooked nature quite frustrating. I'm stuck with it at work, and I value the effort that went into it.

trieper avatar Sep 10 '25 06:09 trieper