The JetBrains Platform Blog : Plugin and extension development for JetBrains products. | The JetBrains Blog https://blog.jetbrains.com Developer Tools for Professionals and Teams Mon, 12 Jun 2023 09:23:27 +0000 en-US hourly 1 https://blog.jetbrains.com/wp-content/uploads/2023/02/cropped-icon-512-32x32.png The JetBrains Platform Blog : Plugin and extension development for JetBrains products. | The JetBrains Blog https://blog.jetbrains.com 32 32 Webinar Recording: Introducing the Polaris Plugin for IntelliJ Platform Code Search https://blog.jetbrains.com/platform/2023/06/webinar-recording-introducing-the-polaris-plugin-for-intellij-platform-code-search/ Mon, 12 Jun 2023 09:22:13 +0000 https://blog.jetbrains.com/?post_type=platform&p=362573 The recording of the latest episode of the “Busy Plugin Developers” webinar featuring the Polaris plugin is now available on JetBrains TV.

Polaris is a semantic code search engine embedded in IntelliJ IDEA that understands the structure and relationships between different code elements, providing code snippets with relevant API usages.

Dmitriy Tseyler from JetBrains explores the key features of the Polaris plugin and demonstrates its capabilities in helping developers find code snippets and understand API usage.

Watch the recorded webinar on JetBrains TV to learn how Polaris enhances your development workflow with powerful semantic code search capabilities in IntelliJ IDEA.

Webinar Summary

After reviewing the webinar, we have compiled a concise Q&A summary:

Q: How can I start using Polaris?

A: To start with Polaris, install the plugin from the in-IDE Marketplace in IntelliJ IDEA, restart your IDE, and accept the Legal Acknowledgment. You can then utilize parameter suggestions by placing the caret in the parameter location. To find code examples, place the caret at a function or identifier, press Alt+Enter, and choose the “Show Examples” intention action or click the Search button in the top-right corner of the editor.

Q: How does Polaris work, and does it rely on AI?

A: Polaris indexes codebases, collects method usage data, and ranks informative code snippets for each API. It uses Naive Bayes classifiers to predict method or function call parameters based on the current code context. Polaris employs machine learning techniques to rank and suggest code examples, but does not generate code using AI. All code snippets come from actual implementations.

Q: What programming languages does Polaris support?

A: Polaris currently supports Java and Kotlin, with plans to expand to JavaScript and TypeScript in the future.

Q: Will Polaris become a paid service?

A: Polaris is currently available for free and will remain free for plugin development needs.

Discover Polaris

To stay connected with us and explore more about Polaris, you can reach us via email at polaris@jetbrains.com. You can also visit the Polaris issue tracker to report issues or leave feature requests.

For further information and details on how to get started with Polaris, refer to the documentation.

Stay tuned, subscribe to our webinars, and follow JetBrains Platform on Twitter!

]]>
Busy Plugin Developers Newsletter – Spring 2023 https://blog.jetbrains.com/platform/2023/06/busy-plugin-developers-newsletter-spring-2023/ Wed, 07 Jun 2023 12:08:30 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/mp-featured_blog_1280x720.png https://blog.jetbrains.com/?post_type=platform&p=360913 Marketplace updates:

⭐️ Releasing a Hidden plugin

JetBrains Marketplace provides a platform for plugin developers to distribute their plugins to millions of JetBrains users worldwide. If you plan to release a new plugin on JetBrains Marketplace, you might want a specific release date to coordinate your launch activities.
With the hidden plugin feature, you can keep your plugin private until its official release announcement.

Check out the Hidden Plugin Release documentation article for more details.

⭐️ Developer requirement to disclose trader or non-trader status

The European Commission adopted the so-called Omnibus Directive 2019/2161 to support EU consumer protection rules. One of its requirements is to inform consumers whether the third parties offering goods or services on online marketplaces act as professional traders.
As a plugin vendor, you must declare trader / non-trader status. Please indicate the vendor status in the Organization’s profile on JetBrains Marketplace. We are currently working on implementing individual vendor profiles, which will enable each vendor to declare their status accordingly.

Plugin development tooling updates

⭐️ Polaris code search engine for plugin developers

JetBrains introduces a public preview of the Polaris plugin for plugin developers – a code search tool embedded into IntelliJ IDEA.  It is designed to help developers of IntelliJ-based plugins quickly and easily find relevant code snippets, learn from examples implemented by others within the IntelliJ Platform and open-source plugins.

 For more information visit Polaris website: jetbrains.com/polaris-preview

New IntelliJ Platform Extension Points

In version 2023.1 of all IntelliJ-based IDEs, there are 36 new Extension Points and 13 more Listeners than in v2022.3. See the full list of Extension Points here.

⭐️ ReSharper API Verifier released

ReSharper API Verifier is a tool designed to automatically detect changes in the APIs referenced by its plugins, allowing ReSharper plugin authors to check their plugins’ compatibility with the ReSharper Platform. You can see the check results on the plugin web page on JetBrains Marketplace or have them sent to your email. Learn more in the blog post.

⭐️ IntelliJ Platform Plugin Template 1.7.0

We’ve introduced updates to the IntelliJ Platform Plugin Template – a GitHub repository that provides a preconfigured project template for plugin creation. Learn more: github.com/JetBrains/intellij-platform-plugin-template/releases

Gradle IntelliJ Plugin 1.14.1

The latest releases bring improved support for the most recent IntelliJ IDEA and Kotlin versions, along with bug fixes reported by our plugin developer community. Check out the changelog for details: github.com/JetBrains/gradle-intellij-plugin/releases

Gradle Changelog Plugin 2.1.0

This plugin helps you to easily generate and maintain changelog within the Gradle build system. Check out the release notes here: github.com/JetBrains/gradle-changelog-plugin/releases

Subscribe to the #intellij-platform-tools-releases channel for the latest tooling releases in our Slack for plugin developers.

IntelliJ Platform SDK Docs updates:

  • We introduced a new starting page for IntelliJ Platform SDK documentation, which provides improved navigation.

Useful resources:

⭐️ Busy Plugin Developers webinar: “Introducing the Polaris plugin for IntelliJ Platform code search”

Watch the latest episode in the Busy Plugin Developers webinar series, where we showcase the Polaris plugin in action.

⭐️ Open-Source Software (OSS) Licenses explained

To help you get a handle on open-source licensing, we’ve prepared a short guide that may help plugin authors choose the right OSS license for their tools. Check out the blog post for more information.

Community highlights:

🥳 IntelliJ Platform’s Slack has exceeded 5,000 users

We are happy to see our Slack community hit yet another milestone of 5000 members. Let’s continue empowering developers worldwide together. Join our growing community of talented plugin developers extending JetBrains products! Get an invitation.

Stay tuned and subscribe to the Marketplace Developer News, delivered right to your email.

Thanks for reading! 

Your JetBrains Marketplace team

]]>
The API Verifier: A New Era for ReSharper Plugins https://blog.jetbrains.com/dotnet/2023/05/26/the-api-verifier/ Fri, 26 May 2023 11:26:59 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/rs-how-tos-blog-featured-image-1280x600-1.png https://blog.jetbrains.com/?post_type=dotnet&p=357902 Despite being a plugin itself, ReSharper serves as an incredible platform for plugin creation. ReSharper’s development team uses the dependency injection approach to design every aspect of the product. That means that any component of ReSharper is like a building block that can be overridden with plugins, opening up virtually limitless possibilities for fine-tuning every aspect of ReSharper’s behavior. 

As a plugin author, you get to take advantage of each and every component that ReSharper developers themselves use. But there’s a flip side to such freedom.

Following the “each public component is an extension point” strategy limits our ability to refactor the existing code. It also makes huge refactorings like preparing ReSharper for the out-of-process mode or preparing our codebase for integration into Fleet much harder. For years, we’ve declared every new version of ReSharper as incompatible with the installed plugins, even if the set of APIs they reference hasn’t technically changed. Due to our internal refactorings, we could not guarantee seamless migration.  

Both ReSharper and Rider have major releases three times a year, which means that until recently, plugin developers were forced to recompile their plugins at least three times a year. It was not lost on us that sticking with this approach made the job of plugin writers maddening, and we knew things had to change. 

That is how we got started with the idea of getting ReSharper’s platform to automatically detect changes in the APIs its plugins reference.  

What is an API verifier? 

In ReSharper, we treat each plugin as an essential part of the product. During the installation process, all parts are combined to form one installation. It is at this stage that we now detect if a plugin uses an API that’s been altered or is no longer available in the latest version of ReSharper.

Should the API verifier raise any red flags, the plugin will be marked as Incompatible and won’t be included with the installed product. It will, however, remain on the list of installed plugins in the Extension manager inside ReSharper.

Those plugins that do pass the API verification will automatically migrate to the next version of the product. ReSharper 2023.1 is actually the second version of ReSharper to incorporate the API verifier, so all plugins that have been compatible prior to the 2023.1 release will be preserved. 

A new way to specify dependencies

With the introduction of the API verifier, we’re also changing our requirements for specifying dependencies pertaining to product version compatibility. This requires a bit of backstory.

Internally, we call our major releases “waves”. To name a wave, we take the last two digits of the year of the release and add a single digit indicating the number for the release in that year. For example, for the first major release of 2023, the wave name is “wave 231”, and the third one for 2022 is “wave 223”. 

Specifying the wave name as a dependency in your plugin can benefit you in two ways. First, it will help us verify that a package is indeed an extension for ReSharper. Secondly, specifying the range of compatible waves lets you indicate which versions of the products are compatible with the plugin. 

In the past, we recommended using interval notations for that. For example, if you were to specify the range in interval notation as [223-231) that would mean that the plugin was only compatible with the 2022.3 version. However, with the introduction of the API verifier, we now recommend specifying waves without using interval notation. You can now declare forward-compatibility just by specifying 231 as a wave dependency, like this:

<dependencies>
<dependency id="Wave" version="231.0.0"/>
</dependencies>

Marketplace integration

The code for the API verifier which executes during the installation was also implemented inside JetBrains Marketplace. This is particularly good news for plugin developers as the page for their plugin now displays detailed warnings whenever the APIs used are no longer present in the SDK. API verification is performed on all available plugins before each Early Access Preview or major release goes public. 

An example of how the API verification results look on the plugin web page of JetBrains Marketplace.

Plugin developers can also opt in to receive email notifications whenever their plugins fail to pass the verification process. The emails provide exhaustive information on which APIs became obsolete or were removed, altered, or updated, helping you zero in on the parts that won’t compile without having to open a project with the plugin code. 

Need help with writing a plugin for ReSharper or Rider? 

What’s next? 

The information on product compatibility that’s now visible in JetBrains Marketplace is only there for the publisher. It’s not possible for us to automatically unlist a plugin, even if we are sure that it is completely outdated and is definitely not compatible with the current version of ReSharper. At the moment, we’re showing those plugins as available in the Extension manager, even though any attempts to install them will fail because they cannot pass the embedded verification.

In the future, we are going to weed out such plugins from the feed. The feeds with the plugins are currently built based on wave versions, not the actual build number of the product. This means that the list of plugins for ReSharper 2023.1 EAP 1 is the same as for the release version. The Marketplace and ReSharper development teams are already working on making the switch from a wave-based feed to a build-based feed, so stay tuned for more updates. 

Kudos

We would like to thank Mike-E for his endless energy and for bringing the importance of implementing this functionality to our attention.

]]>
https://blog.jetbrains.com/zh-hans/dotnet/2023/05/26/the-api-verifier/
Releasing a Non-Public Plugin on JetBrains Marketplace https://blog.jetbrains.com/platform/2023/05/releasing-a-non-public-plugin-on-jetbrains-marketplace/ Thu, 18 May 2023 13:45:22 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/mp-news-blog-featured-image-1280x600-1.png https://blog.jetbrains.com/?post_type=platform&p=356519 JetBrains Marketplace provides a platform for plugin developers to distribute their plugins to millions of JetBrains users worldwide. If you’re planning to release a new plugin on JetBrains Marketplace, you might want a specific release date in order to coordinate your launch activities. With that in mind, we’ve released a new feature to help you publish plugins on JetBrains Marketplace without making them available to the general public. 

Read on to learn how to hide your plugin from public view until you are ready to release it, and discover some key things to consider for a smooth plugin launch.

Plugin release process

So, you developed a new plugin, and now you need to prepare for its release. There are several factors you should consider to ensure a successful launch:

  • Make sure your plugin has been thoroughly tested and meets the JetBrains Marketplace Approval Guidelines.
  • Prepare a description of your plugin and its features before packaging your release version. A clear and informative description can help the review team understand your plugin’s purpose and functionality, increasing the chances of approval.
  • Decide on the licensing concept: whether you’d like to release it as closed- or open-source software. You must also provide your license URL and source code (in case of OSS).
  • Choose relevant tags for your plugin that accurately reflect its category and purpose.
  • Finally, decide whether you want to release a hidden version first or go straight to a live version once it’s approved.

When is a hidden plugin release beneficial?

Releasing a hidden plugin is useful if you want to distribute your plugin for Beta testing. Releasing a Beta version can be an excellent way to get feedback and identify any issues before making your plugin publicly available. Once approved, the hidden plugin will be available only via a direct link. You can distribute this link among your Beta users and they will be able to install the plugin from its listing page directly to their IDE.

You may also want to ensure your plugin is ready to be released on the planned date and coordinate your announcements accordingly. This includes refining your plugin page and adding further information to make it more attractive to users. Some recommended additions include:

  • An issue tracker link for bug and feature requests.
  • Comprehensive and appealing documentation.
  • Screenshots of the plugin in action.
  • A video showcasing your plugin’s key features.
  • Links to your social media and official resources.

How to release a hidden plugin?

If you want to wait to decide on when exactly to release a plugin after its approval, choose the option to add a Hidden flag on the Upload form.

This implies that the plugin will be accessible only via a direct link, but it will not appear in the JetBrains Marketplace search results. Additionally, the page will not be indexed by search engines. Once you’re happy with your plugin and ready to launch it publicly, you can unhide it. Just hit Publish Plugin in the admin view of the plugin page, confirm your action, and it will instantly become available in Marketplace search, both on the website and in applicable IDEs.

Check out the Hidden Plugin Release documentation article for more details. If you have any feedback or additional suggestions on how we can improve the plugin publishing process, don’t hesitate to contact us via marketplace@jetbrains.com, create an issue in YouTrack, or reply in the blog comments.

The JetBrains Marketplace team

]]>
Introducing Polaris, a New In-IDE Code Search Tool for Plugin Developers https://blog.jetbrains.com/platform/2023/05/introducing-polaris-a-new-in-ide-code-search-tool-for-plugin-developers/ Tue, 16 May 2023 14:21:45 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/Blog_Featured_image_1280x600-1-1.png https://blog.jetbrains.com/?post_type=platform&p=344904 There are many resources available to developers extending the IntelliJ Platform, including the IntelliJ Platform SDK documentation, a dedicated Slack community where you can ask fellow developers for advice, and external forums and Q&A platforms. 

To discover how others have implemented features using specific extension points, you can browse IntelliJ Platform Explorer and then navigate to the source code on GitHub. It is, however, rather time-consuming to search through all of these resources and check source code locally. What if the examples of API usages were available right at hand in your IDE?

Introducing the Polaris plugin – a semantic code search engine

JetBrains introduces a public preview of the Polaris plugin for plugin developers – a code search tool embedded into IntelliJ IDEA.

Polaris can help you write plugins more effectively by suggesting code snippets that match the codebases of the IntelliJ Platform and some open-source plugins for IntelliJ-based IDEs. In addition, it helps developers be more productive by offering code completion with relevant parameters that other coders have used in similar situations.

As a result, you no longer need to manually search through source code implementations or remember minute details about your code. Simply search directly within your IDE, use the code snippets or function parameters that Polaris suggests, and follow the best coding practices.

Check out the Polaris web page to learn more about its features.

What’s next?

The plugin functionality is currently limited to working with the IntelliJ Platform codebase. After we collect the initial feedback, we will enhance its functionality for broader usage. For example, we are looking into ways to deliver the same code search experience on-premises for enterprise companies with huge codebases.

In the meantime, we invite plugin developers and anyone interested to try Polaris and share their feedback. You can also get an idea of how Polaris works in your browser by viewing the code snippets generated for specific functions:

Try Polaris Live

More details on how to get started with Polaris are available in the documentation. You can report issues and leave feature requests in the Polaris issue tracker.

We can’t wait to see the innovative plugins you create with Polaris!

]]>
Vendor Obligation to Provide Source Code for OSS Software https://blog.jetbrains.com/platform/2023/04/vendor-obligation-to-provide-source-code-for-oss-software/ Thu, 20 Apr 2023 14:39:52 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/04/mp-news-blog-featured-image-1280x600-1.png https://blog.jetbrains.com/?post_type=platform&p=344059 If you are distributing your plugin as open-source software on JetBrains Marketplace, it is your obligation to provide a valid source code link.

Why is providing the source code important?

TL;DR: Providing access to the source code is a legal requirement.

One of the defining characteristics of open-source software is that its source code is made freely available to users. It is also in your best interest to take care of this. A license agreement protects your intellectual property and establishes the rights of all parties involved with the software, including the author, end users, and other developers.

Providing a license is mandatory to publish a plugin on JetBrains Marketplace. Please refer to the JetBrains Plugin Marketplace Developer Agreement (10. Licensing to Customers). Therefore, plugins under an OSS license without a valid link to the source code may be removed from JetBrains Marketplace.

What should I do to comply?

To help you comply with this requirement, we have made it mandatory to fill in the Source Code field when uploading a plugin licensed under an open-source agreement. You will never miss it by accident.


Please also make sure that your current JetBrains Marketplace plugins distributed as OSS software have a valid source code link provided. To do so, please check the General Information section of the plugin admin panel.

Plugin page admin settings

If you’re unsure which OSS license to choose for your plugin, we’ve prepared a short guide specifically for plugin developers to help navigate through the different types of open-source licenses.

Thank you for adhering to the compliance requirements!

The JetBrains Marketplace team

]]>
Open-Source Software (OSS) Licenses Explained https://blog.jetbrains.com/platform/2023/04/open-source-software-oss-licenses-explained/ Mon, 10 Apr 2023 09:36:33 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/04/Blog_Featured_image_1280x600-1.png https://blog.jetbrains.com/?post_type=platform&p=341342 On JetBrains Marketplace, most plugins are distributed as OSS software. Choosing an appropriate open-source license can be daunting, especially for individual plugin developers who don’t have a team of lawyers. There’s a variety of licenses with different conditions and implications. To help you get a handle on open-source licensing, we’ve prepared a short introduction that may help plugin authors and all other OSS software developers choose the right license for their tools.

What is an open-source license?

Open-source licenses are non-proprietary licenses that provide certain freedoms, such as free distribution and modification of the software. The open-source software must be distributed with the source code or the ability to obtain the source code for free.

What are the different types of open-source licenses?

There are more than 100 approved open-source licenses, and it is difficult to know all of their requirements. However, all OSS licenses can be divided into 2 groups: permissive and copyleft (or restrictive) licenses. Let’s learn more about their differences:

Permissive licenses

Permissive licenses allow the use of software with certain limited conditions. For example, the frequently used BSD 2-Clause license allows redistribution and use with or without modification, but with the copyright notice, the original list of license conditions, and certain legal disclaimers.

Similarly, the MIT license only allows you to use the software without restriction if the copyright notice and the original permission notice are included in all copies of the software.

Another widely used license, Apache 2.0, includes additional formal obligations, such as distributing the modified software alongside notices informing users about modifications made to the original software.

Copyleft licenses

Any software created using an open-source component with a copyleft license must also be released as open source. Copyleft licenses can be either strong or weak copyleft licenses.

Strong copyleft licenses (such as GPL or AGPL) are designed to ensure that any software derived from the original copyleft-licensed code remains open source and freely available to the community. For example, if you use software under a GPL license in your product and want to distribute it, the whole final product must also be distributed freely under a GPL license together with the source code. Naturally, this “viral effect” has some negative implications for monetizing commercial software products.

Weak copyleft licenses have similar conditions but allow for certain exceptions. For example, you can link your software to libraries licensed under the LGPL and redistribute it without the requirement to be licensed under the same terms.

Which open-source license should I use?

Which license to choose should be your own decision, as it establishes the rights of all parties involved with your software and affects how others can use and distribute your code. The decision should depend on the type of software you’re releasing and the intended use cases. You should also consider compatibility with other licenses if you plan to integrate it with other open-source software. For example, the GPL copyleft license is not compatible with some permissive licenses like the MIT or Apache license, if the final product is intended to be licensed under these permissive licenses.

This helper created by GitHub is a great starting point to understand how to license your code. If possible, you can also seek guidance from a qualified individual or someone who has experience with licensing.

Сan I use open-source software for commercial purposes?

Yes, you can. Open-source software licenses generally allow the software to be used for any purpose. However, the specific terms of the license can vary. As mentioned above, strong copyleft licenses can impact how the software can be used in a commercial context. It’s always important to read the license carefully to understand its specific terms and conditions.

Tips for plugin developers distributing plugins under OSS licenses:

  1. If you upload a plugin to JetBrains Marketplace under an open-source license, you must provide the source code. OSS plugins without a valid link to the source code may lead to your plugin being removed from JetBrains Marketplace.
  1. Take time to read the license agreement you choose. Knowing all conditions from the applicable license is the first step in avoiding future problems.
  1. Keep track of all third-party software components under open-source licenses and the applicable license terms, like if the software must contain specific notices or needs to be distributed with a copy of the license.
  1. A tip for those whose plugins rely on third-party OSS code would be to use a Qodana license audit that can help identify whether you can combine software components under different open-source licenses in a plugin without conflicting license terms. For more information on how Qodana can help, check out this article.
  1. If you feel that someone is violating your license agreement, report it to the Marketplace team via marketplace@jetbrains.com.
]]>
An Interview With Mohammed Baig, NextSketch2 Plugin Author https://blog.jetbrains.com/platform/2023/03/an-interview-with-mohammed-baig-nextsketch2-plugin-author/ Mon, 20 Mar 2023 18:54:15 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/03/mohammed.png https://blog.jetbrains.com/?post_type=platform&p=334129 Today, we are speaking with Mohammed Baig, developer of the NextSketch2 plugin, a visual diagramming tool integrated with JetBrains IDEs.

Let’s get to know Mohammed!

Can you tell us a bit about yourself? How did you get into programming, and what are you working on now?

I first got started with programming after reading an old copy of “Head First Java” that my dad stored far away on his shelves. It took some time to learn the language and start building lots of weird, throw-away projects before I started working on real ones. But my first exposure to programming was for a Robotics competition to program Lego Robots using LabVIEW, a kind of graphical programming environment.

Today I work in an outsourcing company, and my job is to build tools that we use in-house. In my daily work, I use Java and C/C++. I spend countless hours inside IntelliJ IDEA when I’m working on these tools, and I sometimes use Visual Studio or Visual Studio code when working on C/C++ stuff.

How did you come up with an idea for your plugin?

To start working on a project, you need to design how the system will work first. I used to use a pen and paper for this, but as you can imagine, that quickly got out of hand – the drawings would either be lost, hard to share with others, or just downright messy. So I decided to try my hand at the IntelliJ Plugin SDK and see if I could throw together a working prototype. Now we use the plugin for designing new projects in my company. It helps to brainstorm the architecture of the project before we start writing the code.

How has your plugin evolved with time? What are the plans for its future development?

NextSketch2 actually started out as NextSketch – an entirely separate plugin. NextSketch was really basic in terms of features (creating diagrams out of basic boxes and lines). We found that the architecture we used was pretty much impossible to extend. So we did what every programmer loves to do – rewrote the plugin entirely. In every new release, we focus on building features that really help you along. For example, we’ve recently added sub-diagrams to NextSketch2 to help you create multiple layers of depth in your sketches.

In the future, we’re exploring the ability to make NextSketch2 entirely collaborative (but no promises).

Was it hard to start building on top of the IntelliJ Platform?

It actually wasn’t. I loved the documentation and how easy it was to get started with a plugin template. I think that some parts of the API and the hot-reload system could be improved. The productivity gains would be huge if we could just reload on the spot instead of waiting for a full restart of the IDE.

Speaking of your experience with the JetBrains Marketplace ecosystem, how did you like it?

The Marketplace ecosystem has been super easy to use for me. There are lots of benefits, like being part of a community of developers, learning to work with someone else’s code, and sharing your projects with a much wider audience. The Slack* is full of random fellow developers helping out each other and just building cool stuff. They’ve been super supportive and really encouraging.

Editor’s note:
To join the JetBrains Platform Slack, please request an invite here.

What can you advise people who are new to IntelliJ Platform plugin development?

Take time to understand how the IDE works. Read the IntelliJ IntelliJ Platform SDK docs –  it has been super helpful for getting us up to speed. I also recommend checking out Joachim Ansorg’s articles on plugin development. I actually started there when I wanted to integrate error reporting via Sentry into NextSketch2. And finally, just grab the IntelliJ Platform Plugin Template and start building!

Mohammed Baig

Mohammed is a developer at Shayan Technologies Corporation, a small company providing IT services to customers all over the world. He loves using Java to build developer tools that make him and others more productive. When Mohammed is not coding, he’s learning more about our universe through his Celestron telescope.

]]>
Busy Plugin Developers Newsletter – Winter 2023 https://blog.jetbrains.com/platform/2023/03/busy-plugin-developers-newsletter-winter-2023/ Thu, 02 Mar 2023 19:53:10 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/03/Blog_cover_BPD.png https://blog.jetbrains.com/?post_type=platform&p=328722 Marketplace updates:

Improved visibility for plugin resources 

On your plugin page, you can add links to your website, issue tracker, documentation, and any other relevant resources. These links used to be displayed in the Additional Information section at the bottom of a plugin page, but now you can see them right after the plugin description. Also, starting with the 2022.3 versions of IntelliJ-based IDEs, users can view these links in the Plugin Manager within their IDEs.

⭐️ Reporting inappropriate plugins

If you come across a plugin that has some inappropriate content, unsolicited marketing, or malicious behavior, please report it directly to the Marketplace team. You can learn more about how to do that in the documentation.

Report Issue button on the Reviews tab

Have you ever had a user report a bug right in the plugin reviews? In order to reduce the frequency of this, we now provide a more prominent way for users to contact authors. The Report Issue button alerts you to problems via email or issue tracker. Please make sure to provide the URL for your bug tracker in the settings on the plugin’s admin panel. 

Plugin development tooling updates

Gradle IntelliJ Plugin 1.13.0

Check out the newest version of the Gradle IntelliJ Plugin. This plugin simplifies the process of building IntelliJ Platform plugins using the IntelliJ SDK.

IntelliJ Platform Plugin Template 1.4.0

Our GitHub template repository for creating new plugin projects has been updated to version 1.4.0. Check out the changelog for details.

Grammar-Kit 2022.3.1 and JFlex 1.9.0

The Grammar-Kit plugin and its Gradle integration have both been updated to version 2022.3.1. In addition, for custom-language developer tools, our JFlex fork has been updated to version 1.9.0.

Useful resources:

⭐️ Ratings and Reviews Policy

Did you know that the Marketplace team can remove reviews that go against our policy? Find out how to report inappropriate reviews and learn about the standards we apply.

⭐️ How to add documentation to your plugin listing

JetBrains is working on its own solution for writing documentation – Writerside. You can use the version available through the Early Access Program to write and publish documentation for your plugin right inside your favorite JetBrains IDE. Do you want to make your plugin page look similar to Grazie Professional’s? Find out how in this blog post.

IntelliJ SDK documentation updates

We have added an article about Inspection Options, reworked the Code Inspections page, and described the process of Mapping New UI Icons, which is required as of the IDEs’ 2022.3 release cycle. Also, the Verifying Plugin Compatibility article has been augmented with information about tooling in the IDEs to ensure compatibility.

Community highlights:

We recently celebrated our second Plugin Developers Day at JetBrains! This year, we held a raffle on Twitter, asking you to guess the most downloaded third-party plugins of 2022. Check out the #PluginDevDay23 hashtag for the results and read this blog post to learn about the plugins that made the list. 

Thanks for reading! 

Your JetBrains Marketplace team

]]>
Publish Documentation for Your Plugin – With Writerside https://blog.jetbrains.com/platform/2023/03/publish-documentation-for-your-plugin-with-writerside/ Wed, 01 Mar 2023 09:39:54 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/02/mp-news-blog-featured-image-1280x600-1-2.png https://blog.jetbrains.com/?post_type=platform&p=327945


The more we work on a tool, the more intuitive and easy to use it seems. This is why documentation is sometimes postponed to the last minute, or even scrapped completely. Customers are left to figure out for themselves what the tool can do.

However, documentation benefits even a small team, especially at an early stage of a product’s development.

  • Documentation helps to flatten the learning curve. Fewer users will drop off because they fail to find a feature. 
  • It takes the burden off support, which is a big advantage for a small team.
  • Online documentation improves content marketing and SEO
  • Documentation is a sign of consideration and appreciation of the user. It also indicates a sense of reliability that helps build trust in the product.

Plugin developers can publish documentation directly to the JetBrains Marketplace. That documentation is not limited to a single page with regular text – you can also publish structured guides, complete with navigation and search.

Check out these examples:

How do you create such documentation for your plugin?

First of all, it’s important to define the minimum scope of your documentation.

Your users probably don’t need a full reference or UI guide, especially if you follow the IntelliJ Platform UX and UI guidelines.

They need to understand basic scenarios and how exactly your plugin makes their lives better.

What your users need is a jump-start:

  • Overview or introduction: Briefly cover the plugin’s core features and benefits.
  • Quick start: Step-by-step instructions on how to install and configure the plugin, its dependencies, or its prerequisites. Describe a simple scenario that demonstrates how to use the plugin. 
  • Known issues or troubleshooting: Include a detailed list of all known issues and their solutions, best practices, and workarounds. Don’t forget to tell users how to collect debug information if something goes wrong.

Now, how do you start writing? And how will you publish what you’ve written?

Well, we have a tool for that.

JetBrains is working on its own solution for writing documentation – Writerside. You can use its Early Access Program version to write and publish documentation for your plugin, right inside your favorite JetBrains IDE.

Would you like to try it out?

1) Download the Writerside plugin on JetBrains Marketplace.

2) Create a documentation project or module in your dev project.

3) Select a template for one of the 4 main documentation types: How-to, Reference, Overview, or Tutorial. We provide the structure, and you fill it in with content.

4) Write in Markdown, inject XML elements, such as tabs, complex tables, collapsible elements, and more.

5) Publish on JetBrains Marketplace with the help of the Writerside team. The publishing process itself is not automated yet, so you’ll currently need to build your docs locally and send us the .zip archive. Here are detailed instructions on how to do that. We’ll take care of the CI/CD configurations and actual publishing.

6) Join our Slack channel for support, news, and updates. Although we assume you’ve read and agreed to it before joining, please don’t forget to review our Code of Conduct

See you on the writer’s side! 🤓

]]>
Top 10 Plugins for IntelliJ-Based IDEs https://blog.jetbrains.com/platform/2023/02/top-10-plugins-for-intellij-based-ides/ Mon, 13 Feb 2023 11:51:45 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/02/mp-news-blog-featured-image-1280x600-1.png https://blog.jetbrains.com/?post_type=platform&p=322321 JetBrains IntelliJ-based IDEs are powerful, feature-rich developer tools with countless  extensibility options. Any user can add features to the IDEs by installing plugins from JetBrains Marketplace, where you can find extensions that cover most aspects of your work. The range of available plugins includes integrations with code review services, CI/CD, static analysis, productivity tools, various frameworks and languages, as well as UI themes, custom progress bars, and language packs.

According to The State of Developer Ecosystem 2022, tool integrations are among the most popular types of plugins. With that in mind, let’s take a look at the previous year’s most downloaded and highest-rated plugins on JetBrains Marketplace.

Chinese ​(Simplified)​ Language Pack

This JetBrains plugin localizes the UI of JetBrains IDEs, such as IntelliJ IDEA, WebStorm, PyCharm, and others, including their bundled plugins. In 2022, it got more than 3 million downloads, while other language packs on JetBrains Marketplace, such as those for Japanese and Korean, appeared less popular. 

Rainbow Brackets

This is a plugin that has been on JetBrains Marketplace since 2017 and has proved to be a great productivity tool. It colors the matching brackets in your code, making it easier to understand nested parentheses.

Since the IntelliJ Platform version 2022.3, it has become freemium, having introduced some paid features. All the features of previous versions are still free.

One Dark Theme

According to The State of Developer Ecosystem 2022, 55% of users install themes and different user interface add-ons to their IDEs. This theme may be worth your attention, as it has been downloaded more than 4.7 million times and boasts an average rating of 4.8 out of 5.  You can install it or other themes from JetBrains Marketplace here.

JPA Buddy

This plugin helps you work with JPA and related technologies inside IntelliJ IDEA. While it has a freemium model, the free version includes most of the features. A rating of 4.9 implies that JPA Buddy really simplifies the lives of Java and Kotlin developers.

.​env files support

With a rating of 4.7, this plugin helps not only set environment variables to run/debug configurations from .env files, but also adds syntax highlighting.

Translation

Integrating many translation engines, such as Google Translate and Microsoft Translate, this plugin allows you to translate any text in code, such as code comments and code documents. The UI of the plugin is available in English, Chinese, Korean, and Japanese.

Atom Material Icons

This plugin helps make your favorite JetBrains IDE toolbars more colorful and visible by replacing the default icons with the Atom file icons

IdeaVim

This JetBrains plugin brings Vim editor features right into your JetBrains IDE. According to a StackOverflow survey, Vim is still one of the most loved editors. So it’s no surprise that this plugin has almost 12 million downloads since its creation. Check out this blog post for a detailed instruction on how to use IdeaVim.

Showing basic Vim visual mode commands

Scala

Did you know that 82% of Scala developers use IntelliJ IDEA? It’s therefore unsurprising that the Scala plugin is on the list of top-downloaded plugins. Moreover, you can use your Scala IDE for free with IntelliJ IDEA Community Edition. Note that Play Framework and Scala.js are only available in IntelliJ IDEA Ultimate. Check out this plugin blog for updates.

GitToolBox

A great productivity and collaboration tool that expands built-in Git integration, GitToolBox has recently become freemium. An example of a paid feature is the ability to add inline blame annotations directly to IntelliJ-based IDEs. It shows the author, date and time, and the commit subject for the current line, as well as clickable issue links.

We are interested to know what plugins you love. Please share your thoughts and experiences in the comments below.

]]>
https://blog.jetbrains.com/zh-hans/platform/2023/02/top-10-plugins-for-intellij-based-ides/ https://blog.jetbrains.com/pt-br/platform/2023/02/top-10-plugins-for-intellij-based-ides/ https://blog.jetbrains.com/ko/platform/2023/02/top-10-plugins-for-intellij-based-ides/ https://blog.jetbrains.com/fr/platform/2023/02/top-10-plugins-for-intellij-based-ides/ https://blog.jetbrains.com/es/platform/2023/02/top-10-plugins-for-intellij-based-ides/
Busy Plugin Developers Newsletter – Fall 2022 https://blog.jetbrains.com/platform/2022/12/busy-plugin-developers-newsletter-fall-2022/ Wed, 07 Dec 2022 13:42:48 +0000 https://blog.jetbrains.com/wp-content/uploads/2022/12/bpd-featured.png https://blog.jetbrains.com/?post_type=platform&p=303170 Community highlights:

⭐️ Winners of the Space Apps Contest

JetBrains Space recently held an open application development contest, attracting more than 500 participants. 14 of the 35 apps submitted made it to the final round. Check out the winners.

New guest posts:

Interview with Sven Reinck, the author of the XSD / WSDL Visualizer plugin.
Post by Issam Guissouma, the developer of the Nx Console Idea plugin.

⭐️ Integration with 1Password, developed by a community member

Check out this plugin that allows developers to use 1Password vaults in IntelliJ-based IDEs. Kudos to Soner Sayakci, an IntelliJ Platform contributor, for developing it! Learn more about it on the 1Password blog.

IntelliJ Platform’s Slack exceeds 4,000 users

We are happy to see our Slack community hit yet another milestone. Haven’t joined it yet? Get an invitation.

Marketplace updates:

⭐️ Improvements to the IDE Plugin Manager

The interface of the IDE Plugin Manager now displays plugin screenshots and new sections, such as Additional Information and Getting Started. Starting with the 2022.3 versions of IntelliJ-based IDEs, users can also read plugin reviews without leaving their IDEs. These changes should help users make more informed choices when browsing the plugins.

⭐️ Donations feature on the Marketplace

In order to encourage users to support the authors of their favorite plugins, we’ve made it possible for plugin vendors to provide donation links. To add a link, go to the Monetization tab of your plugin page and follow the instructions there. The option to donate will be displayed on your plugin page next to the Download button. You can learn more about this feature in the Marketplace documentation.

⭐️ Adding a privacy policy to your plugin page

If your plugin handles personal information, you should make sure a privacy policy is easily accessible on your plugin page. You can now add a link to your privacy policy in the admin panel under General Information. This information will be available to users inside the IDE Plugin Manager (starting from the 2022.3 versions of IntelliJ-based IDEs) and on the plugin’s page on JetBrains Marketplace.

Note that if you are using personal data for marketing or research purposes, posting a privacy policy is not sufficient. You must also obtain the users’ consent in the plugin interface.

Plugin development tooling updates:

⭐️ Gradle IntelliJ Plugin 1.10.0

The latest update for the Gradle IntelliJ Plugin – the preferred solution for creating plugins for IntelliJ-based IDEs – provides support for the 2022.3 IDE versions. Check out what’s new and update your project by bumping org.jetbrains.intellij to “1.10.0”.

⭐️ IntelliJ Platform Plugin Template 1.3.0

This repository simplifies the process of plugin development by providing a pure boilerplate template for creating new Gradle-based plugin projects. This update provides dependency updates and improves the overall quality of the code. See the changelog for the full list of updates.

⭐️ Gradle Changelog Plugin 2.0.0

This plugin helps you manage release notes by providing tasks and helper methods to simplify working with a changelog. Take a look at the full changelog for this major update.

⭐️ Grammar-Kit 2022.3 and Gradle Grammar-Kit Plugin 2022.3 

Grammar-Kit is designed to help you build custom language plugins. Note that Java 17 is now required for you to use the Grammar-Kit library within your project. Check out the what’s new page for more information.

Useful resources:

⭐️ Check your plugin’s 2022.3 compatibility

With the 2022.3 versions of our IntelliJ-based IDEs now available, you should make sure to check whether your plugin is compatible with them by using the built-in Plugin Verifier. Please review the Incompatible Changes in IntelliJ Platform and Plugins API page for information about known breaking changes.

Busy Plugin Developers webinar: Building extensions for Rider and ReSharper

Check out the recording:

Hotkeys for plugin developers

Here you can find some hotkeys for navigating and managing your plugin’s page on JetBrains Marketplace.

⭐️ New articles in the IntelliJ Platform SDK documentation:

  • Plugin User Experience (UX) – This page presents a collection of tips for improving your plugin’s UX so users can appreciate its quality. 
  • Spell Checking section with an accompanying tutorial – These resources guide you through the process of implementing spell checking for a custom language.
  • Themes – Custom IDE themes let you manage the appearance of built-in UI elements. Read our guide to get started with developing your own theme.

Thanks for reading! Stay tuned, and be sure to follow us on Twitter.

Your JetBrains Marketplace team

]]>