CLion Turns 5!

How it all began

This story starts in AppCode. Back in 2011, Max Shafirov, the current JetBrains CEO, announced the first steps toward C++ support in AppCode, our IDE for iOS/macOS development:
AppCode Cpp support

The work started out simply, just dealing with macros when covering Objective-C++ code. But before long it turned into full-featured C++ support, including STL and libc++ understanding, correct parsing for the template specialization, and getting into C++11 and later standards specifics.

This was later followed by an April Fools’ Day announcement, which made us realize there was great demand for a C++ IDE. After that, we did some extensive research to better understand the market. (Luckily, nowadays we have our yearly The State of Developer Ecosystem research bringing significantly more data to us on a regular basis.)

A couple months after the first release of both CLion and ReSharper C++ in April 2015, we published the whole story in this longread in our company blog.

CLion 1.0 banner

This week, we turned 5! And we celebrated yesterday in the best way we could – with the 2020.1 release 😉 When we started CLion, it was a very ambitious idea, and it still is. But we are more confident than ever that we can accomplish the mission!

The team behind the product

Creating a truly helpful tool takes being an integral part of the community, feeling and sharing its needs, pains, and frustrations. We have C++ developers in the team with various backgrounds, as well as some who never did C++ professionally. But we are grateful to the C++ community that helps us fill the gaps. It’s impossible to name here each individual who supports us, as there are so incredibly many of you! But we do want to thank you all!

The CLion team now has 26 members! Including:
18 developers
3 QA engineers
2 support engineers
1 technical writer
1 developer advocate
And me, the product marketing manager.
CLion team

But there are also many other people in JetBrains who contribute to our success. And we are happy to be in such a great company!

Today and Tomorrow

The C++ language is a challenge for any IDE. Over the years, we’ve not only discovered many tricky cases, but we’ve also started talking with the community about the C++ tooling challenges, and hopefully this has helped the C++ Committee notice the issue. We are grateful to the people there who are open to the discussions! We also gladly provide free licenses to the C++ Committee so that we can learn their feedback. They are on the cutting edge of the language, and we are eager to know if we are aligned.

Speaking of free access programs, we see thousands of students using CLion daily to take their first steps in the amazing world of software development. And we are excited to find that CLion is used widely among ICPC teams (our statistics for this come from the 2019 ICPC World Finals, which happens on Linux and where only C++, Java, Kotlin and Python can be used).
ICPC tools

We work on Remote and Embedded development support, and we’ve detected an increase in customers from the automotive industry, especially those creating self-driving experiences. (Our customers and friends from BMW definitely made us smile with their autonomous driving commercial!)

We are certainly thankful to Google for their firm belief in us. With the very first release of CLion, its C++ support was adopted by Android Studio. Our collaboration with the Google team has been, and continues to be, very productive and beneficial to CLion.

We know we have busy and interesting times ahead of us, with lots of critical debts to be addressed, many important fixes to implement, and lots of extra value to add to the product. We also know that you might sometimes feel disappointed with things we’ve missed or haven’t managed to fit into the product. We’d like you to know that these things bother us as well! JetBrains is not about KPIs or management hierarchies. It’s about how we feel about our tools, how we as a team listen to the community needs, and how we cope with your requests. And we know we can do better in many respects. So we’ll try our best to work through critical areas and improve!

Birthday story

Finally, since it’s a birthday celebration, we have a present to share with all of you. A story! Phil Nash is happy to read a book for you. Find a comfortable seat and enjoy these first chapters of CLion’s life:

We always pass all the feedback from various channels to the team’s chat, be it good or bad. So if you want to say something to us, please do so in the comments. Thank you all and stay tuned! 😉

Your CLion team
JetBrains
The Drive to Develop

This entry was posted in Announcement and tagged , , . Bookmark the permalink.

24 Responses to CLion Turns 5!

  1. Taw says:

    Wow, only 3 QA engineers…but I guess the IDEA guys are another team and they have more engineers.
    Happy birthday, I am using CLion for 4 years and just renewed my license. Hope to meet you guys in a future conference.

    • Anastasia Kazakova says:

      There is, of course, a Platform team, including QAs and many other people. So they are also a part of this story!
      Thanks!

      • Taw says:

        I see, there are QAs but some of us (customers) don’t feel that the testing platform is that good at JetBrains. We get a lot of exceptions and mostly, we are struggling with CPP-988 for 4 years and there was little improvement. JetBrains told us that it will invest more on performance but the performance is almost the same, sometimes slower in latest versions! See latest comments on that bug.
        I like this comment: https://youtrack.jetbrains.com/issue/CPP-988#focus=streamItem-27-3787346.0-0

        Maybe you should implement a testing framework (or perhaps you have already) that automates the typing and measures the time that passes between the typing and the characters appearing on the screen.

        You had some bugs in very basic scenarios on multiple platforms, how could they escaped the testing? (examples: IDEA-231685 and IDEA-225882)

        And sometimes I really really feel that the QA are asking us to test some scenarios, instead of them doing it. We are are the customers, we offer the full support when a bug is hard to reproduce, but when is trivial to reproduce, we expect the QA to reproduce it. We are not payed by JetBrains, but the contrary, you know. Maybe I should write my complains in the IDEA blog, because the CLion QA team was more helpful.

        Another example related to IDEA: I did not apreciate at all the comments from IDEA-234989, I had to test the various stuff (I lost an hour researching and do that test, I don’t know anything about java), because he was to lazy to just install the latest XFCE and to reproduce it very very simple. And after doing this…no answer…

        Thanks

        • Anastasia Kazakova says:

          Let me first address the CLion specific question on CPP-988. This is a very general parent ticket, aggregating many performance issues. We work on them constantly and they are indeed our top priority. And there are many different directions of this work: 1) move simply things to Clangd-engine (you can see the progress with every release); 2) fix low-hanging fruits, as many as possible (we also do constantly in every release, while the resources of the team is limited); 3) introduce huge architectural changes, work on some lightweight PSI ideas, etc. This last one is the most time-consuming and often we spend a whole release cycle on smth that finally doesn’t give us a significant speed-up. C++ is tough in that sense. But we still have ideas in the pocket and working hard on them. Your dumps, snapshots and reports are always very helpful, as often they identify the particular setups or cases we’ve missed. It’s hard to create tests for everything, but we update them once we get a case that breaks things from users.

          Now regarding the UI issues and testing. Patching JDK on our side includes dozens of setups and configurations. We do our best to cover them all in testing, but users’ help is much appreciated as it’s really hard to provide testing in every and each environment. And UI/JDK bugs are often catchable on the specific environment only. So when a user with this particular environment comes, we usually try to get as much data from them as possible to speed up the fixing process. So thank you all who help us with that!

          In particular, with IDEA-234989, I’ve asked the team to check and comment on some estimations when possible.

          • Taw says:

            Thank you very much for the detailed explanations, Anastasia.
            I am sure that you are working hard on those issues, but the typing is still slow and I am not the only one saying it, maybe it’s a Java limitation, dunno?

          • Anastasia Kazakova says:

            It’s not Java usually, but a too long parsing for C++. So the proper solution here is a lightweight parsing with many things postponed. We are on the way and I hope can improve typing soon.

  2. tsingson qin says:

    Didn’t write C++ code for about 10 years, got familiar with C++ for two weeks with the help of
    @clion_ide

    , submitted second PR to google/flatbuffers in two weeks ( made flatbuffers better support go ). Thanks
    @clion_ide

  3. Gauthier PLM says:

    I have been a user of your product since the first private EAP during my first semester of study.
    Now, I graduated from my master and worked on many projects since them, with the help of CLion or other JetBrains tools, and I must say, I am happy and proud of your team for all the great features and tools you brought to your product.

    Every version brings many new improvements, and even if I am far from using everything, I’m happy to see many use cases covered.

    Good job guys, thanks for building this great tool! I’m looking forward to see what you’ll build in the next 10 years!

  4. Tesla Zhang says:

    How’s the C++ Parser implemented now? Is it still maintained by the CLion team without using clang? I recall something like the xlang project (and is used in NetBeans, IIRC), is that a thing in CLion?

    • Anastasia Kazakova says:

      There are two language engines now – one is based on Clangd, still with many changes not upstreamed, used for code highlighting, showing errors, local navigation, code compeltion; another one – in Java, written fully by CLion team, is a base for refactorings and other global (per project) smart actions.

      • Taw says:

        That “written in Java” maybe explains a lot of spikes and lags in CLion?

        I wonder how is VStudio so fast in everything? Don’t get me wrong, I don’t like it, I prefer CLion, but it’s blazing fast in everything: typing, refactoring, big macros, big projects…

        • Anastasia Kazakova says:

          Don’t blame Java. Such engines works great for many languages in JetBrains and we indeed have a huge expertise here. But C++ is really a tricky language for any language engine. Clang is also not perfect sometimes.

          As for Visual Studio, do you mean original VS or VSCode? VSCode is indeed very fast, but it’s a smart text editor, it doesn’t do a proper parsing.

          • Roman says:

            Clangd is quite slow too. So far I have best experience with VisualAssist, though it is not very accurate. I think Clangd can be used for refactoring, since its based on real compiler and should be accurate. But for navigation and code completion some simpler parser could be needed…

            Or probably fast C++ IDE is not possible at all… Until headers are replaced with modules everywhere.

          • Anastasia Kazakova says:

            To use Clagnd for refactorings one has to implement project-wide index, which is not the thing compiler actually needs.

          • Roman says:

            >> VSCode is indeed very fast, but it’s a smart text editor, it doesn’t do a proper parsing.

            Can we have a “smart text editor” mode in Clion? And do proper parsing in background?

          • Anastasia Kazakova says:

            Personally, I’m not a fan of how VSCode simply turns down all error highlighting when smth goes wrong with the parsing and switches all navigation to plain text search. But we do consider some similar mode now.

          • Taw says:

            I mean Visual Studio.
            I am not a Java expert, but everything done is Java is terrible slow, faster only by Atom applications (like Slack, having 1-2 seconds delay everytime)

            I am a C developer at origins and a sport motorcycle rider, maybe that’s why I like fast things. 😀

        • Nolange says:

          Do you use vstudio with its “native” projects only? Vstudio really has a very narrow scope, and knows every tool involved.
          If you use some non-trivial cmake it will work rather poorly. (Compared to eclipse atleast)

          The vs intellisense parse is (atleast was) provided by Edison design group BTW.

  5. Taw says:

    A question from my side: how did you guys managed to render Consolas font such beautifuly on Linux? It’s the most beautiful font that I have seen, not even Windows does not render it so nice…I just hope Ubuntu 20.40 will not break it, they have a history of breaking font rendering.

    • Anastasia Kazakova says:

      This question probably goes to our UI team, they are great indeed!) If you see any issues with it later, please submit.

  6. Roman says:

    Must thank you for multi-year resistance to support Makefiles. I see much more projects now migrate to CMake, which is a good thing.

    • Anastasia Kazakova says:

      Makefiles are in development) We hope to have a public prototype this year. A very tricky and informal project model in many aspects.

Leave a Reply

Your email address will not be published. Required fields are marked *