Hi all,
I'd like to share our plans for the next Scala IDE release. It's no secret that since the 3.0 release in March we focused less on the core IDE and more on building plugins on top of it. That's how the Play IDE plugin came about, and Scala Search too (ScalaTest was already there, and is the most downloaded Scala IDE plugin!).
As time passed, we realized that core needs to expose a real API. We built functionality, fixed bugs, but didn't really plan for an ecosystem of plugins. In the long run, this is an essential piece: it allows plugin writers to provide additional functionality without tying it to a specific version. Moreover, it allows users to upgrade their core plugin without waiting for all plugins to publish an upgrade. It lowers the cost of maintenance, and it's simply decoupling the core from other plugins.
There is no point in pretending: we can't keep source compatibility between 3.0 and 4.0. We will reorganize packages and use `internal` to mark non-API classes (but we'll continue to expose them in MANIFEST files, just like Eclipse does). Since this is anyway going to break clients, we'll also go for `org.scalaide` as the root package. Adding anything in the `scala` package is discouraged, and this is the only chance we have to really clean up everything.
There will be pain for plugin maintainers, but we believe the cost is worth the stability it brings. We're eager to hear your feedback, especially since the ultimate goal of this is to simplify *your* life. Please let us know about things we keep "internal" but you absolutely need. We'll make a best effort to support all existing plugins in this API. Additionally, we'll use semantic versioning, roughly:
- micro upgrades are backwards compatible, no new APIs
- minor upgrades are backwards compatible, introduce new APIs
- major upgrades may remove or change signatures of API classes and methods
Timewise, we plan to release milestone 1 really soon (this week). No API changes are planned yet (except for the move to Scala-provided OSGi bundles, described here). Milestone 2 will have a first stab at the API, and we hope to get most of the breaking changes done by then (roughly 1 month from now, but it's hard to estimate). Afterwards we plan to go towards a release with a short bug-fixing period followed by RC1.
Obviously, this release won't have a lot of new features. So how can you help? If you're a plugin writer, we absolutely need your feedback. Please try to release a version for M2, and let us know if you're missing anything. If you're a contributor, you can help make this release more awesome! A few areas where we can definitely use some help are:
- your most useful missing feature or your most annoying bug
- usability:
- cleaning up Scala wizards
- cleaning up preference pages
- improving the UI of hovers and other UI elements
- intro pages/cheat sheets (a first stab is here).
- debugger:
- run to line, clean up stack trace names, detail formatters, etc.
- worksheet: lots of little improvements possible, from shortcuts to better UI in completions
To summarize, we will continue to work with the community and help integrate any pull-request you throw at us! We've seen a couple of great ones from Daniel Chia and Nicolas Scarcella recently, along with long-time contributors like Simon Schaeffer, so we're confident the 4.0 release will be a successful one!
Thanks for reading, and thanks for helping!