Skip to content
Snippets Groups Projects
Commit 57df2520 authored by Sudarshan CP's avatar Sudarshan CP
Browse files

Feedback related update to IDE proposal doc


Signed-off-by: default avatarSudarshan C P <sudarshan.cp2@in.bosch.com>
parent d590bbd2
No related tags found
1 merge request!229Draft: Wip/sudarshan/ide
Pipeline #283905 passed with warnings
......@@ -12,328 +12,54 @@ There are other open source Linux IDEs and text editors available, but we are co
Following open source, IDE’s are evaluated with the basis of Apertis requirements listed below, to recommend the best suitable IDE for the distributions.
The Apertis requirements for the default IDE are as follows:
- Version control system integration
- Language support -
`This should include both language support itself (e.g. completion, inline documentation as well as potentially build systems).`
- Local/remote debugger support
- Remote target support
- Availability of plugins and their ecosystem
- cross-compilation support
- Flatpak support
- OSTree support
- Meets Apertis' [license expectations]( https://www.apertis.org/policies/license-expectations/).
- Features such as, auto indentation, mini-map, profiler, multi-language support, symbol and method name auto-completion, etc.
- Available in [Debian](https://www.debian.org/).
- Easy integration of Apertis native compiler, debugger.
- Support for Flatpak based app development.
- Editor is still actively maintained by an upstream project.
The other comparison would be overall popularity and familiarity the apertis audience has with a given editor/IDE. One input could be the stackoverflow surveys; e.g. the one from 2019 had an area for [IDE](https://insights.stackoverflow.com/survey/2019#development-environments-and-tools) where VS code lead the pack. With vim being more popular then eclipse in all categories by quite a margin and far more popular then emacs (even though that got included here but vim did not?)
# IDEs available in Apertis
The main thing with IDEs is that there will never be the one that rules everything; But for apertis we can at the very least look at a good default one and invest some effort in making that well supported for a good default development experience.
The following IDEs and editors have already been added to the Apertis repositories:
Apertis SDK provides multiple IDE's as part of the distributions, so that user can choose the relavent IDE for their needs.
## Geany IDE
Following IDE's are part of Apertis distributions:
**License:** GPLv2.0+
- [Geany IDE](https://github.com/geany/geany)
- [Emacs Editor](https://git.savannah.gnu.org/git/emacs.git/)
- [Qt Creator](https://code.qt.io/cgit/)
- [Eclipse CDT](https://www.eclipse.org/ide/)
**Sources:** https://github.com/geany/geany
Above IDEs/editor are not meeting all the requirements, so evaluating some of the IDE/editor which are more popular and familier for developer and also provides extensions/plugin for missing/required functionality.
**Official website:** https://www.geany.org/
|Features|VScode/VScodium/Code-OSS| Gnome Builder|
|--------|------------------------|---------------|
|Version control system integration | By default `git` is provided. extensions are provided <br>to install any of the version control <br>tools e.g GitLab, Github, SVN)|By default only git is supported|
|Language support| Most of all the programming languages are supported,<br> and also extensions are <br>aviable for missing launguages | Supports only : C, C++, Python, Rust and Vala |
|Local/remote debugger support | Required debugger can be installed via <br> extensions and for remote <br>debugging use SSH extension. | GDB frontend based debugging support|
|Remote target support | SSH extension provides remote target support. | Supported|
|Availability of plugins and their ecosystem | Extension: Market place option is by default integrated <br> along with Market place, where developer <br>can choose the required toolchain. | No, User can write their extension using C, C++ or <br>Vala to meet their requirement. |
|cross-compilation | Supported | Supported |
|Flatpak | Supported | Supported |
|Available on Flahub | Yes | Yes |
| OSTree Support| No | Supported to run the application on Simulator |
**Debian distribution:** https://packages.debian.org/bullseye/geany
**Community support:** geany active community support exists
**Latest version:** 1.37.1
gnome-builder definitely has a lot going for it and should provide a good experience for those writing gnome type applications in C/vala/python and Rust. However it will be unknown for most if not all developers coming to Apertis. Currently none of the product team writes gnome-type applications for their HMI.
**Features:**
On the flip side, if we look at VS code in particular a lot of developers already know it. It comes with a huge amount of extension, including some for gitlab integration. It also supports a lot more languages then gnome-builder and has a far bigger developer drive behind it. So potentially it would be better for Apertis to work well out of the box with vscode to engage easily with developers new to apertis.
- Support for syntax highlighting
- Code folding
- Call tips
- Symbol name auto-completion
- Symbol lists
- Code navigation
- A simple project management tool
- In-built system to compile and run a user’s code
- Extensible through plugins
**Pros:**
- Apertis already shipped 1.33 version on current SDK distribution
- Powerful text editor using the GTK2/GTK3 toolkit
**Cons:**
- Apertis UI tool chain is not yet finalized, so if there is change in UI toolkit other than GTK, then lot of adaption and integration work is required to distribute this IDEs on Apertis.
## Emacs Editor
**License:** FSF, GPLv3
**Sources:** https://git.savannah.gnu.org/git/emacs.git/
**Official website:** https://www.gnu.org/savannah-checkouts/gnu/emacs/emacs.html
**Debian distribution:** https://packages.debian.org/bullseye/emacs
**Community support:** FSF Savannah community support
**Latest version:** 26.1+1-3.2
**Features:**
- Content-aware editing modes
- Full Unicode support
- Highly customizable using GUI or Emacs Lisp code
- A packaging system for downloading and installing extensions
- An ecosystem of functionalities beyond normal text editing including a project planner, mail, calendar, and newsreader plus many more
- A complete built-in documentation plus user tutorials and many more
**Pros:**
- IDE distributed on different GUI support e.g GTK, Lupid, and can also be used without a GUI toolkit in a terminal.
- Latest version of Emacs is already available on Apertis distribution
## Qt Creator
**License:** GPL-3.0-with-Qt-exception or Commercial.
**Sources:** https://code.qt.io/cgit/
**Official website:** https://www.qt.io/ide/
**Debian distribution:** https://packages.debian.org/bullseye/qtcreator
**Community support**: Qt support team, support based on the license chosen.
**Feature:**
- Sophisticated code editor different languages e.g C++, QML, JS, python
- Support most of the version control tool e.g git, perforce,
- Integrated visual editors for building C++ widget-based applications.
- Project and build management tools.
- Support for Cmake and cross-compiling with qmake is included
- Multi-screen and multi-platform support for easy switching between build targets plus many more
- Quick Emulator used to test and debug applications in conditions practically identical to those on your target device
- Quick compliler used to compile source code into native machine code, accelerate start-up time and UI performanc
**Pros:**
- Can be used to create applications across desktop, mobile, and embedded platforms using the Qt toolkit
- Proven solution on field
- More customer and rich functionality
- Customized solution for product team and good support based on license choosen
- Provide the plug in for visual studio code
**Cons:**
- Support is dependents on the license chosen.
- Redistribution with changes are not allowed
- All the open source contribution will be part of LGPL version 3, GPL version 2 and GPL version 3.
## Eclipse CDT
**License:** Eclipse Public License 2.0
**Official website:** https://www.eclipse.org/ide/
**Sources:** https://projects.eclipse.org/projects/tools.cdt
**Debian distribution:** No longer distributed in Debian
**Community support:** Eclipse foundation
**Latest version:** 10.1.0
**Features:**
- Supports project creation
- Managed build for various toolchains
- Standard make build
- Source navigation
- Several knowledge tools such as call graph, type hierarchy, in-built browser, macro definition browser
- Code editor with support for syntax highlighting
- Support for folding and hyperlink navigation
- Source code refactoring plus code generation
- Tools for visual debugging such as memory, registers
- Disassembly viewers and many more
**Pros:**
- Well proven on industry, because many of product team uses this editor
- Very rich in feature set
- More plugins are available to meet product team needs
- Good community support
- support the make build system and provide the auto template of it
- IDE that also serves as a platform for others to provide value-added tooling for C/C++ developers.
**Cons:**
- No support for flatpak based app development
- No longer packaged in Debian
- Requires quite a few dependencies only included in Apertis for Eclipse
# Following IDEs are not present on Apertis distributions so considered it for recommendation
## Gnome builder
**License:** GNU General Public License, version 3 or later
**Source Link:** https://gitlab.gnome.org/GNOME/gnome-builder
**Official website:** https://wiki.gnome.org/Apps/Builder
**Support:** https://builder.readthedocs.io/en/latest/
**Debian distribution :** https://packages.debian.org/bullseye/gnome-builder
**Community support:** GNOME
**Features:**
- Built in syntax highlighting for many programming languages.
- Side-by-side code editors.
- Multi-monitor support
- Code overview mini-map.
- Integration with Git.
- Integration with Autotools, Cargo, CMake, Gradle, Meson, Maven, Make, PHPize, and Waf.
- Clang based auto-completion, semantic highlighting, and diagnostics.
- Python based auto-completion, semantic highlighting, and diagnostics.
- Vala based auto-completion and diagnostics.
- Auto indentation support for C, Python, Vala, and XML.
- HTML, Markdown, reStructuredText, and Sphinx live preview.
- Optional Vim, Emacs, and SublimeText style editing.
- Integrated software profiler for native applications.
- Integrated debugger for native applications.
- Support for building with jhbuild and flatpak runtimes.
- Support for viewing TODOs within a code-base.
- Fast fuzzy text search across files and symbols.
**Pros:**
- Support for flatpak based app development
- Support for GNOME technologies such as GTK+, GLib, and GNOME APIs
- Apertis is relay on GNOME technology, so no adaptions are required to distribute on Apertis
- Most of the GNOME tool used on Apertis app development, so no adaptions are required
- Good community support from Collabora for any feature integration on builder.
## Visual Studio Code
**License:** MIT
**Official website:** https://code.visualstudio.com/
**Latest version:** 1.54
**Debian distribution:** Not distributed in Debian
**Sources:** https://github.com/microsoft/vscode
**Community support:** Limited support
**Features:**
- Keyboard shortcuts
- Multiple selections (multi-cursor)
- Column (box) selection
- Save / Auto Save
- Hot Exit
- Find and Replace
- Search across files
- IntelliSense
- Formatting
- Folding
- Indentation
- File encoding support
**Pros:**
- Debian binary available to install on latest released
- Extension mechanism to add theme, debugger, languages
- Support for multi OS
- Well proven on product development
- Good support for native and web app development
- Provide the interface for deploying your web applications to the cloud.
- Publish or modifying any changes on distributed system
- [Flatpak plugin available](https://marketplace.visualstudio.com/items?itemName=bilelmoussaoui.flatpak-vscode)
**Cons:**
- Less functionality compare to visual studio IDE
- Limited support
- Not much support on GNOME technologies
## CodeLite IDE
**License:** GPLV2 and with exception for plugins
**Official website:** https://codelite.org/
**Sources:** https://github.com/eranif/codelite
**Debian distribution:** https://packages.debian.org/bullseye/codelite
**Latest version:** 14.0
**Features:**
- Code completion and it offers two code completion engines
- Supports several compilers including GCC, clang/VC++
- Displays errors as code glossary
- Clickable errors via build tab
- Support for LLDB next generation debugger
- GDB support
- Support for refactoring
- Code navigation
- Remote development using built-in SFTP
- Source control plugins
- RAD (Rapid Application Development) tool for developing wxWidgets-based apps plus many more features
**Pros:**
- Comes with debian distributions
- Support GTK+3
- wxWidgets 3.1 for application development
**Cons:**
- Mainly comes with cmake based project support
## Atom
**Licenses:** MIT
**Sources:** https://github.com/atom/atom
**Official website:** https://atom.io/
**Debian sources:** Not distributed in Debian
**Latest version:** 4.1.6
**Features:**
- Cross Platform support (Linux/OS X/Windows)
- Modern and approachable editor that can be customized to core.
- Built in Package Manager – Search and install from within. You may develop your own package.
- Smart Approach – Ensures you write code with speed, flexibility and auto-completion.
- Embedded File System Browser – Browse and open file/project/group of projects with ease in one window.
- Split Panel – Multi-panel feature to compare and edit code from single window. No more switching between windows.
- Find and replace text in one file or all your projects.
- Plug-ins supported
**Pros:**
- Distributed in debian
- Very good IDE for web app development
- Good documentation and community support
**Cons:**
This IDE comes with prerequist of "git" and "npm Version 1.4.x", so Apertis is already moved to gitlab based source management tool and web app development is less focused.
# Recommendations
| IDE | Suitable licensing | Features | In Debian | Flatpak support | Maintained |
| ------------------ | ------------------ | -------- | --------- | --------------- | ---------- |
| Geany | Yes | - Support for syntax highlighting <br> - Call tips <br> - Symbol lists <br> - Code navigation <br> - Extensible through plugins | Yes | No | Yes |
| Emacs | Yes | - Full Unicode support <br> - Content-aware editing modes <br> - A packaging system for downloading and installing extensions | Yes | No | Yes |
| Qt Creator | Yes | - Sophisticated code editor different languages e.g C++, QML, JS, python <br> - Support most of the version control tool e.g git, perforce, <br> - Integrated visual editors for building C++ widget-based applications. <br> - Project and build management tools. <br> - Support for Cmake and cross-compiling with qmake is included <br> - Multi-screen and multi-platform support for easy switching between build targets plus many more <br> - Quick Emulator used to test and debug applications in conditions practically identical to those on your target device <br> - Quick compliler used to compile source code into native machine code, accelerate start-up time and UI performanc | Yes | No | Yes |
| Eclipse CDT | Yes | - Managed build for various toolchains <br> - Standard make build <br> Source navigation <br> - Several knowledge tools such as call graph, type hierarchy, in-built browser, macro definition browser <br> - Code editor with support for syntax highlighting <br> - Tools for visual debugging such as memory, registers <br> - Disassembly viewers and many more | No | No | Yes |
| Gnome builder | Yes | - Built in syntax highlighting for many programming languages. <br> - Side-by-side code editors. <br> - Multi-monitor support <br> - Code overview mini-map.<br> - Clang based auto-completion, semantic highlighting, and diagnostics. <br> - Python based auto-completion, semantic highlighting, and diagnostics. <br> - Vala based auto-completion and diagnostics.<br> - Auto indentation support for C, Python, Vala, and XML. <br> - Integrated software profiler for native applications. <br> - Integrated debugger for native applications.<br> - Support for building with jhbuild and flatpak runtimes. <br> - Support for viewing TODOs within a code-base. <br> - Fast fuzzy text search across files and symbols. | Yes | Yes | Yes |
| Visual Studio Code | Yes | - Keyboard shortcuts <br> - Multiple selections (multi-cursor) <br> - Column (box) selection <br> - Save / Auto Save <br> - Hot Exit <br> - Find and Replace <br> - Search across files <br> - IntelliSense <br> - Formatting <br> - Folding <br> - Indentation <br> - File encoding support | No | Yes | Yes |
| CodeLite | Yes |- Supports several compilers including GCC, clang/VC++ <br> - Displays errors as code glossary <br> Clickable errors via build tab <br> - Support for LLDB next generation debugger <br> - GDB support <br> - Code navigation <br> - Remote development using built-in SFTP <br> - Source control plugins | Yes | No | Yes |
| Atom | Yes | - Cross Platform support (Linux/OS X/Windows) <br> - Modern and approachable editor that can be customized to core. <br> - Built in Package Manager – Search and install from within. You may develop your own package. <br> - Smart Approach – Ensures you write code with speed, flexibility and auto-completion.<br> - Embedded File System Browser – Browse and open file/project/group of projects with ease in one window. <br> - Split Panel – Multi-panel feature to compare and edit code from single window. No more switching between windows. <br> - Find and replace text in one file or all your projects. <br> - Plug-ins supported | No | Yes | Yes |
Given that VScode has some challenges with redistribution (hence vscodium existing) there should be a bit of both. With e.g. gnome-builder pre-installed and ready to go out of the box, but good/easy ways to install vscode as well and also potential to extended the apertis specific extensions by contributing the changes on `Code-OSS`, which is forked from VSCode and distributed under open source license `MIT`.
`gnome-builder` provides the possibility to write Apertis extenstion using C, C++ and vala, and updated those changes as part of Apertis distributions, but in case of `Code-OSS` Apertis extenstion will be visible on IDE after community of `Code-OSS` is accepted.
The existing default IDE, Eclipse, is no longer as popular as it once was. It is
no longer provided by Debian, having been
[removed from Buster](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914448).
The IDE that appears most suited to the use cases for which the Apertis SDK is provided (application development), supports the technologies, such as FlatPak, which we are beginning to use in Apertis and which is provided in Debian is GNOME Builder. As a result we recommend that this is the most suitable IDE for Apertis to provide in its SDK.
\ No newline at end of file
The IDE that appears most suited to the use cases for which the Apertis SDK is provided (application development), supports the technologies, such as FlatPak, which we are beginning to use in Apertis and which is provided in flathub is VSCodium. As a result we recommend that this is the most suitable IDE for Apertis to provide in its SDK.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment