mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
devel-docs: Update content according to 'gimp-web-devel'
- Drops HACKING file (it is outdated and we have the "same thing", updated, in the devel site), but moved PDB content to the README * Update various links now to the devel site + Added 'TODOs' to avoid confusion from titles with empty content and removed some that are already implemented
This commit is contained in:
parent
71ceff9125
commit
ca5b2cd7c7
2 changed files with 40 additions and 201 deletions
|
@ -1,155 +0,0 @@
|
||||||
# Building from git and contributing
|
|
||||||
|
|
||||||
While packagers are expected to compile GIMP from tarballs (same for
|
|
||||||
personal usage), developers who wish to contribute patches should
|
|
||||||
compile from the git repository.
|
|
||||||
|
|
||||||
The procedure is basically the same (such as described in the `INSTALL`
|
|
||||||
file, which you will notice doesn't exist in the repository; you can
|
|
||||||
find [INSTALL.in](/INSTALL.in) instead, whose base text is the same
|
|
||||||
before substitution by the build configuration step). Yet it has a few
|
|
||||||
extra steps.
|
|
||||||
|
|
||||||
## Git
|
|
||||||
|
|
||||||
GIMP is available from GNOME Git. You can use the following commands
|
|
||||||
to get GIMP from the the git server:
|
|
||||||
|
|
||||||
$ git clone https://gitlab.gnome.org/GNOME/gimp.git
|
|
||||||
|
|
||||||
You can read more on using GNOME's git service at these URLs:
|
|
||||||
|
|
||||||
https://wiki.gnome.org/Git
|
|
||||||
https://www.kernel.org/pub/software/scm/git/docs/
|
|
||||||
|
|
||||||
|
|
||||||
The development branches of GIMP closely follow the development branches
|
|
||||||
of `babl` and `GEGL` which are considered part of the project. Therefore
|
|
||||||
you will also have to clone and build these repositories:
|
|
||||||
|
|
||||||
$ git clone https://gitlab.gnome.org/GNOME/babl.git
|
|
||||||
$ git clone https://gitlab.gnome.org/GNOME/gegl.git
|
|
||||||
|
|
||||||
|
|
||||||
As for other requirements as listed in the `INSTALL` file, if you use
|
|
||||||
a development-oriented Linux distribution (Debian Testing or Fedora for
|
|
||||||
instance), you will often be able to install all of them from your
|
|
||||||
package manager. On Windows, the MSYS2 project is great for keeping up
|
|
||||||
with libraries too. On macOS, it is unfortunately much more of a hurdle
|
|
||||||
and you should probably look at instructions in our [gimp-macos-build
|
|
||||||
repository](https://gitlab.gnome.org/Infrastructure/gimp-macos-build)
|
|
||||||
which is how we build GIMP for macOS.
|
|
||||||
|
|
||||||
We also know that GIMP is built on various \*BSD, proprietary Unixes,
|
|
||||||
even on GNU-Hurd and less known systems such as Haiku OS but we don't
|
|
||||||
have much details to help you there. Yet we still welcome patches to
|
|
||||||
improve situation on any platform.
|
|
||||||
|
|
||||||
In any case, if you use a system providing too old packages, you might
|
|
||||||
be forced to build from source (tarballs or repositories) the various
|
|
||||||
dependencies list in `INSTALL`.
|
|
||||||
|
|
||||||
## Additional Requirements
|
|
||||||
|
|
||||||
Our autotools build system requires the following packages (or newer
|
|
||||||
versions) installed when building from git (unlike building from
|
|
||||||
tarball):
|
|
||||||
|
|
||||||
* GNU autoconf 2.54 or over
|
|
||||||
- ftp://ftp.gnu.org/gnu/autoconf/
|
|
||||||
* GNU automake 1.13 or over
|
|
||||||
- ftp://ftp.gnu.org/gnu/automake/
|
|
||||||
* GNU libtool 1.5 or over
|
|
||||||
- ftp://ftp.gnu.org/gnu/libtool/
|
|
||||||
|
|
||||||
Alternatively a build with meson 0.53.0 or over is possible but it is
|
|
||||||
not complete yet, hence not usable for packaging (yet usable for
|
|
||||||
development).
|
|
||||||
|
|
||||||
For some specific build rules, you will also need:
|
|
||||||
|
|
||||||
* xsltproc
|
|
||||||
- ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/
|
|
||||||
|
|
||||||
In any cases, you will require this tool for dependency retrieval:
|
|
||||||
|
|
||||||
* pkg-config 0.16.0 (or preferably a newer version)
|
|
||||||
- https://www.freedesktop.org/software/pkgconfig/
|
|
||||||
|
|
||||||
These are only the additional requirements if you want to compile from
|
|
||||||
the git repository. The file `INSTALL` lists the various libraries we
|
|
||||||
depend on.
|
|
||||||
|
|
||||||
|
|
||||||
## Additional Compilation Steps
|
|
||||||
|
|
||||||
If you are accessing GIMP via git, then you will need to take more
|
|
||||||
steps to get it to compile. You can do all these steps at once by
|
|
||||||
running:
|
|
||||||
|
|
||||||
gimp/trunk$ ./autogen.sh
|
|
||||||
|
|
||||||
Basically this does the following for you:
|
|
||||||
|
|
||||||
gimp/trunk$ aclocal-1.9; libtoolize; automake-1.9 -a;
|
|
||||||
gimp/trunk$ autoconf;
|
|
||||||
|
|
||||||
The above commands create the "configure" script. Now you can run the
|
|
||||||
configure script in gimp/trunk to create all the Makefiles.
|
|
||||||
|
|
||||||
Before running autogen.sh or configure, make sure you have libtool in
|
|
||||||
your path. Also make sure glib-2.0.m4 glib-gettext.m4, gtk-3.0.m4 and
|
|
||||||
pkg.m4 are either installed in the same $prefix/share/aclocal relative to your
|
|
||||||
automake/aclocal installation or call autogen.sh as follows:
|
|
||||||
|
|
||||||
$ ACLOCAL_FLAGS="-I $prefix/share/aclocal" ./autogen.sh
|
|
||||||
|
|
||||||
Note that autogen.sh runs configure for you. If you wish to pass
|
|
||||||
options like --prefix=/usr to configure you can give those options to
|
|
||||||
autogen.sh and they will be passed on to configure.
|
|
||||||
|
|
||||||
If AUTOGEN_CONFIGURE_ARGS is set, these options will also be passed to
|
|
||||||
the configure script. If for example you want to enable the build of
|
|
||||||
the GIMP API reference manuals, you can set AUTOGEN_CONFIGURE_ARGS to
|
|
||||||
"--enable-gi-docgen".
|
|
||||||
|
|
||||||
If you want to use libraries from a non-standard prefix, you should set
|
|
||||||
PKG_CONFIG_PATH appropriately. Some libraries do not use pkgconfig, see
|
|
||||||
the output of ./configure --help for information on what environment
|
|
||||||
variables to set to point the compiler and linker to the correct path.
|
|
||||||
Note that you need to do this even if you are installing GIMP itself
|
|
||||||
into the same prefix as the library.
|
|
||||||
|
|
||||||
|
|
||||||
## Patches
|
|
||||||
|
|
||||||
The best way to submit patches is to provide files created with
|
|
||||||
git-format-patch. The recommended command for a patch against the
|
|
||||||
`master` branch is:
|
|
||||||
|
|
||||||
$ git format-patch origin/master
|
|
||||||
|
|
||||||
It is recommended that you file a bug report in our
|
|
||||||
[tracker](https://gitlab.gnome.org/GNOME/gimp) and either create a merge
|
|
||||||
request or attach your patch to the report as a plain text file, not
|
|
||||||
compressed.
|
|
||||||
|
|
||||||
Please follow the guidelines for coding style and other requirements
|
|
||||||
listed in [CODING_STYLE.md](https://developer.gimp.org/core/coding_style/). When
|
|
||||||
you will contribute your first patches, you will notice that we care very much
|
|
||||||
about clean and tidy code, which helps for understanding. Hence we care about
|
|
||||||
coding style and consistency!
|
|
||||||
|
|
||||||
|
|
||||||
## Auto-generated Files
|
|
||||||
|
|
||||||
Please notice that some files in the source are generated from other
|
|
||||||
sources. All those files have a short notice about being generated
|
|
||||||
somewhere at the top. Among them are the files ending in `pdb.[ch]` in
|
|
||||||
the `libgimp/` directory and the files ending in `cmds.c` in the
|
|
||||||
`app/pdb/` subdirectory. Those are generated from the respective `.pdb`
|
|
||||||
files in `pdb/groups`.
|
|
||||||
|
|
||||||
Other files are:
|
|
||||||
|
|
||||||
* `AUTHORS` from `authors.xml`
|
|
|
@ -72,7 +72,7 @@ The whole C reference documentation for both these libraries can be
|
||||||
generated in the main GIMP build with the `-Dgi-docgen=enabled` meson
|
generated in the main GIMP build with the `-Dgi-docgen=enabled` meson
|
||||||
option (you need to have the `gi-docgen` tools installed).
|
option (you need to have the `gi-docgen` tools installed).
|
||||||
|
|
||||||
TODO: add online links when it is up for the new APIs.
|
See the [API documentation](https://developer.gimp.org/api/3.0/)
|
||||||
|
|
||||||
### Programming Languages
|
### Programming Languages
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ full-featured since they don't require manual tweaking. Therefore any
|
||||||
function in the C library should have an equivalent in any of the
|
function in the C library should have an equivalent in any of the
|
||||||
bindings.
|
bindings.
|
||||||
|
|
||||||
TODO: binding reference documentation.
|
**TODO**: binding reference documentation.
|
||||||
|
|
||||||
**Note**: several GObject-Introspection's Scheme bindings exist though
|
**Note**: several GObject-Introspection's Scheme bindings exist though
|
||||||
we haven't tested them. Nevertheless, GIMP also provides historically
|
we haven't tested them. Nevertheless, GIMP also provides historically
|
||||||
|
@ -112,17 +112,18 @@ development](#script-fu-development) section.
|
||||||
|
|
||||||
### Tutorials
|
### Tutorials
|
||||||
|
|
||||||
TODO: at least in C and in one of the officially supported binding
|
**TODO**: at least in C and in one of the officially supported binding
|
||||||
(ideally even in all of them).
|
(ideally even in all of them).
|
||||||
|
|
||||||
### Porting from GIMP 2 plug-ins
|
### Porting from GIMP 2 plug-ins
|
||||||
|
|
||||||
|
Take a look at our [porting guide](GIMP3-plug-in-porting-guide/README.md).
|
||||||
|
|
||||||
### Debugging
|
### Debugging
|
||||||
|
|
||||||
GIMP provides an infrastructure to help debugging plug-ins.
|
GIMP provides an infrastructure to help debugging plug-ins.
|
||||||
|
|
||||||
You are invited to read the [dedicated
|
You are invited to read the [dedicated documentation](https://developer.gimp.org/resource/debug-plug-ins/).
|
||||||
documentation](debug-plug-ins.txt).
|
|
||||||
|
|
||||||
## Script-fu development
|
## Script-fu development
|
||||||
|
|
||||||
|
@ -132,11 +133,13 @@ Scheme mini-interpreter and therefore `Script-fu` scripts do not use
|
||||||
`libgimp` or `libgimpui`. They interface with the PDB through the
|
`libgimp` or `libgimpui`. They interface with the PDB through the
|
||||||
`Script-fu` plug-in.
|
`Script-fu` plug-in.
|
||||||
|
|
||||||
### Tutorials
|
### TODO: Tutorials
|
||||||
|
|
||||||
### Porting from GIMP 2 scripts
|
### Porting from GIMP 2 scripts
|
||||||
|
|
||||||
## GEGL operation development
|
Take a look at our [ScriptFu porting guide](GIMP3-plug-in-porting-guide/script-fu-author-guide.md)
|
||||||
|
|
||||||
|
## TODO: GEGL operation development
|
||||||
|
|
||||||
## Custom data
|
## Custom data
|
||||||
|
|
||||||
|
@ -176,8 +179,8 @@ recent versions.
|
||||||
|
|
||||||
If you are interested in brushes from a developer perspective, you are
|
If you are interested in brushes from a developer perspective, you are
|
||||||
welcome to read specifications of GIMP formats:
|
welcome to read specifications of GIMP formats:
|
||||||
[GBR](specifications/gbr.txt), [GIH](specifications/gih.txt),
|
[GBR](https://developer.gimp.org/core/standards/gbr/), [GIH](https://developer.gimp.org/core/standards/gih/),
|
||||||
[VBR](specifications/vbr.txt) or the obsolete [GPB](specifications/gpb.txt).
|
[VBR](https://developer.gimp.org/core/standards/vbr/) or the obsolete [GPB](https://developer.gimp.org/core/standards/gpb/).
|
||||||
|
|
||||||
If you want to contribute brushes to the official GIMP, be aware we
|
If you want to contribute brushes to the official GIMP, be aware we
|
||||||
would only accept brushes in non-obsolete GIMP formats. All these
|
would only accept brushes in non-obsolete GIMP formats. All these
|
||||||
|
@ -199,11 +202,11 @@ within GIMP.
|
||||||
### Patterns
|
### Patterns
|
||||||
|
|
||||||
GIMP supports the GIMP Pattern format (PAT, whose
|
GIMP supports the GIMP Pattern format (PAT, whose
|
||||||
[specification](specifications/pat.txt) is available for developers).
|
[specification](https://developer.gimp.org/core/standards/pat/) is available for developers).
|
||||||
|
|
||||||
This format can be exported by GIMP itself.
|
This format can be exported by GIMP itself.
|
||||||
|
|
||||||
Alternatively GIMP supports patterns from `GdkPixbuf` (TODO: get more
|
Alternatively GIMP supports patterns from `GdkPixbuf` (**TODO**: get more
|
||||||
information?).
|
information?).
|
||||||
|
|
||||||
### Palettes
|
### Palettes
|
||||||
|
@ -214,7 +217,7 @@ GIMP.
|
||||||
### Gradients
|
### Gradients
|
||||||
|
|
||||||
GIMP supports the GIMP Gradient format (GGR, whose
|
GIMP supports the GIMP Gradient format (GGR, whose
|
||||||
[specification](specifications/ggr.txt) is available for developers)
|
[specification](https://developer.gimp.org/core/standards/ggr/) is available for developers)
|
||||||
which can be generated from within GIMP.
|
which can be generated from within GIMP.
|
||||||
|
|
||||||
Alternatively GIMP supports the SVG Gradient format.
|
Alternatively GIMP supports the SVG Gradient format.
|
||||||
|
@ -239,14 +242,7 @@ Finally you can look at our existing themes, like the [System
|
||||||
theme](https://gitlab.gnome.org/GNOME/gimp/-/blob/master/themes/System/gimp.css).
|
theme](https://gitlab.gnome.org/GNOME/gimp/-/blob/master/themes/System/gimp.css).
|
||||||
Note though that this `System` theme is pretty bare, and that's its goal
|
Note though that this `System` theme is pretty bare, and that's its goal
|
||||||
(try to theme as few as possible over whatever is the current real
|
(try to theme as few as possible over whatever is the current real
|
||||||
system theme).
|
GTK system theme).
|
||||||
|
|
||||||
TODO: for any theme maker reading this, what we want for GIMP 3.0 are at
|
|
||||||
least the following additional themes:
|
|
||||||
|
|
||||||
- a full custom theme using neutral grayscale colors with a dark and
|
|
||||||
light variant;
|
|
||||||
- a mid-gray neutral theme.
|
|
||||||
|
|
||||||
As a last trick for theme makers, we recommend to work with the
|
As a last trick for theme makers, we recommend to work with the
|
||||||
GtkInspector tool, which allows you to test CSS rules live in the `CSS`
|
GtkInspector tool, which allows you to test CSS rules live in the `CSS`
|
||||||
|
@ -294,10 +290,10 @@ styling.
|
||||||
See the dedicated [icons documentation](icons.md) for more technical
|
See the dedicated [icons documentation](icons.md) for more technical
|
||||||
information.
|
information.
|
||||||
|
|
||||||
### Tool presets
|
### TODO: Tool presets
|
||||||
|
|
||||||
|
|
||||||
## GIMP extensions (*.gex*)
|
## TODO: GIMP extensions (*.gex*)
|
||||||
|
|
||||||
## Continuous Integration
|
## Continuous Integration
|
||||||
|
|
||||||
|
@ -385,35 +381,20 @@ When writing code, any core developer is expected to follow:
|
||||||
- the [directory structure](#directory-structure-of-gimp-source-tree)
|
- the [directory structure](#directory-structure-of-gimp-source-tree)
|
||||||
- our [header file inclusion policy](includes.txt)
|
- our [header file inclusion policy](includes.txt)
|
||||||
|
|
||||||
[GIMP's developer wiki](https://wiki.gimp.org/index.php/Main_Page) can
|
[GIMP's developer site](https://developer.gimp.org/) contain various valuable resources.
|
||||||
also contain various valuable resources.
|
|
||||||
|
|
||||||
Finally the [debugging-tips](debugging-tips.md) file contain many very
|
Finally the [debugging-tips](https://developer.gimp.org/core/debug/debugging-tips/) file contain many very
|
||||||
useful tricks to help you debugging in various common cases.
|
useful tricks to help you debugging in various common cases.
|
||||||
|
|
||||||
### Newcomers
|
### Newcomers
|
||||||
|
|
||||||
If this is your first time contributing to GIMP, you might be interested
|
If this is your first time contributing to GIMP, you might be interested
|
||||||
by build instructions. The previously mentioned wiki in particular has a
|
by [build instructions](https://developer.gimp.org/core/setup/).
|
||||||
[Hacking:Building](https://wiki.gimp.org/wiki/Hacking:Building) page
|
|
||||||
with various per-platform subpages. The [HACKING](HACKING.md) docs will
|
|
||||||
also be of interest.
|
|
||||||
|
|
||||||
You might also like to read these [instructions on submitting
|
You might also like to read these instructions on the process of
|
||||||
patches](https://gimp.org/bugs/howtos/submit-patch.html).
|
[submitting patches](https://developer.gimp.org/core/submit-patch/).
|
||||||
|
|
||||||
If you are unsure what to work on, this [list of bugs for
|
### TODO: Core Contributors
|
||||||
newcomers](https://gitlab.gnome.org/GNOME/gimp/-/issues?scope=all&state=opened&label_name[]=4.%20Newcomers)
|
|
||||||
might be a good start. It doesn't necessarily contain only bugs for
|
|
||||||
beginner developers. Some of them might be for experienced developers
|
|
||||||
who just don't know yet enough the codebase.
|
|
||||||
|
|
||||||
Nevertheless we often recommend to rather work on topics which you
|
|
||||||
appreciate, or even better: fixes for bugs you encounter or features you
|
|
||||||
want. These are the most self-rewarding contributions which will really
|
|
||||||
make you feel like developing on GIMP means developing for yourself.
|
|
||||||
|
|
||||||
### Core Contributors
|
|
||||||
|
|
||||||
### Directory structure of GIMP source tree
|
### Directory structure of GIMP source tree
|
||||||
|
|
||||||
|
@ -484,6 +465,19 @@ The source code of the main GIMP application is found in the `app/` directory:
|
||||||
| app/widgets/ | Collection of widgets used in the application GUI |
|
| app/widgets/ | Collection of widgets used in the application GUI |
|
||||||
| app/xcf/ | XCF file handling in **core** |
|
| app/xcf/ | XCF file handling in **core** |
|
||||||
|
|
||||||
|
#### Auto-generated Files
|
||||||
|
|
||||||
|
Please notice that some files in the source are generated from other
|
||||||
|
sources. All those files have a short notice about being generated
|
||||||
|
somewhere at the top. Among them are the files ending in `pdb.[ch]` in
|
||||||
|
the `libgimp/` directory and the files ending in `cmds.c` in the
|
||||||
|
`app/pdb/` subdirectory. Those are generated from the respective `.pdb`
|
||||||
|
files in `pdb/groups`.
|
||||||
|
|
||||||
|
Other files are:
|
||||||
|
|
||||||
|
* `AUTHORS` from `authors.xml`
|
||||||
|
|
||||||
You should also check out [gimp-module-dependencies.svg](gimp-module-dependencies.svg).
|
You should also check out [gimp-module-dependencies.svg](gimp-module-dependencies.svg).
|
||||||
**TODO**: this SVG file is interesting yet very outdated. It should not
|
**TODO**: this SVG file is interesting yet very outdated. It should not
|
||||||
be considered as some kind dependency rule and should be updated.
|
be considered as some kind dependency rule and should be updated.
|
||||||
|
@ -497,7 +491,7 @@ features made available in GIMP. More than an image format, you may
|
||||||
consider it as a work or project format, as it is not made for finale
|
consider it as a work or project format, as it is not made for finale
|
||||||
presentation of an artwork but for the work-in-progress processus.
|
presentation of an artwork but for the work-in-progress processus.
|
||||||
|
|
||||||
Developers are welcome to read the [specifications of XCF](specifications/xcf.txt).
|
Developers are welcome to read the [specifications of XCF](https://developer.gimp.org/core/standards/xcf/).
|
||||||
|
|
||||||
#### Locks
|
#### Locks
|
||||||
|
|
||||||
|
@ -510,8 +504,8 @@ This is further explained in [the specifications of locks](https://developer.gim
|
||||||
|
|
||||||
GIMP has an evolved GUI framework, with a toolbox, dockables, menus…
|
GIMP has an evolved GUI framework, with a toolbox, dockables, menus…
|
||||||
|
|
||||||
This [document describing how the GIMP UI framework functions and how it
|
This document describing how the GIMP UI framework functions and how it
|
||||||
is implemented](ui-framework.txt) might be of interest.
|
is [implemented](ui-framework.txt) might be of interest.
|
||||||
|
|
||||||
#### Contexts
|
#### Contexts
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue