Some time ago I published a
post in which I raised the topic of the low quality level of my favorite tool - PyCharm, and asked: what to do? This problem seems to me to be completely discouraging: the 21st century is in the yard, and the only professional IDE available to me develops according to the principle “better is more, but worse.” There are about a dozen bugs, the correction of which I personally have been waiting for years, not to mention the problems that I was too lazy to report. The number of bugs grows every year at a constant rate, and as an excuse, I hear a story about the dependence of the number of bugs on the number of users. There are no alternatives, but to cut your IDE is almost unreal. So what to do?
Among the stream of emotional comments, I was particularly interested in one - unnoticed by anyone, in which the user
VISTALL modestly
told how he solved this problem for himself. He made his IDEA fork for .NET and C # -
Consulo IDE . For me personally, such a statement was a complete surprise. Sorry if someone does not share my surprise, but for me it is completely incomprehensible just like the ever-present eternal bugs in PyCharm. After all, IDE is developing large development teams, and he decided to make his fork, even a
fork , but
his own , which needs to be maintained and developed by himself ...
How ??? I decided to ask this question personally to the author of the fork,
Valery Semenchuk , and at the same time many other questions. Word for word, it turned out a small interview, I hope, interesting not only to me ...
- Valery, have you been acquainted with IDEA for a long time?')
- Honestly, I already forgot when I met IDEA (like IDEA 7, but not a fact). I started writing plugins with IDEA 8. After the appearance of IDEA Community Edition, a new thread in history began. Slowly, I began to study the platform, which later resulted in pull requests and dialogs on the tracker (and not only there). But there were unpleasant stories. For example, the plugin for Play 1: after some regular editing by the platform, the plugin became unstable (toolwindow did not close, but turned into a light green rectangle). There was no fix, the plugin itself was closed (its code). And instead of waiting for the fix, I simply wrote a plugin from scratch, because it was boiling. And from that time I will write my plugin (or fix) faster than I will wait for corrections.
- How many plugins have you written at the moment? Can you list the most interesting?- Play, Lombok, and several nameless plug-ins were written to IDEA. I also tried to restore the C ++ plugin to IDEA, but I was disappointed that the analysis was written in C ++ (and was not discovered by the authors). Later, almost all of my plugins grew into plugins to my IDEA fork. I also wrote more than 10 new plugins. The most interesting are, of course, support for .NET and C #.
- How did it happen that you decided to fork IDEA?- My first public fork IDEA was to support the
Lombok framework . The first problem was that IDEA has its analysis of java files, and it was not possible to expand the analysis without changing the Java implementation itself. The second problem is that Java is nailed into IDEA: you cannot simply replace the Java implementation with the patched version. There were many controversial issues in my solution to the problem - in the end, the fork did not go farther.
- And there were also non-public?- Yes. I was playing with a Java compiler (javac) and my support for the features I created in IDEA. Since then, I have almost always sat on my IDEA builds.
- I understand that you did not stop at this?- Yes. As an author of plug-ins, I saw problems, and tried to fix them through patches or through pull-requests. The part was accepted, and the part is still in limbo.
- Apparently, these were architectural fixes? I can imagine how difficult it is to get such patches. After all, the project has its own architects with their own opinion, the project has its own plans, and your patches may be at least questionable for them, if not incompatible with their point of view.- Most of my patches were small and did not touch global things. As for big changes, I raised several tasks in the tracker and on the forum. Of the most global ones, I wanted to align the Java implementation with other plugins. The bottom line is that IntelliJ IDEA is positioned mainly as a development environment for Java, as a result, part of the interface is nailed to Java features.
This can be seen, for example, when you open a Project Structure in a Node.js project, or in the same Node.js project you see menu items for Java.
- How did it bother you?- A trivial question - why should a user download the entire Java development stack in order to work with C #, for example.
- Didn’t they offer Rider for C # at that time?- Not. At the moment, Rider is a hybrid of Resharper and IntelliJ. I cannot call it a full-fledged IDE based on IntelliJ, because the whole analysis (and not only) lies on the shoulders of Resharper, which runs in parallel with Rider. He is responsible for all the features that relate to the .NET platform.
- What is he like your fork?- The main idea is to make a universal IDE similar to IDEA, but Java will be a plugin, and not part of the platform.
I also wanted to correct (if possible) the bugs I found. Closeness of almost all plug-ins created a feeling of a “slave” situation. Fixed a bug - and wait. Even if the bug is fixed, you need to wait for either EAP or release. As a result, it was decided to make a completely open project.
- A whole company works on IntelliJ IDEA, and you - one. Is it really possible to saw your IDE alone, even on a ready-made platform?- In fact, I am not myself. The technical part helps me familiar, as well as with the tests. But plugin development is hard. We have to choose the most important thing from what needs to be done, and not to be sprayed. And the desire to do something new is, for example, the F # language.
I also periodically transfer changes from IDEA to Consul, but not all. A lot of controversial features, or prevents Kotlin, which they are now trying to bring to the platform.
- What is stopping you Kotlin? Is it sewn as tightly as Java?- The problem is different. They begin to write part of the code on Kotlin. From their point of view, this is normal. And as from the side of a fork, having a “new” language in the platform is a “heavy load”. It should be noted that Kotlin is not yet in the Consul.
- Someday they will transfer their IDE to Kotlin completely - what then? How do you think in general, everything goes to this?- In fact - we convert the code. Of course, I don’t redo big piles of anything on Kotlin. Yes - sooner or later it will be so. If we consider that Rider is written in Kotlin, and not only it. When it comes, it will be the new era of the Consul. The era of rebirth or extinction - time will tell :)
- In the past, my post I raised the topic of IDEA buggy. So you say that partly the bugs and the speed of their correction prompted the creation of a fork. What did you encounter while fixing bugs? How many are there? How do you even IDEA code in general?- I inherited almost all IDEA bugs, I also have some of my own. The IDEA code, famous for its “documentation” (sarcasm), is understandable. But there are internal things that are not understood if you do not work in JetBrains.
- I've noticed that in some menus the first underscore is not displayed. Instead, the underlined symbol displays the symbol following the lost underscore. This is in different places: “File -> Open Recent”, “Run -> Prifle”, “Run -> Concurrency Diagram”. Only in the latest version this was fixed in “Open Recent”, but the problem remains in “Run”.- Judging by the problem - this is an extra Mnemonic processing in the menu text. You just need to disable mnemonic processing. Apparently, someone forgot when this code once again rules. I do not understand why such bugs should hang for a long time. A quick search for a problem is such a
commit .
- Honestly, such errors look terribly unprofessional. I wonder how old these bugs are. Did you catch them in Consulo?- Quick dough - a little. In Recent Projects, I do not see the problem. But in Run Configurations, I see this bug. Fix on this bug will take somewhere 10 minutes.
- When I open these menus, I look for a long time to find the right item. I was tormented with “Open Recent” for a very long time - I don’t know how much. The ticket I found was hanging for a year and a half. And you show a commit in which only one parameter is added. And it is not known how much more error hangs in the “Run”. What tickets, according to your observations, in JetBrains close faster? Adding support to imoji? :)- Imoji is a frequently requested feature. And for its implementation, you need to edit the JRE. I am for adding, but not at the expense of others.
- Since you are transferring changes from IDEA, you probably are watching what features are added there. Are there any features that you did not transfer because of their principal uselessness in the IDE?-
Editor Background Image . I do not understand the meaning of this feature at all. For architectural reasons, I did not transfer the implementation of External Compiler (jps inside IDEA). For a controversial implementation that generates duplicates. Perhaps I will return this subsystem if I solve architectural problems. A transparent scroll joins this list. In the editor it looks too awful. Since IDEA 8, I have seen UI shifts for scrolls in the editor, so far they are looking for a middle ground. But testing users without the ability to return to the old UI is bad (I have a problem in 2010 where I complained about the usability of the scroll).
- Do you somehow improve your UI in your Consulo, besides supporting HiDPI?- Yes. As is known, in IDEA there is no possibility of a normal change of the UI Theme (Laf), because many components have “hard-coded” rendering, as well as colors.
- Why is it necessary? Here I sit, I program, and in general I do not understand very well, what difference does it make which topic this IDE has. PyCharm with its native theme initially looked like a stranger on my desktop, but he did the job better than anyone. And now I'm used to? and do not pay attention to the appearance.- Once upon a time, backdated rendering was one of the main problems on the way to the appearance of a dark theme in IDEA. But they did not succeed in making good decisions, as a result, IDEA has two Light / Dark modes. And for each mode there is a set of colors that can not be changed (adequately of course). I want to make a normal decision to give users the opportunity to customize the interface for themselves. There are several IDEA plugins that do this. But still they meet insurmountable obstacles for this - another hardcode.
- Is there a lot of such unpleasant hardcode? I mean, not in topics, but in something else that has to be redone.- Yes, we have to meet the ghost of the past from the time when IDEA had only Java implementation. The platform has checks for java language / java file for example.
- What are you doing when choosing new features? What features do you prefer? What functional development do you consider the most important in Consulo, and which one should be postponed due to lack of resources?- At one time, I postponed all the problems relating to web services. And more was busy supporting C # / Mono / Unity. Four months (September 2016) back I decided to redo the whole web part. I switched to Jenkins, wrote a service for users and a new repository for plug-ins and a platform (in turn, this added the ability to auto-update).
After closing the second Consul’s beta, I want to support .NET Core.
- What is the difference between your approach to the development of the IDE and the one used in JetBrains? In addition, you are guided by a universal platform.- The first difference is that everything that is available to the user can be seen on the github in the form of sources. You can also influence the development itself.
The second is faster releases. Currently, the “release” channel has builds every month (beta is every week, alpha is every day).
I want a more aggressive API change. Also actively support developers of third-party plug-ins. I myself help the developer of the Perl plug-in to IDEA (and not only) - I play the role of a walking encyclopedia on the platform.
This is one of the most basic differences.
- You say "you can influence the development." And no one will say to the user “this is our business,” yes? One person complained that he was answered that way when he offered to change something in IDEA.- Nobody pays me, I won't say that. Yes, there can be controversial requests, but everything is solved. I do not plan to sell any of the components of the Consul.
- Have you tried to calculate at least approximately how much time you have already spent working on Consulo? Does this make sense? Maybe it would be more efficient to spend this time on work for which they pay?- I've been working on the Consul since 2013. The meaning is very simple: Consul is my main development environment. If I meet a bug - I fix it during the day, and not wait for several months (another IDEA release for example).
- How many people now use the Consul on a regular basis? Is it possible to somehow reliably calculate?- Reliably - no. Alas, the statistics service I have written on my knee, and does not give accurate information. And so - up to 2 thousand on the first version, and more than 400 people on the second (which is recently available for download, but has beta status). Since February 2017, the first version is no longer available for download.
- How often do users send pull requests?- Very rarely. Since most of my users are Unity (.NET platform + C #), there are some difficulties in editing Java sources. I also have lame documentation on the whole project (more than 100 repositories, and that only I know in them), I supplement it very slowly. But there are people who do pull-requests to several repositories at the same time (as a common fix for one problem)
- And bugreports and feature requests? How often do they send, and how quickly do you react to them?- Features - rarely, bugs - more often. Now I have achieved good stability of the main functionality, so there are few bugs.
I almost always react the same day. Correcting bugs as the priority of the plugin, but if the fix is ​​simple - then fix it on the same day
- What do you think, for what reason people give preference to Consulo (those who give). You have already listed the main advantages, but I have a feeling that this is your point of view, that is, advantages for you personally. And what do users like?- It's simple. Consul was the only normal C # environment for macOS. Although the number of Windows + Linux users is catching up with macOS. Previously, only one environment was available - it is MonoDevelop (but this is silent horror). Now there are Visual Studio Code and Rider.
“If users keep arriving, they probably find something in Consulo that is not found in other IDEs?” What exactly?- A large part of my audience is Unity developers, there is still no good counterpart to Consul. There is a Rider which is in EAP status, and in the future it will be paid.
- Have you thought about making your paid version with extended functionality? If at all possible with an existing license. Such a move could attract the funds necessary for the development of the project.- It was not, no, and will not. This is my decision in principle about the closed functionality. This is one of the reasons why I moved away from IDEA. And I'm not going to go back to this. I want to make an open project, and the closed functionality will interfere.
- What about donations?- Where without them. I still have reasons that interfere with this. This year I will try to improve, and then finally the long-awaited Donate button will appear.
- How would you like to see the future of the Consul, and how do you think this can really be achieved?- Grow into a full-fledged organization / project for the development of IDE (not only on Desktop). Is it real? Yes - but by the power of one person for a very long time.
Thank you very much, Valery, for agreeing to tell about your experience and for permission to publish this dialogue. I hope this post will help you find new users and like-minded people, and I wish you good luck and a lot of patience.
More IDE - good and different!