How to contribute to IntelliJ Scala plugin

It may well be that you haven’t considered contributing to any open source project, let alone the IntelliJ Scala plugin. However, if you use IntelliJ IDEA to write Scala code, it’s actually a very reasonable thing to do. Here’s how you can benefit from contributing to the plugin code base.

There’s a common misconception about attracting contributors where the process is viewed as "a way to get developers for free." Nothing could be further from the truth, at least in our case. While the Scala plugin code is open source, there are currently 10 people in the Scala team at JetBrains working on the project full-time. Believe me, we can implement features and fix bugs on our own just fine, and that’s the straightforward way to do that. We’re making additional efforts by creating documentations, publishing tasks, recording videos and doing consulting in order to get to know people and to establish relationship with the Scala community.

Another prejudice that prevents many people from contributing is a notion that "programming an IDE is hard." I admit that there’s an element of truth in that one, because both IDEA and the Scala plugin code bases are somewhat complex. However, on the one hand, the complexity of different tasks varies greatly, and on the other hand, this provides a great opportunity to learn something new about your tools of the trade. Make no mistake, writing IDE code can be both educational and entertaining!

If you want to contribute, where to start? First I recommend that you watch the video recording of our recent ScalaSphere presentation, Inside IntelliJ Scala plugin. It shows you how to configure the development environment and gradually introduces you to the inner workings of IntelliJ IDEA and the Scala plugin:

The slides (PDF) and the source code are also available.

You can select a task by searching for Up For Grabs tickets in our issue tracker. But don’t feel restricted by that list, as in principle, you are welcome to choose any existing ticket or any task you can imagine.

If you choose to implement one of the 100+ envisioned collection inspections, feel free to check the dedicated article for more info on that endeavor.

Here’s a fuller list of resources you can rely on:

  1. IntelliJ Scala plugin project on Github
    1. Setup instructions in Readme
    2. ScalaSphere branch with examples.
  2. IntelliJ Platform SDK Documentation
    1. Architecture Reference Guide part
    2. Custom Language Support part
  3. Viewing PSI Structure help topic
  4. IntelliJ IDEA project on GitHub (the platform API docs are fairly good)
  5. The Scala Language Specification (PDF)

If you have any questions, you can ask them:

Please don’t hesitate to ask any questions, even "obvious" or, on the contrary, "too hard" and "rhetorical" ones. We actually encourage you to ask questions and to get in touch.

Although the process is a goal in itself, if you happen to implement some feature or fix a bug along the way, just create a pull request or send us a patch, as usual. We also send cookies some small but cool stuff to active contributors, just for the fun of it.

Contribute with pleasure!


The IntelliJ Scala Team

Comments below can no longer be edited.

15 Responses to How to contribute to IntelliJ Scala plugin

  1. Avatar

    Bruno Bieth says:

    April 22, 2016

    Last time I tried (something like 2 years ago) I couldn’t run the test suite. I was then told that this can only be done with the Ultimate edition. Can you now develop with the Community edition?

  2. Avatar

    Pavel Fatin says:

    April 22, 2016

    Hi Bruno,

    The Community edition should be enough, we’ll add a corresponding clarification in the Readme. By the way, I personally use IDEA Community to work on the Scala plugin project (to test such a setup).

    There was once a problem with running the whole test suite at once from IDEA (as we usually rely on TeamCity to run CI tests remotely), but that problem should be fixed by now.

    If you encounter any issues with starting tests, please try to use “TypeInferenceTest” run configuration in the project as a base for starting selected test(s).

    Thanks for the feedback!

  3. Avatar

    Marcin says:

    April 22, 2016

    I have quite a big list of Scala plugin deficiencies which annoy me in my every day work. Few weeks ago I thought ‘hey, lets contribute something’ so I downloaded plugins sources etc. etc. The results of my journey is recorded in https://youtrack.jetbrains.com/issue/SCL-10098. Unfortunately I didn’t receive any feedback so far. So I suppose the question is: what I should do? Bug you on YouTrack more? I could create Pull Request of course but on this particular issue I would like to get your opinion before I will put more effort.

    Anyway thanks for resources. IIRC some README file was enough for me to set up dev environment (run the plugin, write some automated tests etc.) but I’m sure that there is a lot of useful knowledge ready to grab.

    • Avatar

      Roman Shein says:

      April 25, 2016

      Hello! Thank you for the initiative. Please accept my deepest apologies for not answering you in a timely manner. Don’t hesitate to communicate through gitter/youTrack/email if you think some issue is not getting the attention it deserves. The particular issue you are talking about is a bit more complicated then usual ‘up for grabs’ tickets in some ways (quick note: I don’t think creating by-name configurations only for test methods is the way to handle the problem, running test scopes is a good feature I would like to keep). I will take a closer look on the ticket in the upcoming days and provide a more in-detail response.

      • Avatar

        That80sGuy says:

        September 10, 2016

        This is just my personal opinion, based on (attempts in) contributing to open source projects.
        Many projects take weeks before a PR on Github is reviewed. The issue referred to above still hasn’t seen a reply from a JB dev yet. I’m not trying to blame anyone, people are busy, people inadvertently forget things, esp. given the many tools and platforms in use.
        But the way it looks for willing and able contributors is that the project doesn’t care or value contributions. I opened a few PRs against the intellij repo and closed them after a few weeks since no-one responded. I’m imagening that in many projects PRs are processed randomly if someone happens to see them. And I keep thinking it would be cool if someone would be designated to check issues and PRs once a day. Not to process them in an instant, but to triage, ask for feedback if needed, ping/assigne the responsible dev. And also go over bugs/PRs and check if they stalled because a dev forget about it. And also just to leave (even just a template) that says “Thanks for the effort, it might take a bit till we get around to it”. Just letting people know someone is listening. In short: communication. But excessively, but little things. Put in the small effort to say “Thanks!” when merging a PR. Or – something that can really bug me and which stops me from going Ultimate (don’t really need the features, but would support a mostly awesome product) – are bugs that have lots of votes but not a single comment or anything from JB. The issue. with empty rows in the project explorer, the git staging area issue. Just write something “We hear you, but we want to fix it, but there are some tricky issues to solve before, so it might take a bit and we can’t give any date”. Something to let the users know you’re listening and know whether it’ll be addressed at all. The bugs mentioned really make me thing you don’t care at all if there are a 100 votes and comments (attempts from users to communicate with you) and not a single word from you.
        Sorry for the long rant, but I had to get this off my chest, apparently. It’s my perspective, the perspective of an open-source contributor and IntelliJ user, described here in the hope it might help JB understand such users better.
        Apart from that – keep IntelliJ awesome! 🙂

  4. Avatar

    hamsterofdeath says:

    April 24, 2016

    10 people working on the plugin? how many people are working in intellij in total? 200? 😮

    • Avatar

      Alexander Podkhalyuzin says:

      April 25, 2016

      aprox 140, that’s excluding Kotlin team, including Scala plugin team (which is 9 people for now, including QA), all minor IDEs, PMM, documetation and QA teams.

  5. Avatar

    Jean Helou says:

    April 24, 2016

    Hello pavel,

    I’m going to shamelessly advertise a proposal I made to jetbrains a few weeks ago : to host a hackergarten [1] centered on intellij-scala at the next Scala.IO Marcin’s experience is exactly what such a session can help fix for him and many others.
    I hope you would be interested in coming over and facilitating the hackergarten, I know I would love to see you there. (also I’ll take a look at SCL-10098 since I did manage to get the plugin to compile and make a PR against it)

    [1] A hackergarten is a “facilitated” hacking session on an opensource project with one or more comitters of said project

  6. Avatar

    David Pérez says:

    April 26, 2016

    This link doesn’t work: https://blog.jetbrains.com/www.scala-lang.org/docu/files/ScalaReference.pdf

  7. Avatar

    Andrew Brett says:

    August 3, 2016

    Are there any plans to update this blog more often? It used to have 1-2 updates a month, but there’s only 1 posting for the whole of 2016. It’s a shame, because it was a great place to check on the latest/upcoming updates to the scala plugin.

    • Avatar

      Victor Malov says:

      August 18, 2016

      I agree, this blog is a mirror to what is happening in Scala support in Intellij IDEA. And sometimes it looks like the project is dead or go slowly. More anonesments, especially in Scala plugin internals, might involve more people to project.

  8. Avatar

    Det says:

    December 3, 2016

    The comments in this post I don’t think give an accurate view of the state of contribution responses. 274/278 of the GitHub pull requests for the Scala plugin have been dealt with (https://github.com/JetBrains/intellij-scala/pulls?q=is%3Apr+is%3Aclosed) and 7790/10829 of the bug reports (https://youtrack.jetbrains.com/issues/SCL?p=0&q=%23Resolved).

  9. Avatar

    Matt Bush says:

    March 7, 2018

    The links to the scalasphere slides and source code both 404.

Discover more