= gedit development - getting started = == Libraries used == First, you may be interested by the [[https://developer.gnome.org/|GNOME developer center]] and the [[http://www.gtk.org/|GTK+ website]], to know what is GLib, GObject and GTK+. Check also the [[Newcomers]] page to start contributing to GNOME in general. The main widget used by gedit is !GtkTextView, a general-purpose multiline text editor. To learn !GtkTextView, read the excellent [[http://www.bravegnu.org/gtktext/|tutorial]]. But !GtkTextView is not enough for source code edition. gedit actually uses the [[Projects/GtkSourceView|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 [[https://git.gnome.org/browse/libpeas/tree/README|libpeas]] library. While the gedit core, !GtkSourceView and libpeas are all written in C, gedit plugins can be written in other languages, such as [[Projects/Vala|Vala]] or Python. == Build == To compile the gedit source code from the git repository, it is recommended to use [[https://developer.gnome.org/jhbuild/unstable/|Jhbuild]]. The module is called gedit. Note that some plugins are in the [[https://git.gnome.org/browse/gedit-plugins/|gedit-plugins]] repository. Some tips: * Try "ignore_suggests = True" in your jhbuildrc to have fewer dependencies to build (see the difference with "jhbuild list gedit"). Another solution is to put some modules in the skip variable in jhbuildrc. * Build also the dconf module to get preferences saved. == Contribute == To know how to contribute, read the [[https://git.gnome.org/browse/gedit/tree/README|README]] and [[https://git.gnome.org/browse/gedit/tree/HACKING|HACKING]] files as well as the short FAQ about the [[Sysadmin/GitHub|GitHub mirror]]. To find something interesting to do, look at the [[https://bugzilla.gnome.org/browse.cgi?product=gedit|bugzilla]] entries (as you can see, the number of opened bugs is quite big... to help the developers, [[Bugsquad|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, [[http://git.fishsoup.net/cgit/git-bz/|git-bz]] can be useful. Improvements to the documentation (for users or developers) or the wiki is also useful. Interesting reading: [[http://ometer.com/hacking.html|Working on Free Software]] == Help == Unfortunately, we don't have lots of time to mentor you, so you'll have to be able to learn things by yourself. If you want to contribute to the gedit core, we expect that you can use Jhbuild and you know the C language and GLib/GObject/GTK+ quite well. That said, don't hesitate to ask questions on the mailing list or the IRC channel. But please avoid questions like "how can I contribute??!", or "how to use Jhbuild??". Before asking a question, you should have first tried by yourself, by reading documentation, writing code, ... Of course we can guide you so you learn more quickly, but you should be fairly autonomous.