Replies: 8 comments 4 replies
-
As someone who is fairly new to Rust, and has helped on one PR for egui, here's my two cents: For in favor of making more things public, I ran into an annoying private thing while helping on #3906. It would be possible to do arbitrary orderings of On the other hand, as I understand it making changes to private internals is a non-breaking change. The more of egui internals are public, the more breaking changes will happen. This makes the main debate, as I understand it, is between making internals public for more user freedom, or keeping internals private for speed of development. I don't know which is more valuable to egui currently, though I would expect that the more stable egui gets, the more internals can be made public. There is also an additional course of action to consider, which is adding more implementations to interface to that public api and do what you want. While I could write some bodge to order my Full disclaimer, I am not emilk, so I don't know exactly what they want to see in a PR like the two you linked. However, I personally would like to see at least some analysis of the downsides of making certain things public. For example, how would making the things in your two PRs public limit the development of |
Beta Was this translation helpful? Give feedback.
-
Well, #4193 #4200 Actually I'm so tired of this situation so i'm considering to make self-upgradable repo-fork with auto code rewritting, but there are too many questions about rust-parsing-rewritting tooling, maintaining history, versions... |
Beta Was this translation helpful? Give feedback.
-
I'm sorry about that - I just have very little time every week to work on egui, and most of that time goes towards reviewing PRs, and still I don't have enough time to review all of them. If you want PRs merged faster there are a few things you can do to help: A) make fewer smaller PRs As for "make everything public" - that adds a burden on documentation and maintenance. The rule of thumb should be: a struct field should only be public if mutating it doesn't break any invariance. I agree there are many parts of egui that should be made more public, and many "make this public please" PRs have been merged. But I'm also in a situation right now where I made the mistake of making everything in |
Beta Was this translation helpful? Give feedback.
-
@emilk for me, you are the person who made available writting gui apps in rust. https://github.com/rerun-io/opensource?tab=readme-ov-file I understand you impact to rust ecosystem. and I realized my PRs was not that good. Anyway. I'm looking the way to live with vanilla egui without PRs, forking, disturbing you, waiting months for the major release, rebasing, discussions etc, etc. Lets say - "less opinionated egui". Quick example I have: #4162
And also I was disappointed with this. I wanted hovering, but not selection. If we have selection, we cant click inside column. In my fork, I just rewrite col to make it do what I want. My point is that I need that feature ASAP, and this feature is too minor to involve any devs to make decisions.
Well. What about - "If its not documented - use it on your own risk?" ?
Cant say for all community, but for me its not the problem. I can assume that there are some examples in the internet which wouldnt compile and this could scare novice programmers. But I really appreciate that Response was plain clonable and destructurable object. IMO there always be breaking changes. |
Beta Was this translation helpful? Give feedback.
-
I think a more idiomatic approach would be to use
Sounds like a nice feature to upstream (the ability to have a hover highlight without selectability). |
Beta Was this translation helpful? Give feedback.
-
I'm running into similar issues to @enomado where I'll make some custom version of e.g. Would another solution involve some visibility decorator macro based on crate attributes? Then when you import egui = { version = "0.21.0", features = ["public_internals"] } Then power users can just turn that flag on. Easier said than done of course. |
Beta Was this translation helpful? Give feedback.
-
This has been a pain point for me as well. I can't debate the finer points of which parts of the APIs should be public, but as a rule of thumb, everything currently implemented in the If anything, that would organically inform which of the lower level APIs are involved in making the existing set of components and containers possible, and open up the possibility for increasingly, and equally powerful, component libraries to be made without having to burden the Egui core development team with every little change via PR.
|
Beta Was this translation helpful? Give feedback.
-
I don't know if everything should be public, but I loved the title ! (Sometime ago #799) |
Beta Was this translation helpful? Give feedback.
-
This is a petition to make more egui internals public.
My product depends on egui and I'm kind of poweruser with special needs in context menues(#4162), layouts, table features (#3089)
I need some way to fork egui components like context menu or table to bikesred features I want. With current visibility levels I cant do it, instead I must fork the whole egui and its super inconvenient.
My questions and pull requests to make situation better are ignored for years.
Historically, there is a lot of private-public PRs
Beta Was this translation helpful? Give feedback.
All reactions