Frequently Asked Questions

Codimension FAQ

What is Codimension?

Codimension is a free experimental Python 3 IDE licensed under GPL v3, written mostly in Python with a couple of custom modules written in C/C++.

It has most of the traditional IDE features however the main focus of Codimension is on graphics representation of the code control flow. Flowcharts are generated so fast that the process is integrated into a smooth update of the diagram while someone is typing the code. The IDE detects pauses in typing and triggers the flowchart updated.

Codimension studies how the graphics representation of the code can be integrated with the traditional textual representation without sacrificing any of them. Codimension also seeks how the text editing features can be implemented on the graphics view and what new features could be introduced for graphics.

Why is it called Codimension?

There are three concepts in this name: 'co', 'code', and 'dimension'. The concept 'code' appears for the obvious reason that Codimension is used with code. The concept 'dimension' has to do with the idea that Codimension adds a new dimension to the process of working with python code - specifically, interactive graphical representations of the control flow. The concept 'co' means that Codimension's textual and graphical representations are linked and inter-operate. (It is just a coincidence that 'codimension' is also a mathematical term.)

Another way to justify the IDE name is that 'Codimension' just sounds cool.

Why another IDE? Why not to extend an existing one?

Well, that was the first thought, but analysis of existing open source IDE plugin interfaces revealed that they are not really suitable to implement a graphical representation of the program control flow. Sometimes the plugin interface documentation was not clear either. To make the things worse none of the existing python code parsers provided all the required information and had to be rewritten. Sometimes the user interface decisions were argueable. So bearing all this in mind, it was decided to start Codimension as a separate project.

What are the supported platforms?

Codimension was developed on Linux and it is pip installable on Linux. See the Download page for the details.

Can I run Codimension on Windows?

Codimension has never been tried on Windows. While it is theoretically possible to make it Windows compatible no efforts were made for this and there no plans to do so at the time of writing.

Can I run Codimension on MAC?

Codimension has never been tried on MAC. There are no nearest future plans to port it on MAC.

The modern MAC OS however has unix under the hood and thus there must be no big deal in porting Codimension onto MAC OS. All the Codimension source code is available (see the Source download page) so you can give it a try on MAC OS.

If you believe you did the work of porting Codimension on MAC OS properly and you wish to share the packages with the others then please let us know so we can share a link or provide the packages to download from this site.

How to create my own color scheme?

At the moment there is no documentation of how to do it and there is no UI support. Generally the color scheme is split into a few pieces:

The first three items are stored in ~/.codimension3/skins/your-skin-name/ directory and can be changed simply by editing the files. The last item depends on the text editor component qutepart and the questions could be directed to the authors of the component.

If you need more information, please contact Sergey Satskiy.

How to submit a bug?

Please see the details at the non-code contributing page ('Submitting a bug' section).

How to request a feature?

Please see the details at the non-code contributing page ('Your ideas' section).

Can this techology be implemented for my favorite language?

Most certainly!

Python was chosen as a popular language which has many of the modern programming languages concepts covered. Yet Python is syntactically simple enough to make it feasible to develop an IDE and parsers within an Open Source project by one developer. Basically it is a matter of a parser for your favorite language to have the diagrams generated in a very similar way.