Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API dependency improvement checklist #209

Closed
5 of 10 tasks
FWDekker opened this issue Dec 9, 2019 · 2 comments
Closed
5 of 10 tasks

API dependency improvement checklist #209

FWDekker opened this issue Dec 9, 2019 · 2 comments
Assignees
Labels
code quality Code changes without behavior changes enhancement Improvement of existing feature

Comments

@FWDekker
Copy link
Owner

FWDekker commented Dec 9, 2019

The checklist below has been replaced by separate issues to allow easier tracking and separate comment threads. These issues have been marked with the api-update tag.

Originally, the plan was to provide compatibility with IDE versions up to two years old. However, updating the dependency would allow usage of new features, in particular the Kotlin UI DSL. At the same time, supporting only the latest version would mean that some users are left out, and I don't think I can justify this by saying that the newer features are strictly necessary. At the same time, support for two years may be excessive. Many major plugins such as Scala, Kotlin, and Python target the latest IDE version only. Some plugins have a separate channel for older releases, but I think that that is too much trouble for a small plugin such as Randomness.

I have therefore made the decision to support IDEs only up to one year. That is, if the latest release is 20xx.y, then Randomness should support at least [20xx - 1].[y + 1]. For example, if the latest version is 2020.3, then support at least 2019.4 (which does not exist, so support at least 2020.1) The comment below explains the rationale behind this decision in more detail.

Checklist

Upgrading to a newer version would allow for the following improvements.

@FWDekker FWDekker added enhancement Improvement of existing feature code quality Code changes without behavior changes labels Dec 9, 2019
@FWDekker FWDekker self-assigned this Dec 9, 2019
@FWDekker
Copy link
Owner Author

This page gives a brief insight into usage statistics. The main takeaway is as follows:

It makes sense to support the latest major release, as well as at least two previous major releases.

With this approach, 80% of the people would be supported, whereas 2019.3+ would only support 50%. I think 80% is sufficient.

Therefore, the current support level could be narrowed from 2017.1+ to 2019.1+; note that this does not include the 2019.2 release which introduced the Kotlin UI DSL. Therefore, these features will probably not be supported until the first (or maybe second) major release of 2020, i.e. around june/july of that year.

@FWDekker FWDekker added on-hold Will not be worked on until conditions change and removed wontfix labels Dec 10, 2019
@FWDekker
Copy link
Owner Author

As an alternative to using the Kotlin UI DSL, take a look at using com.intellij.application.options.editor.BeanConfigurable.

@FWDekker FWDekker removed the on-hold Will not be worked on until conditions change label Jun 5, 2020
FWDekker added a commit that referenced this issue Dec 13, 2020
This one took a lot of effort. Turns out that for some reason on Windows the tests thought they were running in a headless environment, so I had to manually set headless to false in build.gradle.

I had to rewrite DataInsertActionTest completely because apparently the actions can no longer be mocked.

Additionally, I fixed a few things for #209.
@FWDekker FWDekker pinned this issue Dec 30, 2020
@FWDekker FWDekker changed the title Use latest IntelliJ API API dependency improvement checklist Dec 30, 2020
@FWDekker FWDekker unpinned this issue Dec 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
code quality Code changes without behavior changes enhancement Improvement of existing feature
Projects
None yet
Development

No branches or pull requests

1 participant