Hi, Interesting remarks.
> Hello, > > >> A 3rd party control, RichTextFX already exists -- what is this new > proposal adding that RichTextFX does not have? > > It uses the standard JavaFX VirtualFlow API and and does not need to work > with reactive streams. RichtextFX depends on several long unmaintained > libs: ReactFX (last commit 8 years ago), WellBehavedFX (last commit 6 years > ago), UndoFX (last commit 3 years ago). To say it's actively maintained is > a big exaggeration. > What do you think about our Rich Text Area project? https://github.com/gluonhq/rich-text-area I hear your concerns about depending on unmaintained libs, and it is one of my own primary filter criteria to either use or not use software >> What (if anything) is stopping a 3rd party from building a RichTextArea > themselves? > > - The lack of a standard API. The Behavior API has been discussed for > ages, but is still not implemented. Moreover, WellBehavedFX is literally a > rejected JEP/CSR implementation. > I agree a standard behavior API would be helpful, but I don't think it is needed for a third party control. I rather hope to see more third party controls being developed using different approaches, so that the community in general gets more experience with the different approaches, as that would give useful feedback on an approach to standardize it in OpenJFX. You know how it goes with projects in OpenJDK: once something is in, it has to be maintained and supported for a very long time and it is really hard to change it. > - The closedness of JavaFX in general. All internals are explicitly > private and final. A few simple examples. The date picker popup uses a > private API to calculate its width based on text size, but you're forbidden > to do the same thing. All i18n resources are not exported, you're forbidden > to use them to create a context menu. You're not encouraging 3rd party > libs, you're going in the opposite direction (for the sake of stability of > course). > Valid point. And it should be addressed. I wasn't part of the discussions where the decision was to close as much as possible, but I believe the idea was to close almost everything, and then to open API's when needed, after it was clear that opening the API would benefit the ecosystem without giving up stability. This happened a number of times in the past years, but I agree there is still much room for improvements. > - The JavaFX community is very small. The "tens of thousands of > developers" you talk about don't exist. Even famous projects are poorly > maintained or not maintained at all, including ControlsFX and ScenicView. > You have fewer features -> you have fewer users/market share -> you have > less promotion -> you have fewer committers -> you have fewer features. > It's that simple. > I think this is partly true, but it's more nuanced I believe. I am aware of a number of real large JavaFX projects, with many developers working on them. Most of these large projects are developed after closed walls, with lots of duplicated code that could go in a library. For the ecosystem as a whole, that's not good. It would be much better if we were in a situation where individual developers or companies would create and maintain libraries that would then be used in those big projects. For non-technical reasons, this is unfortunately not the case. > - There's literally no docs about creating new controls. Even Skin API is > badly documented. You can only learn from existing control libs. > This is a very valid concern. And I believe it is more important for us (openjfx-dev) to fix this, rather than do everything ourselves in the OpenJFX core. We need to encourage developers to create new controls, and provide more documentation, tutorials etc,... In the early days of JavaFX, there was a big team (it would now be called devrel I guess) that was working on this, helping developers and the ecosystem, but we know what happened next. That gap is not yet filled, and this is the price we are still paying for it. > This particular feature would be a HUGE step forward. I'm really glad to > see it. Hopefully it won't get buried under a bunch of pointless abstract > discussions like the CSS theme CSR. Just get some feedback and implement it > the way you want. It's a million times better than doing nothing. > Well, it's not that we're doing nothing. We are doing a number of things: 1. inside openjfx: keep it working. This should not be underestimated. With the fast and not always logical changes in platforms/OS code, there is lots of code under the hood that needs to be maintained and improved. A number of people on this list are extremely active on this, and spending lots of time on it. Unfortunately, this doesn't make headlines as the result of the hard work is often that "existing things keep working". Apart from keeping it working, I feel we are moving forward and making gradual progress. Over the past year, I saw more people contributing to OpenJFX and to this list, resulting in improvements in specific directions, and I am optimistic about that evolution. 2. outside openjfx: as I said, with Gluon we created this RTA ( https://github.com/gluonhq/rich-text-area). Because people wanted it, and because it would be good to experiment with it, without jeopardizing the OpenJFX stability. As for the pointless abstract discussions: we are somehow linked to the OpenJDK umbrella, where quality is valued much higher than adding hip features, and we try to stick to that principle as well (granted, I wouldn't call things like "tray support" a hip feature, so we are definitely not yet where we need to be). As a consequence, we do have lots of discussions before something gets in. For projects that deliver the foundations to an ecosystem, it is often better to not do something than to do it wrong. I know this is often unpopular, but being on the first row to fix things that were wrong from the beginning, I learned the hard way that this statement makes sense. That is not to say that we should not do anything. On the contrary, I'd love it if we could do more. But in the right place. Stability and basic features inside OpenJFX, experiments and libraries in the ecosystem. - Johan > On 23/02/2024 14.45, Johan Vos wrote: > > I fully agree with John on this. > > A RichTextArea is something that can "easily" be developed outside OpenJFX > . > There are a number of examples already, e.g. RichTextFX, and our (Gluon) > RichTextArea at > https://github.com/gluonhq/rich-text-area > > In the past, we clearly said that this was not a focus for OpenJFX. > > There are a huge amount of outstanding issues in JBS that can only be > fixed in the OpenJFX "core". Developers (of custom components/controls) > rely on the core OpenJFX development to address those issues. That is what > this group (the openjfx-dev list) is supposed to do. > > I highly encourage developers to create custom components and controls, > but not as part of OpenJFX. As others noted as well, we have many other > things to fix that can only be fixed in OpenJFX, and that is where the > priorities of OpenJFX should be, imho. > > - Johan > > On Fri, Feb 23, 2024 at 2:48 AM John Hendrikx <john.hendr...@gmail.com> > wrote: > >> Hi, >> >> Far be it from me to tell the FX team what it should do, I am still >> wondering the following: >> >> - A 3rd party control, RichTextFX already exists -- what is this new >> proposal adding that RichTextFX does not have? >> - What (if anything) is stopping a 3rd party from building a RichTextArea >> themselves? >> >> In other words, I think the FX team ought to focus on **facilitating** >> the building of complex controls like RichTextArea, by identifying gaps in >> the current Control API that is **stopping** 3rd parties from doing this >> themselves in the same integrated manner as a "native" FX control. >> >> Enabling thousands or tens of thousand of developers to build more >> complicated controls seems to me like a much better investment than what I >> think will be a significant investment in one of the most complex controls >> imaginable. RichTextFX was actively developed over a 4 year period, with >> 45 contributors and over 1400 commits (for comparison, JavaFX had 250 >> commits in the past year). If it will be significantly less complicated, >> then what does it offer over RichTextFX? >> >> --John >> On 21/02/2024 19:07, Andy Goryachev wrote: >> >> Dear JavaFX developers: >> >> >> >> We would like to propose a new feature - rich text control, RichTextArea, >> intended to bridge the functional gap with Swing and its >> StyledEditorKit/JEditorPane. The main design goal is to provide a control >> that is complete enough to be useful out-of-the box, as well as open to >> extension by the application developers. >> >> >> >> This is a complex feature with a large API surface that would be nearly >> impossible to get right the first time, even after an extensive review. We >> are, therefore, introducing this in an incubating module, >> *javafx.incubator.richtext*. This will allow us to evolve the API in >> future releases without the strict compatibility constraints that other >> JavaFX modules have. >> >> >> >> Please take a look at the proposal [0], a list of discussion points [1], >> and the API Specification (javadoc) [2]. While the proposed API is ready >> for review, it isn't complete nor set in stone. We are looking for >> feedback, and will update the proposal based on the suggestions we receive >> from the community. We encourage you to comment either in the mailing >> list, or by leaving comments inline in a draft pull request [3]. For >> context, the links to the original RFE [4] and a list of missing APIs >> related to rich text [5] are provided below. >> >> >> >> Sincerely, >> >> Your friendly JavaFX development team. >> >> >> >> >> >> References >> >> >> >> >> >> [0] Proposal: >> https://github.com/andy-goryachev-oracle/Test/blob/rich.jep.review/doc/RichTextArea/RichTextArea.md >> >> [1] Discussion points: >> https://github.com/andy-goryachev-oracle/Test/blob/rich.jep.review/doc/RichTextArea/RichTextAreaDiscussion.md >> >> [2] API specification (javadoc): >> https://cr.openjdk.org/~angorya/RichTextArea/javadoc >> >> [3] Draft Pull Request for API comments and feedback: >> https://github.com/openjdk/jfx/pull/1374 >> >> [4] RichTextArea RFE: https://bugs.openjdk.org/browse/JDK-8301121 >> >> [5] Missing APIs related to rich text control: >> https://bugs.openjdk.org/browse/JDK-8300569 >> >> >> >>