Development: Getting Started

<!> Looking to develop a plugin? Read the plugin development guides instead.

gedit is mostly C and uses GTK+ as its cross-platform user interface library. If you're new to contributing to GNOME, we recommend giving the Newcomers page a read. If you don't know GTK+, a great resource is the GNOME Developer site.

The main widget used by gedit is GtkTextView, a general-purpose multiline text editor. To learn GtkTextView, read the excellent tutorial. But GtkTextView is not enough for source code edition. gedit actually uses the GtkSourceView library, which contains a subclass of GtkTextView with syntax highlighting, a completion framework, the search and replace, and many other features useful for a text editor or an IDE.

For its plugin system, gedit uses the libpeas library. While the gedit core, GtkSourceView and libpeas are all written in C, gedit plugins can be written in other languages, such as Vala or Python.

Build

gedit uses a typical GNOME-style autotools-based build system but supports JHBuild like other GNOME projects. You can use either, and both ways are described here.

jhbuild (Recommended)

Firstly, install and configure JHBuild to your needs by following the introduction to JHBuild guide, referring to the official manual when more information is needed.

To build gedit, its official plugins (which are optional, mind you, as you can omit the gedit-plugins module from the command), and all its subsequent dependencies before it, run:

$ jhbuild build gedit gedit-plugins

If no dependencies are required because they are already installed on the system, use buildone instead:

$ jhbuild buildone gedit gedit-plugins

Either way, JHBuild runs autogen, make, and make install to a prefix of your choosing or its default of ~/jhbuild/install/ for you.

To test out built modules, you can enter the JHBuild shell:

$ jhbuild shell
$ gedit

autotools only

Unlike with jhbuild, purely using autotools won't download and compile GNOME dependencies for you. You'll have to have the development libraries installed on your system.

TODO: list the dependencies here

If you're checking out the source via git, which is where the main development happens, then you'll need to run autogen.sh at the root of the project:

$ ./autogen.sh

TODO: add instructions for Windows

Once that is done, or if a source tarball has been used, the rest of the build follows standard autotools project procedure:

$ ./configure
checking for ...
...

$ make
$ make install

You can install gedit to a different prefix for testing purposes, without messing up your current install, just like with any other autotools project, at the configure stage:

$ ./configure --prefix=/path/to/my/testing/prefix

Plugins are distributed separately from the gedit repository, and have been placed in their own repository, gedit-plugins. To install these, simply follow the instructions above again, ensuring the prefix is set to the same location as gedit, and you will be able to access the plugins from inside gedit.

Contribute

To know how to contribute, read the README and HACKING files as well as the short FAQ about the GitHub mirror.

To find something interesting to do, look at the bugzilla entries (as you can see, the number of opened bugs is quite big... to help the developers, bugs triaging is always welcomed). To have a smaller list of interesting bugs, see the bugs marked with a High priority (or higher).

The bugs marked with the gnome-love keyword are normally suitable for first-time contributors. Look also at bugs with the NEW status, i.e. bugs that have been confirmed, instead of bugs with the UNCONFIRMED status. Warning: if you are interested to work on a feature request marked as UNCONFIRMED, first ask if the maintainers agree about the idea.

Another potentially easy task is to fix compilation warnings, for example when a deprecated function is used. If you encounter a runtime warning or critical message, it is also a good idea to fix it.

To attach commits to the Bugzilla, git-bz can be useful.

We welcome improvements to the documentation for users or developers.

Interesting reading: Working on Free Software

Help

If you want to contribute to the gedit in respect to code, we expect that you can use autotools and you know the C language, GLib/GObject/GTK+ quite well, however, if you can't find out how to do something from the GNOME and GTK+ documentation, feel free to ask on IRC and we'll try and sort you out.

Apps/Gedit/DevGettingStarted (last edited 2017-08-04 16:23:47 by GeorgeWhite)