manifold-systems / manifold

Manifold is a Java compiler plugin, its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more.
http://manifold.systems/
Apache License 2.0
2.42k stars 125 forks source link

Question: Fashion and reliability #526

Open magicprinc opened 1 year ago

magicprinc commented 1 year ago

Your project is miles ahead of everyone else. I see every feature on your start page and I really want it.


my subjective wrong opinion, please ignore

Pure Java - "no comments"... Project Lombok looks like a child's play in comparison to you. Scala is impossible to learn, and not Java. Kotlin is quite ugly, and not Java. Groovy is great, but quite fat and slow and slowly dying.


The questions are:

PS: I really want to start using your amazing project, but I am little afraid…

rsmckinney commented 1 year ago

Hi @magicprinc, thanks for the kind words!

Your questions:

Why aren't you much, much more popular? You really deserve it!

Thank you, and great question! I won't pretend to know the answer; I really don't know. But, it's probably a mix of things.

Your P.S. is probably the largest hurdle. Manifold scares a lot of people, which isn't an unreasonable reaction to a library like Manifold. But it comes down to traction like everything else.

Are there any stability problems?

It's far from perfect! But it's getting better with age :) Seriously, after testing, stability is a product of feedback and bug reports. Manifold is growing slow and steady and I think stability tracks with that.

Are you ready for production, for critical systems?

Manifold is a collection of subprojects, some are sturdier than others. I'm hesitant to call any of it "ready for critical systems", but on the whole Manifold appears to be reliable enough for the early adopters I'm aware of.

Is JDK 21 supported?

Yes. Fully supported.

Do it work with Lombok (if one can't remove Lombok)?

I don't test with Lombok, so I can't say that it's 100% compatible, but I've fixed several compatibility bugs reported from people using it. They seem content using Manifold with Lombok now. Ymmv.

Can it replace Lombok completely (has all features)?

No. Manifold is not supposed to be a replacement for Lombok. In fact, I intentionally did not implement some features because I knew Lombok already had them; there was no need to replace features that work well enough.

At the same time Manifold takes a different approach at solving some of the same problems Lombok aims to solve. Take for instance, getter/setter methods. Lombok provides annotations to make it easy to generate a lot of the boilerplate code otherwise required by Java. Whereas Manifold sets out to eliminate getters and setter via the properties construct.

Do it work with google's error-prone?

I don't test with error-prone, but I am aware of at least two issues with it.

PS: I really want to start using your amazing project, but I am little afraid…

I can't blame you. Committing to any new library, particularly one that significantly affects how you design and/or write code, is a big deal. I suppose it comes down pros and cons with your particular needs.