Skip to content

jetbrains: rename pycharm-professional to pycharm, prepare community deprecation#412971

Closed
theCapypara wants to merge 4 commits intoNixOS:masterfrom
theCapypara:jetbrains-rename-pycharm
Closed

jetbrains: rename pycharm-professional to pycharm, prepare community deprecation#412971
theCapypara wants to merge 4 commits intoNixOS:masterfrom
theCapypara:jetbrains-rename-pycharm

Conversation

@theCapypara
Copy link
Member

@theCapypara theCapypara commented Jun 1, 2025

This renames pycharm-professional to pycharm-bin, introduces pycharm as an alias for pycharm-bin and deprecates pycharm-community{+ -bin & -src} in preperation to replace them with pycharm-bin and pycharm-src.

In order for the last thing to happen, Jetbrains needs to provide instructions on how to actually build PyCharm (NOT the deprecated PyCharm Community) from source. I have reached out to them for that.
It is also possible that Jetbrains doesn't actually plan to release PyCharm as open source but just keep providing PyCharm Community from source. That would be pretty confusing though, and I'm not sure if they'll then still make new releases? I asked them about this as well. In any case it seems that pycharm-bin wouldn't be the same as pycharm-src even if they did release PyCharm as OSS, since pycharm-bin now contains propreitary code. So we would need to later keep pycharm-bin marked as unfree and pycharm-src as OSS.

I added a bunch of TODO items for things to do once we can make the switch for pycharm-community -> pycharm.

This also fixes the issue of plugins no longer being detected and built for PyCharm Community (#412715).

IMO this should be backported to 25.05 even if it introduces warnings for existing packages, since Jetbrains has stopped developing PyCharm Community and will only provide one more release.

But also changes like this are new for me, so let me know if I screwed anything up :)

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Nixpkgs 25.11 Release Notes (or backporting 24.11 and 25.05 Nixpkgs Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
  • NixOS 25.11 Release Notes (or backporting 24.11 and 25.05 NixOS Release notes)
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@nix-owners nix-owners bot requested review from edwtjo and leona-ya June 1, 2025 16:08
@theCapypara
Copy link
Member Author

theCapypara commented Jun 1, 2025

Hm, adding the warnings makes the evaluation fail, so I'm guessing that warnings are not allowed for normal packages. In that case should we just not warn about this and only "break" things once we remove PyCharm Community? I thought a bit of a heads up for users would be nice, but please let me know of better ways to do this.

One idea I have is that we could replace pycharm-community* with deprecated-pycharm-community* or something and then add deprecated aliases for pycharm-community* but that seems silly to me.

@theCapypara
Copy link
Member Author

@GenericNerdyUsername @tymscar added your review request since you are maintainers. For some reasons it seems that the GitHub Actions do not properly detect this (but maybe this is expected and they just work via CODEOWNERS, I don't actually remember :) )

fromSource = true;
};
# TODO: Replace with alias (see bottom) once pycharm-src is available.
pycharm-community-bin =
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would pass CI if you only define these if config.allowAliases is true.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I see the commented out block below. Don't think there is a way to have a soft warning, unfortunately.

@nixpkgs-ci nixpkgs-ci bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Jun 25, 2025
pname = "pycharm-community";
});

# TODO: Replace with alias (see bottom) once pycharm-src is available.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this TODO comment implying there is no way for a user to "resolve" the warning on their end? (At least, without switching to the -bin package)

If so, I would hold off on adding the warning until we can add an alias, then use the alias itself as the trigger for the warning.

Unless it is possible that pycharm-src will never be available, in which case I'd move the entire package into the allowAliases set, and consider it "deprecated".

Note: that allowAliases is used for deprecated, renamed, and removed packages; not just actual aliases.

@theCapypara
Copy link
Member Author

I have not gotten a response from Jetbrains yet, internal issue is IJPL-190285. I will update this PR once I get a reply or something is clarified publicly.

@theCapypara
Copy link
Member Author

I still haven't go a response, but they have changed their wording in the FAQ:

We're fully committed to open-source. We’ll keep the open-source parts of the PyCharm codebase on GitHub up to date and open for everyone, and update them regularly. To make it easier for the community, we will provide GitHub Actions so anyone can build their own version from the source code. These builds will include only the open-source parts, just like the original PyCharm Community Edition.

I read this as there being no longer a PyCharm Community Edition directly, but "just" the ability to build what was previously included in PyCharm Community Edition yourself. I'm still not sure if the Python plugin that is the base for this is the same across PyCharm and the OSS code, but I think so.

My suggestion would be to still proceed as suggested in the PR description. pycharm-bin would provide "PyCharm", which can either be used for free or with a license and then offers different functionality (like RustRover) and pycharm-src which provides ONLY the functionality of the former PyCharm Community, but is built from source. pycharm would then always alias to pycharm-bin.

Does that sound good? Then I would fixup this PR.

@theCapypara
Copy link
Member Author

theCapypara commented Nov 28, 2025

I learned today that this also affects IDEA. There is only one product now, with OSS still buildable but just as with PyCharm I'm not sure what that entirely means. From the graphic below it seems like the OSS versions are something different than what community was.

https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/

https://blog.jetbrains.com/wp-content/uploads/2025/10/AD_4nXcxDXSX1AFFsk_FYAyjS1E1pTsC112LutXZzgLZx4fGw-pm_OwZeeTBReOvxWIqcAbRdN6CvQywz8xQxJ2KmwG1Url7GzSXSOnUta5wEssY56eXFi2MY2yPe9370dYvQ5vXIjqvyg.png

With that it might make more sense to name them pycharm and pycharm-oss etc.?

Does anybody know more or has thoughts about my proposal above?

@leona-ya @thiagokokada @jamesward

We also really should remove the discontinued IDEs.

I suggest we move forward to have things switched over for 26.05. We could also do this for 25.11 even if that releases next week, since otherwise I could see this as hard to maintain next cycle if we support unstable with the changes and 25.11 without...

@MattSturgeon
Copy link
Contributor

With that it might make more sense to name then pycharm and pycharm-oss etc.?

SGTM.

My preference would be to make -community an alias for -oss (with a warnOnInstantiate). The warning should mention that oss is not the exact same thing as a "community edition", because JetBrains have re-structured the upstream projects.

Otherwise, if you don't want to do an alias, making the old names throw would also be acceptable, so long as they mention the new -oss replacement.

Either way, an alias that warns or an attr that throws should only be defined when config.allowAliases = true. The easiest way to do that is moving the attrs to pkgs/top-level/aliases.nix, however you can also check config.allowAliases manually elsewhere in-tree if preferred.


An alternative naming scheme would be to have package and package-unfree. This matches what many other packages do in nixpkgs.

That'd be a bit harder to implement renames/warnings for, since the existing (e.g.) pycharm attr would transition from being unfree to free, while the existing unfree package would be moved to pycharm-unfree.

@theCapypara
Copy link
Member Author

Opened a new PR: #466331

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.status: merge conflict This PR has merge conflicts with the target branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants