A Chat with Semyon Atamas: Fortran Plugin Developer and Marketplace Technical Lead

Semyon Atamas is the technical lead for JetBrains Marketplace. In this interview, he shares his story with Yungyeong Heo from the JetBrains Brand Marketing team. He talks about his job, as well as his plugin for Fortran and some interesting stories behind it.

Semyon Atamas, Fortran Plugin Developer and Marketplace Technical Lead

What does your job as technical lead in the Marketplace team involve?
My primary responsibility is to choose the technologies used in every part of Marketplace development. There are three primary levels of modern web applications: frontend, backend, and backend infrastructure. Someone has to be familiar with all of them to make a vision of the project. I keep track of all the technologies we use, and deal with high-level questions regarding technologies and infrastructure. Additionally, I am responsible for our overall approach to the platform and how we integrate it with other services. I am also a software developer, and part of my work is on the Marketplace backend.

How is Marketplace different from the previous plugin repository?
JetBrains Marketplace is an evolution of the plugin repository. It has more features than the old plugin repository and a wider scope, as it covers the full portfolio of JetBrains products, with paid plugins as well as free plugins, and more. JetBrains has had a plugin repository for a long time, as plugins for IntelliJ Platform-based IDEs have been around for more than 15 years. But for a long time the repository wasn’t actively developed. A few years ago, my colleague Mikhail Vink proposed the concept of the Marketplace. Since then, we have completely redesigned our application and updated the whole technology stack as well. We host plugins for the IntelliJ Platform as well as all our other products, and we are going to add non-plugin services soon. We also have a new level of functionality. Plugin developers can now see the verification results for their plugins, and some download and purchase statistics as well. One of the most significant changes was the introduction of paid plugins. That’s why it’s called Marketplace.

How actively is the community creating plugins in Marketplace?
About 95% of plugins in Marketplace are from the community, and almost all paid plugins are community-built. Most plugin creators are individuals, not organizations. Quite a lot of plugins are unfortunately not regularly maintained or updated. We know that people have to put a lot of time, energy, and effort into supporting the plugins they provide. That’s why we introduced Marketplace. Marketplace provides a way to support both plugins and plugin developers. With Marketplace, developers can sell their plugins, get help to improve the reach and visibility of their plugins, and use the additional services I mentioned in the previous question. This enables them to spend more time on plugin development and improvement.

What does Marketplace mean to JetBrains?
The main goal of Marketplace is to nurture the extensions ecosystem around our products. We want to have more plugins, and we want existing plugins to be of consistently high quality. The more plugins we have, the more versatile and universal IntelliJ IDEA and other products will be.

You have developed your own plugin for Fortran. Why a Fortran plugin, and how did it come about?
Every time I say, “I made a plugin for Fortran.” people ask me, “Why?”. But I had a clear reason for it. I knew about Fortran because I used it when I studied physics at university. A few years ago, I asked my friends who were still studying physics and using Fortran, “Why don’t you use IntelliJ IDEA? There must be a Fortran plugin for it.” But in fact, there wasn’t one. At that moment, I decided to develop a plugin for Fortran because I knew that it’s still needed in some areas. There was also a question about whether the Fortran plugin will be useful. My answer was “yes” because the plugin was designed for fans of JetBrains products, and it has pretty decent integration with CLion debugger.

In which areas is Fortran still used?
Fortran is generally used in banking, physics, and some other areas with heavy computations, like weather forecasts. I occasionally discover other new areas where the language is used, as well. One day I received an email from a user of my Fortran plugin who simulates the growth of the bacteria used to make craft beer. He said that he uses Fortran for the simulation, which makes his simulator faster than others.

Was this the first plugin you developed?
Yes, this was my first plugin.

Were you the only one working on the plugin, or did anyone work with you? How long has it been in development?
I proposed a Fortran plugin as a summer internship project at JetBrains. At first I thought I wouldn’t find anyone quickly because it’s quite an old technology that is currently used only in specific areas. But there was a physics student who understood my project and Fortran. I started the project with him, and I was glad that I met a person who understood my idea and could develop it with me. It took about one year in total – two months of full-time work during the summer internship and then ten months of my 20% “personal project” time.

What do you enjoy about plugin development?
Writing formal grammar for the language. From my point of view it was a great experience. And I have to say that due to the powerful IntelliJ API I was able to focus exclusively on language-specific matters. Also, one of the greatest things about developing a plugin is the existing user base of JetBrains products, which means that there are a lot of people who will be ready to give your plugin a try. You can also see the result of your work almost immediately in software development, which I really like. Those are the coolest things about plugin development and development in general from my point of view.

Did you have any challenges?
Yes, of course. Fortran is an old language, so there is no official Fortran grammar. Also there is a so-called “fixed” Fortran form that ignores spaces and has the first five columns reserved for statement labels. In the modern world, we cannot imagine a language like this, and there were serious concerns about how we were going to support the language. We finally found a solution, but it was a challenging part of the project, and the plugin still doesn’t cover all possible ways of writing Fortran code.

Why is it important to continue supporting Fortran?
It is important to continue supporting tools for any existing programming language. This is in general the JetBrains way: to support technologies and programming languages that people need and use. Fortran still has a large number of users. Using a technology that is not supported by your IDE is a real pain. It’s hard to work without proper tooling, and it’s incredibly hard to work with 70-year-old technology like Fortran. I know that the plugin is still in active use, as I receive a lot of feedback, as well as questions from users who are waiting for updates.

What would you recommend to others who want to develop a plugin?
My first recommendations are to check all the resources that we’ve created for plugin developers and to be patient. It’s easy to start developing your plugin using, for example, the IntelliJ Platform Plugin Template. But the IntelliJ API is quite big and it may scare newcomers. We understand that, so we are doing our best to make it easier to get started with. There are also some useful tools, for example, for integrating formal grammar tools. You have to read and learn a lot if you are going to make a plugin that supports a particular language or technology. But it’s also fun and rewarding in the end!

Secondly, it is crucial to learn by example. From my perspective, it’s the best way to develop plugins because there are already so many of them for the IntelliJ Platform. If you want to implement some features, maybe somebody has already done similar things. You can search for plugins that have open source code, take a look at them, and try to figure out how they implemented a particular feature. This can make things much easier for you.

Also, join our plugin developer community in Slack; the community can help you out a lot. The Marketplace team is also present in this Slack, so if you have questions regarding Marketplace itself, you can ask them in the #marketplace channel.

Thank you Semyon!
It was really great to learn about your role as at JetBrains Marketplace. Thank you for sharing the fascinating story behind your plugin and offering such great tips for new plugin developers. I hope that more plugin developers and users will take advantage of JetBrains Marketplace, and I am looking forward to seeing new features in Marketplace soon.

Yungyeong Heo, JetBrains Brand Marketing Manager