Does metals need to be re-architected? #4361
Replies: 4 comments 4 replies
-
Thanks @vishalovercome for raising this! I believe you point is
am I correct?
Yeah, I also dream about making Metals to be plugin-architecture, and let users can develop their own features using all the semantic information / build information / syntctic information gathered by Metals 😄 For LSP features, yeah, that would be awesome if we can scalameta/metals-feature-requests#5
Sorry, I couldn't catch why you came up to this conclusion. Could you elaborate on why you think providing a roadmap will help the problem you mentioned? While providing a long-term roadmap would be ideal (currently, Metals actually don't have a roadmap 😆 ), but I don't think it's a good idea to provide a road map that's time-bound for OSS in general.
Which part do you think is not well-documented?
I don't think so actually (except if we're going to re-implement Java language features from scratch 😅 ).
What part do you think the Metals team should delegate to others, for example? (Maybe test explorer stuff?) |
Beta Was this translation helpful? Give feedback.
-
Right after asking for "time bound roadmap" I had mentioned that it would be apparent that metals team would never be able to keep up with the pace of the community. My goal isn't to get timelines. Instead, I want the team to take some time away from development and rethink a strategy that allows for wide variety of support that will be demanded from metals. Just Java support took so long and is hardly useful. Now imagine Scalapy/ScalaJS/Scala Native! Then someday, we'll talk about frameworks and then libraries! Better to halt all development and provide a strategy to move forward. |
Beta Was this translation helpful? Give feedback.
-
@vishalovercome I read this post several times but honestly I don't see the constructive basis on suggestions to take some actions that you suggested. From full-time maintainers side I can say right now that the amount of people and time allows us to work mainly on Scala features.
There is no issue with centralization/architecture. |
Beta Was this translation helpful? Give feedback.
-
It seems that the a few core points I made got lost amongst the various other things I've said.
Once again, thank you very much for your work! |
Beta Was this translation helpful? Give feedback.
-
In the past, I've raised various issues faced while working on a mixed Scala-Java project and while the maintainers have been prompt in replying, more often than not my issues remain unresolved. Yesterday, this discussion was initiated by somebody else and I'm going to start a different kind of discussion because I can see a much bigger problem with current architecture as well as style of development.
In short, I think that the direction of Metals is at odds with the direction of Scala community. These are some of the projects that community is working on:
There are plenty of other dimensions where community gets split (scala 2 vs scala 3, testing libraries, etc.). In the future performance profiling may become an integral part of an VSCode. So far, it's been the job of metals developers to address the entire community. But is that sustainable? Can metals truly keep up with all the projects that are being worked on? I can see the list of features piling up all the time.
When it came to Java support, I got the following responses:
Going by this, question would be how will Metals support a very promising project such as scalapy? Won't the same set of questions come up again? Providing a first class developer experience for various build targets, specialized frameworks, build tools, etc. will never ever be possible because 1 team can never support the use cases for the plethora of tools.
For this reason, the core metals team should provide a long term roadmap that's time bound as well. It will then be apparent that the current architecture/style of development is too centralized and that Metals should have a plugin based architecture which allows for various other LSPs, framework specific tooling to be integrated into it by people other than the core metals team.
I don't know what such an architecture ought to be, in part because the architecture and code of Metals isn't really well documented. What I can see is that the team is working on features that ideally ought to be done by maintainers of other projects. Scala 3 support for instance should be done by the compiler team. Likewise, Scalapy/Zio/testing library/etc. support by the developers of the respective projects. Only then can Metals keep up with rest of the community.
To summarize, metals should provide:
Would love to know what others think about Metals support for the entire Scala ecosystem!
Beta Was this translation helpful? Give feedback.
All reactions