For our March “Community Choice” Project of the Month, the community elected CudaText, a cross-platform text and code editor.
Cudatext offers a syntax highlight for 180+ languages, a lite interface with tabs and JSON config files instead of options-dialog. It also supports Python plugins.
We caught up with the main author of CudaText, Alexey Torgashin as he shared some thoughts about the project’s history, purpose, and direction.
SourceForge (SF): Tell me about the CudaText project please.
Alexey Torgashin (AT): Hello, my name is Alexey Torgashin, living in Russian Federation, I am the main author. This project is a code and text editor inspired by Sublime Text, with some borrowed features. It is open source and is written in Lazarus IDE, so it has an advantage over ST3. Editor has some IDE features (not much, it doesn’t have debuggers) made as plugins.
SF: What made you start this?
AT: When it was 2014 or 2015, we had some big events in Russia (Crimea related) so many people here were excited. I was too, so I wanted to program some new project. I am a fan of Delphi, but with Delphi, the project was hard to fix by others (not free product at 2014), so I switched to Lazarus IDE. Cross-platform was needed too! I liked Sublime Text at that time so I wanted to “improve” it in some ways. But it was impossible. Even if it was open source, it is C++ based, no way for me.
SF: Has the original vision been achieved?
AT: Yes, after about 3 months of work the editor core component was made. It is called ATSynEdit and it is on GitHub. After that I started making CudaText on that core component. After 1-2 years, the editor was usable. It supports all major OSes (it’s funny that it compiles even for Haiku, not yet released OS).
SF: Who can benefit the most from your project?
AT: Users of plain editors (Notepad++, gEdit, Kate) and users of advanced editors (ST3, Atom, Komodo) can benefit from it, and on all major OSes! But again, CudaText lacks IDE features (like in Atom, VS Code) so its main purpose is the text+code editor.
SF: What core need does CudaText fulfill?
AT: Fast editing (program starts 0.3 sec on average PC from 2012) of plain text and program scripts. Scripts in any programming languages, because program is extendable by lexers.
SF: What’s the best way to get the most out of using CudaText?
AT: If you work with plain text the editor itself is enough, but several plugins (like CudaExt) help a lot, for example with paragraph/re-indent commands. If you work with Markdown, few Markdown plugins exist: Markdown Editing and Markdown Preview. If you work with HTML, several HTML related plugins exist: to show tooltips in HTML, to validate HTML for errors etc.
Editor lacks “find/replace in files” feature, but plugin “Find in Files” exists, which has more features than what 99% of users will need. The same with calling external programs – editor lacks the “build system” like Sublime, but the plugin exists, which does it. So the best way is to find major plugins and to install them.
SF: What has your project team done to help build and nurture your community?
AT: We have tried to ask several users to write a review, when users asked for a new feature. We have made a website, and some user had redesigned it in 2019 for free. We help users to create “lexers” (syntax parsers) for more languages, and help with writing plugins too. And FreePascal Wiki is used to show documentation.
SF: Have you found that more frequent releases helps build up your community of users?
AT: It seems that more frequent releases- one update per 1-3 weeks- are good. I get fast feedback on new features and users get fast fixes in the next release. We don’t have big community, but anyway it’s good.
SF: What was the first big thing that happened for your project?
AT: Big thing has not happened yet, but the project has been improving in recent years, with new features added and more users coming in.
SF: How has SourceForge and its tools helped your project reach that success?
AT: SourceForge has a great binary release system. I like it more than GitHub’s release system (it appeared much later) because SF gives a constant URL to every file, even if I update the zip. CudaText has “repository list” on GitHub, but zipped add-ons are hosted on SF. SF also helped to publish beta versions. I have moved main package to 3rd party site, just because they give me donations.
SF: What is the next big thing for CudaText?
AT: A mate of mine, young programmer Artem Gavrilov from Saint Petersburg, has suggested that editor rendering should be in OpenGL, and he has good experience in 3D graphics and Pascal. I am thinking now how this can be done, it’s a lot of coding even with ready OpenGL libraries. This will make scrolling in editor much smoother. And another idea: make configurable docked panels. CudaText has several panels (Code Tree, Project Manager, Console, Output, etc.) but they are locked in the side or bottom, no configuration, panel cannot be moved from side to bottom, no docking to the right. It’s not needed much but configurable panels are handy.
SF: How long do you think that will take?
AT: OpenGL is hard to support, it will take some months and I am not sure it will work with all UI. Code Tree / Project Manager are Lazarus components which cannot render on OpenGL. Configurable panels are a work in progress, it is raw coding, easy to do.
SF: Do you have the resources you need to make that happen?
AT: Yes, I have enough time for this.
SF: If you had to do it over again, what would you do differently for CudaText?
AT: Good question. I have already found 3-5 places in CudaText which are better to rework, and have reworked them. For example in 2018, for very big text files, I reworked the string storage so big files take less memory (on logfiles 50 Mb+, CudaText takes less memory than Sublime Text when syntax parsers are off in both programs and CudaText loads those files much faster). Another example with docked panels was mentioned above. And the 3rd example, I have plans to support multi-threading in parser, which is missed.
SF: Is there anything else we should know?
AT: I want to thank the 3rd party developers who gave patches. Some Chinese programmer had made the patch to support IME (Asian) on Windows, I could not add this, thanks. German programmer Andreas Heim had written two things: proper support for single instance mode on Windows, and the Windows Explorer extension DLL, many thanks. And my friend from Russia, Andrey Kvichanskiy, gives support with Python plugins (he wrote plugins Find In Files, External Tools, and others). Thanks for the interview, keep the SourceForge good!
Now I use CudaText.
Before I used Notepad++.
Cudatext has many wonderful features.
It is a modern text editor.
I like it.