[gimp] devel-docs: update the developer documentation further.



commit 4065c33bf0328272ca0d10913e908f3ac90a194d
Author: Jehan <jehan girinstud io>
Date:   Sun Jan 23 01:00:56 2022 +0100

    devel-docs: update the developer documentation further.
    
    Add some more text and links to existing documents.
    
    I also remove 3 files which are now either outdated or whose contents is
    also written (with more or less similar text) in other more up-to-date
    files.

 devel-docs/README                 |  61 -------------
 devel-docs/README.md              | 174 +++++++++++++++++++++++++++++++++++++-
 devel-docs/commit-rules.txt       |  29 -------
 devel-docs/submitting-patches.txt |   1 -
 4 files changed, 173 insertions(+), 92 deletions(-)
---
diff --git a/devel-docs/README.md b/devel-docs/README.md
index 572ae95c72..c2e81afafa 100644
--- a/devel-docs/README.md
+++ b/devel-docs/README.md
@@ -118,6 +118,13 @@ TODO: at least in C and in one of the officially supported binding
 
 ### Porting from GIMP 2 plug-ins
 
+### Debugging
+
+GIMP provides an infrastructure to help debugging plug-ins.
+
+You are invited to read the [dedicated
+documentation](debug-plug-ins.txt).
+
 ## Script-fu development
 
 `Script-fu` is its own thing as it is a way to run Scheme script with
@@ -133,12 +140,92 @@ Scheme mini-interpreter and therefore `Script-fu` scripts do not use
 ## GEGL operation development
 
 ## Custom data
+
+This section list all types of data usable to enhance GIMP
+functionalities. If you are interested to contribute default data to
+GIMP, be aware that we are looking for a very good base set, not an
+unfinite number of data for all possible usage (even the less common
+ones).
+
+Furthermore we only accept data on Libre licenses:
+
+* [Free Art License](https://artlibre.org/licence/lal/en/)
+* [CC0](https://creativecommons.org/publicdomain/zero/1.0/)
+* [CC BY](https://creativecommons.org/licenses/by/4.0/)
+* [CC BY-SA](https://creativecommons.org/licenses/by-sa/4.0/)
+
+Of course you are free to share data usable by GIMP on any license you
+want on your own. Providing them as third-party GIMP
+[extensions](#gimp-extensions-gex) is probably the best idea.
+
 ### Brushes
+
+GIMP currently supports the following brush formats:
+
+* GIMP Brush (GBR): format to store pixmap brushes
+* GIMP Brush Pipe (GIH): format to store a series of pixmap brushes
+* GIMP Generated Brush (VBR): format of "generated" brushes
+* GIMP Brush Pixmap (GPB): *OBSOLETE* format to store pixel brushes
+* MyPaint brushes v1 (MYB)
+* Photoshop ABR Brush
+* Paint Shop Pro JBR Brush
+
+We do fully support the GIMP formats obviously, as well as MyPaint
+brushes, since we use the official `libmypaint` library. We are not sure
+how well we support other third-party formats, especially if they had
+recent versions.
+
+If you are interested in brushes from a developer perspective, you are
+welcome to read specifications of GIMP formats:
+[GBR](specifications/gbr.txt), [GIH](specifications/gih.txt),
+[VBR](specifications/vbr.txt) or the obsolete [GPB](specifications/gpb.txt).
+
+If you want to contribute brushes to the official GIMP, be aware we
+would only accept brushes in non-obsolete GIMP formats. All these
+formats can be generated by GIMP itself from images.
+
+If you want to contribute MyPaint brushes, we recommend to propose them
+to the [MyPaint-brushes](https://github.com/mypaint/mypaint-brushes/)
+data project, which is also used by GIMP for its default MyPaint brush
+set.
+
+Otherwise, you are welcome to provide brush set in any format as
+third-party [extensions](#gimp-extensions-gex).
+
 ### Dynamics
+
+GIMP supports the GIMP Paint Dynamics format which can be generated from
+within GIMP.
+
 ### Patterns
+
+GIMP supports the GIMP Pattern format (PAT, whose
+[specification](specifications/pat.txt) is available for developers).
+
+This format can be exported by GIMP itself.
+
+Alternatively GIMP supports patterns from `GdkPixbuf` (TODO: get more
+information?).
+
+### Palettes
+
+GIMP supports the GIMP Palette format which can be generated from within
+GIMP.
+
+### Gradients
+
+GIMP supports the GIMP Gradient format (GGR, whose
+[specification](specifications/ggr.txt) is available for developers)
+which can be generated from within GIMP.
+
+Alternatively GIMP supports the SVG Gradient format.
+
 ### Themes
 ### Icon themes
 
+### Tool presets
+
+
 ## GIMP extensions (*.gex*)
 
 ## Continuous Integration
@@ -226,10 +313,28 @@ When writing code, any core developer is expected to follow:
 
 - GIMP's [coding style](/CODING_STYLE.md);
 - the [directory structure](#directory-structure-of-gimp-source-tree)
-- our [include rules](includes.txt)
+- our [header file inclusion policy](includes.txt)
+
+[GIMP's developer wiki](https://wiki.gimp.org/index.php/Main_Page) can
+also contain various valuable resources.
 
 ### Newcomers
 
+If this is your first time contributing to GIMP, you might be interested
+by these [instructions on submitting
+patches](https://gimp.org/bugs/howtos/submit-patch.html).
+
+If you are unsure what to work on, this [list of bugs for
+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
 
 ### Maintainers
@@ -254,6 +359,12 @@ Some of these duties include:
   reason, especially when getting close to make the development branch
   into the new stable branch. See also [os-support.txt](os-support.txt).
 - Maintain [milestones](gitlab-milestones.txt).
+- Maintain [NEWS](/NEWS) file. Any developer is actually encouraged to
+  update it when they do noteworthy changes, but this is the
+  maintainers' role to do the finale checks and make sure we don't miss
+  anything. The purpose of this rule is to make it as easy as possible
+  to make a GIMP release as looking in this file to write release notes
+  is much easier than reviewing hundreds of commits.
 
 ### Directory structure of GIMP source tree
 
@@ -325,5 +436,66 @@ 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/xcf/        | XCF file handling in **core**                                                    |
 
+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
+be considered as some kind dependency rule and should be updated.
 
 ### Advanced concepts
+
+#### XCF
+
+The `XCF` format is the core image format of GIMP, which mirrors
+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
+presentation of an artwork but for the work-in-progress processus.
+
+Developers are welcome to read the [specifications of XCF](specifications/xcf.txt).
+
+#### UI Framework
+
+GIMP has an evolved GUI framework, with a toolbox, dockables, menus…
+
+This [document describing how the GIMP UI framework functions and how it
+is implemented](ui-framework.txt) might be of interest.
+
+#### Contexts
+
+GIMP uses a lot a concept of "contexts". We recommend reading more about
+[how GimpContexts are used in GIMP](contexts.txt).
+
+#### Undo
+
+GIMP undo system can be challenging at times. This [quick overview of
+the undo system](undo.txt) can be of interest as a first introduction.
+
+#### Parasites
+
+GIMP has a concept of "parasite" data which basically correspond to
+persistent or semi-persistent data which can be attached to images or
+items (layers, channels, paths) within an image. These parasites are
+saved in the XCF format.
+
+Parasites can also be attached globally to the GIMP session.
+
+Parasite contents is format-free and you can use any parasite name,
+nevertheless GIMP itself uses parasite so you should read the
+[descriptions of known parasites](parasites.txt).
+
+#### Metadata
+
+GIMP supports Exif, IPTC and XMP metadata as well as various image
+format-specific metadata. The topic is quite huge and complex, if not
+overwhelming.
+
+This [old document](exif-handling.txt) might be of interest (or maybe
+not, it has not been recently reviewed and might be widely outdated; in
+any case, it is not a complete document at all as we definitely do a lot
+more nowadays). **TODO**: review this document and delete or update it
+depending of whether it still makes sense.
+
+#### Tagging
+
+Various data in GIMP can be tagged across sessions.
+
+This document on [how resource tagging in GIMP works](tagging.txt) may
+be of interest.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]