[gimp-web-devel/hugo: 1/2] hugo website translation




commit edfb696e9c6222697d71f891e18f5d8f908c39b7
Author: robin-swift <robinswiftart gmail com>
Date:   Tue Jul 19 20:01:23 2022 +0100

    hugo website translation

 .gitignore                                         |    6 -
 .hugo_build.lock                                   |    0
 Makefile                                           |   35 +-
 about.xml                                          |   30 -
 api/2.0/index.html                                 |   37 -
 bugs.xml                                           |   57 -
 changelog.xml                                      |   30 -
 config.toml                                        |  129 ++
 content/_index.md                                  |   21 +
 {api => content/api}/2.0/libtest/test.txt          |    0
 {style => content}/default.css                     |    6 +-
 {gimpcon => content/gimpcon}/2000/people-small.jpg |  Bin
 gimpcon2003.xml => content/gimpcon/2003/_index.md  |   12 +-
 .../gimpcon/2003/gimpcon2003-mins-1.md             |    9 +-
 .../gimpcon/2003/gimpcon2003-mins-2.md             |    9 +-
 .../gimpcon/2003/gimpcon2003-mins-3.md             |    9 +-
 .../gimpcon/2003/gimpcon2003-mins.md               |   13 +-
 {gimpcon => content/gimpcon}/2003/people-small.png |  Bin
 {gimpcon => content/gimpcon}/2003/people.png       |  Bin
 {gimpcon => content/gimpcon}/2004/Dave_Neary.jpg   |  Bin
 {gimpcon => content/gimpcon}/2004/Oyvind_Kolas.png |  Bin
 gimpcon2004.xml => content/gimpcon/2004/_index.md  |   10 +-
 {gimpcon => content/gimpcon}/2004/gnu-head-sm.jpg  |  Bin
 .../gimpcon}/2004/mac_gimp_logo4.png               |  Bin
 .../gimpcon}/2004/macosx_screenshot1_thumb.jpg     |  Bin
 gimpcon2006.xml => content/gimpcon/2006/_index.md  |    9 +-
 {gimpcon => content/gimpcon}/2006/meetings.jpg     |  Bin
 .../gimpcon}/2006/meetings_small.jpg               |  Bin
 {gimpcon => content/gimpcon}/2006/people.jpg       |  Bin
 {gimpcon => content/gimpcon}/2006/people_small.jpg |  Bin
 gimpcon.xml => content/gimpcon/_index.md           |   26 +-
 content/homepage/CHANGELOG.md                      |    7 +
 content/homepage/_index.md                         |   21 +
 content/homepage/about.md                          |   18 +
 content/homepage/bugs.md                           |   28 +
 content/homepage/changelog.md                      |   17 +
 content/homepage/cvs.md                            |   11 +
 content/homepage/faq.md                            |  433 +++++
 content/homepage/git.md                            |  138 ++
 content/homepage/lists.md                          |   12 +
 content/homepage/plug-in-template.md               |   24 +
 content/homepage/plug-ins.md                       |   19 +
 content/homepage/screenshots.md                    |   63 +
 standards.xml => content/homepage/standards.md     |   97 +-
 {images => content/images}/developer-barbg.png     |  Bin
 {images => content/images}/developer-left.png      |  Bin
 {images => content/images}/developer-right.png     |  Bin
 {images => content/images}/shadow.gif              |  Bin
 {images => content/images}/shadow.png              |  Bin
 {images => content/images}/wilber-icon.png         |  Bin
 {images => content/images}/wilber.png              |  Bin
 layout.xml => content/layout.xml                   |    0
 {screenshots => content/screenshots}/Makefile      |    0
 content/screenshots/gimp-curves-thumb.png          |  Bin 0 -> 77364 bytes
 .../screenshots}/gimp-curves.png                   |  Bin
 content/screenshots/gimp-empty-thumb.png           |  Bin 0 -> 52625 bytes
 .../screenshots}/gimp-empty.png                    |  Bin
 {screenshots => content/screenshots}/gimp-osx.jpeg |  Bin
 content/screenshots/gimp-print-thumb.png           |  Bin 0 -> 37582 bytes
 .../screenshots}/gimp-print.png                    |  Bin
 .../writing-a-plug-in/1.md                         |  107 +-
 .../writing-a-plug-in/2.md                         |  286 ++-
 .../writing-a-plug-in/3.md                         |   29 +-
 cvs.xml                                            |   19 -
 dtd/autolayout.dtd                                 |  101 -
 dtd/extensions.mod                                 |   51 -
 dtd/forms.mod                                      |  134 --
 dtd/layout.dtd                                     |   99 -
 dtd/namespaces.mod                                 |   54 -
 dtd/rddl.mod                                       |   40 -
 dtd/website-custom.dtd                             |   55 -
 dtd/website-full.dtd                               |   40 -
 dtd/website.dtd                                    | 1993 --------------------
 dtd/website.mod                                    |  109 --
 faq.xml                                            |  812 --------
 gimpcon2000.xml                                    |   56 -
 git.xml                                            |  145 --
 index.xml                                          |   37 -
 mailing-lists.xml                                  |   17 -
 plug-in-template.xml                               |   36 -
 plug-ins.xml                                       |   36 -
 public/404.html                                    |  131 ++
 public/about.html                                  |  142 ++
 public/api/2.0/libtest/test.txt                    |    1 +
 public/apple-touch-icon-144-precomposed.png        |  Bin 0 -> 570 bytes
 public/bugs.html                                   |  151 ++
 public/categories/index.html                       |  133 ++
 public/categories/index.xml                        |   11 +
 public/changelog.html                              |  139 ++
 public/css/hyde.css                                |  300 +++
 public/css/poole.css                               |  404 ++++
 public/css/print.css                               |   19 +
 public/css/syntax.css                              |   66 +
 public/cvs.html                                    |  136 ++
 public/default.css                                 |  300 +++
 public/favicon.png                                 |  Bin 0 -> 183 bytes
 public/gimpcon/2000/people-small.jpg               |  Bin 0 -> 49236 bytes
 public/gimpcon/2003/gimpcon2003-mins-1/index.html  |  372 ++++
 public/gimpcon/2003/gimpcon2003-mins-2/index.html  |  428 +++++
 public/gimpcon/2003/gimpcon2003-mins-3/index.html  |  313 +++
 public/gimpcon/2003/gimpcon2003-mins/index.html    |  260 +++
 public/gimpcon/2003/index.html                     |  141 ++
 public/gimpcon/2003/index.xml                      |   47 +
 public/gimpcon/2003/people-small.png               |  Bin 0 -> 244483 bytes
 public/gimpcon/2003/people.png                     |  Bin 0 -> 1047014 bytes
 public/gimpcon/2004/Dave_Neary.jpg                 |  Bin 0 -> 7489 bytes
 public/gimpcon/2004/Oyvind_Kolas.png               |  Bin 0 -> 50772 bytes
 public/gimpcon/2004/gnu-head-sm.jpg                |  Bin 0 -> 5286 bytes
 public/gimpcon/2004/index.html                     |  133 ++
 public/gimpcon/2004/index.xml                      |   11 +
 public/gimpcon/2004/mac_gimp_logo4.png             |  Bin 0 -> 11474 bytes
 public/gimpcon/2004/macosx_screenshot1_thumb.jpg   |  Bin 0 -> 14879 bytes
 public/gimpcon/2006/index.html                     |  133 ++
 public/gimpcon/2006/index.xml                      |   11 +
 public/gimpcon/2006/meetings.jpg                   |  Bin 0 -> 220989 bytes
 public/gimpcon/2006/meetings_small.jpg             |  Bin 0 -> 33965 bytes
 public/gimpcon/2006/people.jpg                     |  Bin 0 -> 281806 bytes
 public/gimpcon/2006/people_small.jpg               |  Bin 0 -> 38999 bytes
 public/gimpcon/index.html                          |  139 ++
 public/gimpcon/index.xml                           |   11 +
 public/git.html                                    |  142 ++
 public/homepage/faq/index.html                     |  446 +++++
 public/homepage/plug-ins/index.html                |  145 ++
 public/homepage/screenshots/index.html             |  143 ++
 public/images/developer-barbg.png                  |  Bin 0 -> 152 bytes
 public/images/developer-left.png                   |  Bin 0 -> 12513 bytes
 public/images/developer-right.png                  |  Bin 0 -> 20340 bytes
 public/images/shadow.gif                           |  Bin 0 -> 4364 bytes
 public/images/shadow.png                           |  Bin 0 -> 3403 bytes
 public/images/wilber-icon.png                      |  Bin 0 -> 765 bytes
 public/images/wilber.png                           |  Bin 0 -> 6340 bytes
 public/index.html                                  |  119 ++
 public/index.xml                                   |  189 ++
 public/layout.xml                                  |  118 ++
 public/lists.html                                  |  136 ++
 public/plug-in-template.html                       |  146 ++
 public/screenshots/Makefile                        |   19 +
 public/screenshots/gimp-curves-thumb.png           |  Bin 0 -> 77364 bytes
 public/screenshots/gimp-curves.png                 |  Bin 0 -> 89683 bytes
 public/screenshots/gimp-empty-thumb.png            |  Bin 0 -> 52625 bytes
 public/screenshots/gimp-empty.png                  |  Bin 0 -> 189512 bytes
 public/screenshots/gimp-osx.jpeg                   |  Bin 0 -> 171210 bytes
 public/screenshots/gimp-print-thumb.png            |  Bin 0 -> 37582 bytes
 public/screenshots/gimp-print.png                  |  Bin 0 -> 64286 bytes
 public/sitemap.xml                                 |   71 +
 public/standards.html                              |  265 +++
 public/tags/index.html                             |  133 ++
 public/tags/index.xml                              |   11 +
 public/writing-a-plug-in/1/index.html              |  512 +++++
 public/writing-a-plug-in/2/index.html              |  600 ++++++
 public/writing-a-plug-in/3/index.html              | 1014 ++++++++++
 public/writing-a-plug-in/index.html                |  139 ++
 public/writing-a-plug-in/index.xml                 |   45 +
 screenshots.xml                                    |   61 -
 themes/hyde/CHANGELOG.md                           |    7 +
 themes/hyde/LICENSE.md                             |    9 +
 themes/hyde/README.md                              |    1 +
 themes/hyde/archetypes/default.md                  |    6 +
 themes/hyde/go.mod                                 |    3 +
 themes/hyde/images/screenshot.png                  |  Bin 0 -> 447363 bytes
 themes/hyde/images/tn.png                          |  Bin 0 -> 145312 bytes
 themes/hyde/layouts/404.html                       |    4 +
 themes/hyde/layouts/_default/baseof.html           |   43 +
 themes/hyde/layouts/_default/list.html             |    9 +
 themes/hyde/layouts/_default/single.html           |    7 +
 themes/hyde/layouts/index.html                     |   18 +
 themes/hyde/layouts/partials/head.html             |   33 +
 themes/hyde/layouts/partials/head_fonts.html       |    1 +
 themes/hyde/layouts/partials/hook_head_end.html    |    0
 themes/hyde/layouts/partials/sidebar.html          |    8 +
 .../static/apple-touch-icon-144-precomposed.png    |  Bin 0 -> 570 bytes
 themes/hyde/static/css/hyde.css                    |  300 +++
 themes/hyde/static/favicon.png                     |  Bin 0 -> 183 bytes
 themes/hyde/theme.toml                             |   17 +
 writing-a-plug-in/1/architecture-small.png         |  Bin 10884 -> 0 bytes
 writing-a-plug-in/1/architecture.png               |  Bin 35991 -> 0 bytes
 writing-a-plug-in/1/hello.c                        |   84 -
 writing-a-plug-in/1/hello.png                      |  Bin 14753 -> 0 bytes
 writing-a-plug-in/1/plug-in-details-small.png      |  Bin 29792 -> 0 bytes
 writing-a-plug-in/1/plug-in-details.png            |  Bin 98454 -> 0 bytes
 writing-a-plug-in/1/plug-in-menu-small.png         |  Bin 61710 -> 0 bytes
 writing-a-plug-in/1/plug-in-menu.png               |  Bin 136406 -> 0 bytes
 writing-a-plug-in/2/GimpImage-small.png            |  Bin 10265 -> 0 bytes
 writing-a-plug-in/2/GimpImage.png                  |  Bin 39269 -> 0 bytes
 writing-a-plug-in/2/myblur1.c                      |  197 --
 writing-a-plug-in/2/myblur2.c                      |  193 --
 writing-a-plug-in/2/tiles-small.png                |  Bin 72313 -> 0 bytes
 writing-a-plug-in/2/tiles.png                      |  Bin 679094 -> 0 bytes
 writing-a-plug-in/3/blur_dialog1.png               |  Bin 12295 -> 0 bytes
 writing-a-plug-in/3/blur_dialog2-small.png         |  Bin 15670 -> 0 bytes
 writing-a-plug-in/3/blur_dialog2.png               |  Bin 84408 -> 0 bytes
 writing-a-plug-in/3/blur_select-small.png          |  Bin 46700 -> 0 bytes
 writing-a-plug-in/3/blur_select.png                |  Bin 199690 -> 0 bytes
 writing-a-plug-in/3/glade-tree-small.png           |  Bin 7250 -> 0 bytes
 writing-a-plug-in/3/glade-tree.png                 |  Bin 15925 -> 0 bytes
 writing-a-plug-in/3/myblur3.c                      |  282 ---
 writing-a-plug-in/3/myblur4.c                      |  394 ----
 writing-a-plug-in/3/myblur5.c                      |  431 -----
 xsl/VERSION                                        |    5 -
 xsl/autolayout.xsl                                 |  258 ---
 xsl/chunk-common.xsl                               |  182 --
 xsl/chunk-tabular.xsl                              |   12 -
 xsl/chunk-website.xsl                              |   12 -
 xsl/head.xsl                                       |  299 ---
 xsl/makefile-dep.xsl                               |  126 --
 xsl/mine.xsl                                       |  226 ---
 xsl/mytoc.xsl                                      |  325 ----
 xsl/myxref.xsl                                     |   56 -
 xsl/param.xsl                                      |  377 ----
 xsl/rss.xsl                                        |  140 --
 xsl/tabular.xsl                                    |  210 ---
 xsl/toc-tabular.xsl                                |  481 -----
 xsl/toc.xsl                                        |  287 ---
 xsl/website-common.xsl                             |  761 --------
 xsl/website.xsl                                    |  133 --
 xsl/xbel.xsl                                       |  111 --
 216 files changed, 9940 insertions(+), 10086 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 714e072..e69de29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +0,0 @@
-*.html
-autolayout.xml
-depends.tabular
-gimpcon
-screenshots/*thumb.png
-writing-a-plug-in
diff --git a/.hugo_build.lock b/.hugo_build.lock
new file mode 100644
index 0000000..e69de29
diff --git a/Makefile b/Makefile
index fdc8d92..a208b3b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,32 +1,5 @@
+all:
+       hugo -D
 
-SUBDIRS=screenshots
-
-PROC=xsltproc
-STYLEDIR=xsl
-SCRIPTDIR=scripts
-STYLESHEET=$(STYLEDIR)/mine.xsl
-
-all: subdirs website
-
-include depends.tabular
-
-subdirs: $(SUBDIRS)
-
-$(SUBDIRS):
-       $(MAKE) -C $@
-
-autolayout.xml: layout.xml
-       $(PROC) $(STYLEDIR)/autolayout.xsl $< > $@
-       $(MAKE) depends
-
-%.html: autolayout.xml
-       $(PROC) $(STYLESHEET) $(filter-out autolayout.xml,$^) $(TIDY) > $@
-
-depends: autolayout.xml
-       $(PROC) $(STYLEDIR)/makefile-dep.xsl $< > depends.tabular
-
-depends.tabular: layout.xml
-       touch $@
-       $(MAKE) depends
-
-.PHONY: clean subdirs $(SUBDIRS)
+test:
+       hugo server
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..d869e0e
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,129 @@
+baseURL = "https://developer.gimp.org/";
+languageCode = "en"
+title = "GIMP Developer Resources"
+author = "The GIMP Development Team"
+theme = "hyde"
+copyright = "Copyright 2003-2022 The GIMP Development Team"
+DefaultContentLanguage = "en"
+enableInlineShortcodes = true
+
+[taxanomies]
+category = "categories"
+tag = "tags"
+series = "series"
+
+[menu]
+[[menu.main]]
+  identifier = "git"
+  name = "Git"
+  url = "git.html"
+  weight = 10
+
+[[menu.main]]
+  identifier = "changelog"
+  name = "ChangeLog"
+  url = "https://gitlab.gnome.org/browse/gimp/log/";
+  weight = 20
+
+[[menu.main]]
+  identifier = "news"
+  name = "News"
+  url = "https://developer.gimp.org/NEWS";
+  weight = 21
+
+[[menu.main]]
+  identifier = "hacking"
+  name = "Hacking"
+  url = "https://developer.gimp.org/HACKING";
+  weight = 22
+
+[[menu.main]]
+  identifier = "gitlab"
+  name = "Gitlab"
+  url = "bugs.html"
+  weight = 30
+
+[[menu.main]]
+  identifier = "mailing-lists"
+  name = "Mailing Lists"
+  url = "lists.html"
+  weight = 40
+
+[[menu.main]]
+  identifier = "screenshots"
+  name = "Screenshots"
+  url = "screenshots.html"
+  weight = 50
+
+[[menu.main]]
+  identifier = "plug-in"
+  name = "Plug-In Development"
+  url = "plug-ins.html"
+  weight = 60
+
+[[menu.main]]
+  identifier = "api-ref"
+  name = "API Reference"
+  url = "api/2.0/index.html"
+  weight = 61
+
+[[menu.main]]
+  identifier = "writing-plug-ins"
+  name = "Writing A Plug-In"
+  url = "writing-api-plug-in/1.html"
+  weight = 62
+
+[[menu.main]]
+  identifier = "plug-in-template"
+  name = "Plug-In Template"
+  url = "plug-in-template.html"
+  weight = 63
+
+[[menu.main]]
+  identifier = "conference"
+  name = "Conference"
+  url = "gimpcon/index.html"
+  weight = 70
+
+[[menu.main]]
+  identifier = "gimpcon2000"
+  name = "GIMPCon 2000"
+  url = "gimpcon/2000/index.html"
+  weight = 71
+
+[[menu.main]]
+  identifier = "gimpcon2003"
+  name = "GIMPCon 2003"
+  url = "gimpcon/2003/index.html"
+  weight = 72
+
+[[menu.main]]
+  identifier = "gimpcon2004"
+  name = "GIMPCon 2004"
+  url = "gimpcon/2004/index.html"
+  weight = 73
+
+[[menu.main]]
+  identifier = "gimpcon2006"
+  name = "GIMPCon 2006"
+  url = "gimpcon/2006/index.html"
+  weight = 74
+
+[[menu.main]]
+  identifier = "faq"
+  name = "Developer FAQ"
+  url = "faq.html"
+  weight = 80
+
+[[menu.main]]
+  identifier = "standards"
+  name = "Standards"
+  url = "standards.html"
+  weight = 90
+
+[[menu.main]]
+  identifier = "about"
+  name = "About this Site"
+  url = "about.html"
+  weight = 100
+
diff --git a/content/_index.md b/content/_index.md
new file mode 100644
index 0000000..12ae0d2
--- /dev/null
+++ b/content/_index.md
@@ -0,0 +1,21 @@
++++
+title = "GIMP Development"
+date = "2022-07-19"
+description = "Online Resources for GIMP Developers"
+url = "index.html"
+author = "The GIMP Development Team"
++++
+
+This site tries to provide useful information for GIMP developers.
+No matter if you are into [plug-in development](plug-in.html)
+or want to dive into the
+[internals of the GIMP core](/api/2.0/app/app-hierarchy-part.html),
+you should find your way from here.
+
+If you're looking for the main GIMP website you should visit
+[www.gimp.org](https://www.gimp.org).
+
+The GIMP source code is versioned with git. You
+can [browse the source](https://gitlab.gnome.org/GNOME/gimp/)
+online.
+
diff --git a/api/2.0/libtest/test.txt b/content/api/2.0/libtest/test.txt
similarity index 100%
rename from api/2.0/libtest/test.txt
rename to content/api/2.0/libtest/test.txt
diff --git a/style/default.css b/content/default.css
similarity index 95%
rename from style/default.css
rename to content/default.css
index de43de1..597c8cd 100644
--- a/style/default.css
+++ b/content/default.css
@@ -4,9 +4,9 @@
  * so keep a backup of this file while working with it. Niklas */
 
 /* Copyright (C) 2002-2006 by The GIMP Web Team - Contributions by:
- * Ville Pätsi (drc), Henrik Brix Andersen (brix), Carol Spears
- * (carol), Niklas Mattisson (scizzo), Raphaël Quinet (raphael),
- * Branko Collin (branko), Sven Neumann (neo) and Øyvind Kolås
+ * Ville Pätsi (drc), Henrik Brix Andersen (brix), Carol Spears
+ * (carol), Niklas Mattisson (scizzo), Raphaël Quinet (raphael),
+ * Branko Collin (branko), Sven Neumann (neo) and Øyvind Kolås
  * (pippin)
  *
  * This style sheet and corresponding site layout are designed to be
diff --git a/gimpcon/2000/people-small.jpg b/content/gimpcon/2000/people-small.jpg
similarity index 100%
rename from gimpcon/2000/people-small.jpg
rename to content/gimpcon/2000/people-small.jpg
diff --git a/gimpcon2003.xml b/content/gimpcon/2003/_index.md
similarity index 83%
rename from gimpcon2003.xml
rename to content/gimpcon/2003/_index.md
index 565e6c0..0465164 100644
--- a/gimpcon2003.xml
+++ b/content/gimpcon/2003/_index.md
@@ -1,13 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" [
-<!ENTITY minutes SYSTEM "gimpcon2003-mins.xml" NDATA XML>
-]>
++++
+title = "GIMP Developers Conference 2003"
++++
 
-<webpage id="gimpcon2003" lang="en">
-
-  <head>
-    <title>GIMP Developers Conference 2003</title>
     <titleabbrev>GIMPCon 2003</titleabbrev>
     <summary>Chaos Communication Camp, near Berlin</summary>
   </head>
diff --git a/gimpcon2003-mins-1.xml b/content/gimpcon/2003/gimpcon2003-mins-1.md
similarity index 98%
rename from gimpcon2003-mins-1.xml
rename to content/gimpcon/2003/gimpcon2003-mins-1.md
index d51e16b..5d16f64 100644
--- a/gimpcon2003-mins-1.xml
+++ b/content/gimpcon/2003/gimpcon2003-mins-1.md
@@ -1,10 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" >
++++
+author = "The GIMP Development Team"
++++
 
-<webpage id="gimpcon2003-mins-1" lang="en">
-
-  <head>
     <title>The First Big Serious Meeting of GIMPCon 2003</title>
     <titleabbrev>First Meeting</titleabbrev>
     <summary>Minutes of the first GIMPCon 2003 Meeting</summary>
diff --git a/gimpcon2003-mins-2.xml b/content/gimpcon/2003/gimpcon2003-mins-2.md
similarity index 98%
rename from gimpcon2003-mins-2.xml
rename to content/gimpcon/2003/gimpcon2003-mins-2.md
index 2624d2c..c20d123 100644
--- a/gimpcon2003-mins-2.xml
+++ b/content/gimpcon/2003/gimpcon2003-mins-2.md
@@ -1,10 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" >
++++
+author = "The GIMP Development Team"
++++
 
-<webpage id="gimpcon2003-mins-2" lang="en">
-
-  <head>
     <title>The Second Big Serious Meeting of GIMPCon2003</title>
     <titleabbrev>Second Meeting</titleabbrev>
     <summary>Minutes of the second GIMPCon 2003 Meeting</summary>
diff --git a/gimpcon2003-mins-3.xml b/content/gimpcon/2003/gimpcon2003-mins-3.md
similarity index 97%
rename from gimpcon2003-mins-3.xml
rename to content/gimpcon/2003/gimpcon2003-mins-3.md
index b5ff419..b1b3da9 100644
--- a/gimpcon2003-mins-3.xml
+++ b/content/gimpcon/2003/gimpcon2003-mins-3.md
@@ -1,10 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" >
++++
+author = "The GIMP Development Team"
++++
 
-<webpage id="gimpcon2003-mins-3" lang="en">
-
-  <head>
     <title>The Third Big Serious Meeting of GIMPCon 2003</title>
     <titleabbrev>Third Meeting</titleabbrev>
     <summary>Minutes of the third GIMPCon 2003 Meeting</summary>
diff --git a/gimpcon2003-mins.xml b/content/gimpcon/2003/gimpcon2003-mins.md
similarity index 91%
rename from gimpcon2003-mins.xml
rename to content/gimpcon/2003/gimpcon2003-mins.md
index 91cd87e..f1c68eb 100644
--- a/gimpcon2003-mins.xml
+++ b/content/gimpcon/2003/gimpcon2003-mins.md
@@ -1,14 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" [
-<!ENTITY gimpcon2003-mins-1 SYSTEM "gimpcon2003-mins-1.xml" NDATA XML>
-<!ENTITY gimpcon2003-mins-2 SYSTEM "gimpcon2003-mins-2.xml" NDATA XML>
-<!ENTITY gimpcon2003-mins-3 SYSTEM "gimpcon2003-mins-3.xml" NDATA XML>
-]>
++++
+author = "The GIMP Development Team"
++++
 
-<webpage id="minutes" lang="en">
-
-  <head>
     <title>Minutes of The GIMP Developers Conference 2003</title>
     <titleabbrev>Minutes</titleabbrev>
     <summary>Minutes of the GIMPCon 2003 Meetings</summary>
diff --git a/gimpcon/2003/people-small.png b/content/gimpcon/2003/people-small.png
similarity index 100%
rename from gimpcon/2003/people-small.png
rename to content/gimpcon/2003/people-small.png
diff --git a/gimpcon/2003/people.png b/content/gimpcon/2003/people.png
similarity index 100%
rename from gimpcon/2003/people.png
rename to content/gimpcon/2003/people.png
diff --git a/gimpcon/2004/Dave_Neary.jpg b/content/gimpcon/2004/Dave_Neary.jpg
similarity index 100%
rename from gimpcon/2004/Dave_Neary.jpg
rename to content/gimpcon/2004/Dave_Neary.jpg
diff --git a/gimpcon/2004/Oyvind_Kolas.png b/content/gimpcon/2004/Oyvind_Kolas.png
similarity index 100%
rename from gimpcon/2004/Oyvind_Kolas.png
rename to content/gimpcon/2004/Oyvind_Kolas.png
diff --git a/gimpcon2004.xml b/content/gimpcon/2004/_index.md
similarity index 97%
rename from gimpcon2004.xml
rename to content/gimpcon/2004/_index.md
index 1a3432b..3914f36 100644
--- a/gimpcon2004.xml
+++ b/content/gimpcon/2004/_index.md
@@ -1,11 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd">
++++
+title = "GIMP Developers Conference 2004"
++++
 
-<webpage id="gimpcon2004" lang="en">
-
-  <head>
-    <title>GIMP Developers Conference 2004</title>
     <titleabbrev>GIMPCon 2004</titleabbrev>
     <summary>GUADEC, Kristiansand</summary>
   </head>
diff --git a/gimpcon/2004/gnu-head-sm.jpg b/content/gimpcon/2004/gnu-head-sm.jpg
similarity index 100%
rename from gimpcon/2004/gnu-head-sm.jpg
rename to content/gimpcon/2004/gnu-head-sm.jpg
diff --git a/gimpcon/2004/mac_gimp_logo4.png b/content/gimpcon/2004/mac_gimp_logo4.png
similarity index 100%
rename from gimpcon/2004/mac_gimp_logo4.png
rename to content/gimpcon/2004/mac_gimp_logo4.png
diff --git a/gimpcon/2004/macosx_screenshot1_thumb.jpg b/content/gimpcon/2004/macosx_screenshot1_thumb.jpg
similarity index 100%
rename from gimpcon/2004/macosx_screenshot1_thumb.jpg
rename to content/gimpcon/2004/macosx_screenshot1_thumb.jpg
diff --git a/gimpcon2006.xml b/content/gimpcon/2006/_index.md
similarity index 99%
rename from gimpcon2006.xml
rename to content/gimpcon/2006/_index.md
index 55fea55..70e3a41 100644
--- a/gimpcon2006.xml
+++ b/content/gimpcon/2006/_index.md
@@ -1,10 +1,7 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd">
++++
+author = "The GIMP Development Team"
++++
 
-<webpage id="gimpcon2006" lang="en">
-  
-  <head>
     <title>GIMP Developers Conference 2006</title>
     <titleabbrev>GIMPCon 2006</titleabbrev>
     <summary>Libre Graphics Meeting, Lyon</summary>
diff --git a/gimpcon/2006/meetings.jpg b/content/gimpcon/2006/meetings.jpg
similarity index 100%
rename from gimpcon/2006/meetings.jpg
rename to content/gimpcon/2006/meetings.jpg
diff --git a/gimpcon/2006/meetings_small.jpg b/content/gimpcon/2006/meetings_small.jpg
similarity index 100%
rename from gimpcon/2006/meetings_small.jpg
rename to content/gimpcon/2006/meetings_small.jpg
diff --git a/gimpcon/2006/people.jpg b/content/gimpcon/2006/people.jpg
similarity index 100%
rename from gimpcon/2006/people.jpg
rename to content/gimpcon/2006/people.jpg
diff --git a/gimpcon/2006/people_small.jpg b/content/gimpcon/2006/people_small.jpg
similarity index 100%
rename from gimpcon/2006/people_small.jpg
rename to content/gimpcon/2006/people_small.jpg
diff --git a/gimpcon.xml b/content/gimpcon/_index.md
similarity index 63%
rename from gimpcon.xml
rename to content/gimpcon/_index.md
index fcdf912..2fe2570 100644
--- a/gimpcon.xml
+++ b/content/gimpcon/_index.md
@@ -1,29 +1,16 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" [
-<!ENTITY gimpcon2000 SYSTEM "gimpcon2000.xml" NDATA XML>
-<!ENTITY gimpcon2003 SYSTEM "gimpcon2003.xml" NDATA XML>
-<!ENTITY gimpcon2004 SYSTEM "gimpcon2004.xml" NDATA XML>
-<!ENTITY gimpcon2006 SYSTEM "gimpcon2006.xml" NDATA XML>
-]>
++++
+title = "GIMP Developer Conferences"
+abbrev = "Conference"
+description = "Hanging out with GIMP developers."
++++
 
-<webpage id="gimpcon" lang="en">
 
-  <head>
-    <title>GIMP Developer Conferences</title>
-    <titleabbrev>Conference</titleabbrev>
-    <summary>Hanging out with GIMP developers</summary>
-  </head>
-
-  <para>
     The GIMP Developers Conference, also known as GIMPCon, is a
     gathering of <ulink url="http://www.gimp.org";>GIMP</ulink> and
     <ulink url="http://www.gegl.org";>GEGL</ulink> developers from all
     over the World. This is where we get together and discuss the
     future development, hack on GIMP and meet GIMP users.
-  </para>
 
-  <para>
     <itemizedlist>
       <listitem>
         <olink targetdocent="gimpcon2000">GIMPCon 2000</olink>, June
@@ -45,6 +32,3 @@
         March 17-18-19 in Lyon, France.
       </listitem>
     </itemizedlist>
-  </para>
-
-</webpage>
diff --git a/content/homepage/CHANGELOG.md b/content/homepage/CHANGELOG.md
new file mode 100644
index 0000000..891329a
--- /dev/null
+++ b/content/homepage/CHANGELOG.md
@@ -0,0 +1,7 @@
+# Changelog
+
+## Version 1.0
+
+- Due to the switch to the base template feature the minimum required version of Hugo changed to v0.21
+- Support for Google Analytics have been added
+- Hugo's internal Disqus template replaced the custom one of this theme. The Disqus shortname now has to be 
defined outsite the `[params]` blog
diff --git a/content/homepage/_index.md b/content/homepage/_index.md
new file mode 100644
index 0000000..12ae0d2
--- /dev/null
+++ b/content/homepage/_index.md
@@ -0,0 +1,21 @@
++++
+title = "GIMP Development"
+date = "2022-07-19"
+description = "Online Resources for GIMP Developers"
+url = "index.html"
+author = "The GIMP Development Team"
++++
+
+This site tries to provide useful information for GIMP developers.
+No matter if you are into [plug-in development](plug-in.html)
+or want to dive into the
+[internals of the GIMP core](/api/2.0/app/app-hierarchy-part.html),
+you should find your way from here.
+
+If you're looking for the main GIMP website you should visit
+[www.gimp.org](https://www.gimp.org).
+
+The GIMP source code is versioned with git. You
+can [browse the source](https://gitlab.gnome.org/GNOME/gimp/)
+online.
+
diff --git a/content/homepage/about.md b/content/homepage/about.md
new file mode 100644
index 0000000..6da9a09
--- /dev/null
+++ b/content/homepage/about.md
@@ -0,0 +1,18 @@
++++
+title = "About this Site"
+description = "About this Site."
+date = "2022-07-19"
+author = "The GIMP Development Team"
+url = "about.html"
++++
+
+The look of this site was borrowed from
+[www.gimp.org](http://www.gimp.org/).
+Under the hood it is based on
+[DocBook Website](http://docbook.sourceforge.net/projects/website/).
+If you are curious, have a look at the [Markdown source](about.md)
+of the page you are reading.
+
+If you want to help us with developer.gimp.org, clone the
+repository `gimp-web-devel` from [git](git).
+
diff --git a/content/homepage/bugs.md b/content/homepage/bugs.md
new file mode 100644
index 0000000..c7f8d20
--- /dev/null
+++ b/content/homepage/bugs.md
@@ -0,0 +1,28 @@
++++
+title = "Bug Tracking System"
+description = "Bugs, bugs, bugs"
+date = "2022-07-19"
+abbrev = "Gitlab"
+url = "bugs.html"
++++
+
+The GIMP project uses Gitlab's
+[issues](https://gitlab.gnome.org/GNOME/gimp/-/issues),
+to coordinate bug reports. Gitlab is also used for enhancement requests
+and the preferred way to submit patches for the GIMP is make a
+[merge request](https://gitlab.gnome.org/GNOME/gimp/-/merge_requests).
+
+On [www.gimp.org](https://www.gimp.org) you can find a document describing
+[HOW TO Report GIMP Bugs](https://www.gimp.org/bugs/howtos/bugzilla.html).
+You can also find a document that describes
+[How To Create and Submit a Patch](https://www.gimp.org/bugs/howtos/submit-patch.html).
+
+Below is a list of links to get you started with Gitlab:
+
+* [List of Open Bugs](https://gitlab.gnome.org/GNOME/gimp/-/issues)
+* [List of Open Bugs (excluding enhancement 
requests)](https://gitlab.gnome.org/GNOME/gimp/-/issues/?label_name%5B%5D=1.%20Bug)
+* [Tables of Open/Closed Bugs with milestone 
2.10.34](https://gitlab.gnome.org/GNOME/gimp/-/milestones/20#tab-issues)
+* [Tables of Open/Closed Bugs with milestone 
2.99.12](https://gitlab.gnome.org/GNOME/gimp/-/milestones/19#tab-issues)
+* [Issues without an associated, planned version 
number.](https://gitlab.gnome.org/GNOME/gimp/-/milestones/1#tab-issues)
+
+
diff --git a/content/homepage/changelog.md b/content/homepage/changelog.md
new file mode 100644
index 0000000..435b3cd
--- /dev/null
+++ b/content/homepage/changelog.md
@@ -0,0 +1,17 @@
+---
+title: "GIMP ChangeLog"
+date: 2022-07-20T19:04:06+01:00
+draft: true
+abbrev: "ChangeLog"
+description: "Keeping an eye on the development."
+type: new
+url: changelog.html
+---
+
+The [GIT repository](https://gitlab.gnome.org/GNOME/gimp/commits/master)
+lists all changes in detail. The list below shows the latest
+commits.  It is generated from the RSS feed delivered by
+the [CIA](https://cia.vc/).
+
+<rss feed="http://cia.vc/stats/project/gnome/gimp/.rss?ver=1"; />
+
diff --git a/content/homepage/cvs.md b/content/homepage/cvs.md
new file mode 100644
index 0000000..e87e879
--- /dev/null
+++ b/content/homepage/cvs.md
@@ -0,0 +1,11 @@
+---
+title: "CVS"
+date: 2022-07-19T20:45:01+01:00
+draft: false
+description: "CVS migrated to Subversion."
+url: cvs.html
+---
+
+GIMP doesn't use CVS any longer. The source code repository has been
+migrated to [git](git).
+
diff --git a/content/homepage/faq.md b/content/homepage/faq.md
new file mode 100644
index 0000000..218e14c
--- /dev/null
+++ b/content/homepage/faq.md
@@ -0,0 +1,433 @@
+---
+title: "Frequently Asked Questions"
+date: 2022-07-20T19:04:11+01:00
+draft: true
+abbrev: "Developer FAQ"
+description: "New to GIMP Development?"
+---
+
+Below you will find a collection of frequently asked questions
+regarding development of the GIMP.
+
+## GIMP Development
+
+#### Who coordinates GIMP development?
+
+GIMP development is coordinated by Wilber the GIMP along
+with a loosely knit team of GIMP developers.  The
+developers can be reached through the GIMP developer
+<olink targetdocent="lists">mailing list</olink>.
+
+#### How can I become a GIMP developer?
+
+If you are a developer who wants to start contributing
+code to the GIMP, the best way to get to know its
+structure is by fixing bugs reported in Bugzilla.  Pick a
+bug, perhaps ask the advice of another developer as to
+whether he/she thinks it will be an easy bug or not, and
+then fix it.  Sounds easy, doesn't it?
+
+After helping with a couple of bugs, people will start to
+recognize your immense talent, and you will be on your way
+to becoming a GIMP hacker.  Any time you feel able, you
+can pick a smaller enhancement request and have a go at
+implementing it.  It's that easy.
+
+#### Where can I discuss GIMP development?
+
+There are several <olink targetdocent="lists">mailing
+lists</olink> associated with the GIMP project.
+Developments related issues can be brought up on the GIMP
+Developer mailing list.
+
+The GIMP has its own IRC channel on GIMPNet where most of
+the active developers hang out.  Join us in #gimp on
+<ulink url="irc:://irc.gimp.org:6667/#gimp">irc.gimp.org</ulink>.
+
+Every once in a while the GIMP developers get together for
+a few days to throw a GIMP Developers Conference, also
+referred to as <olink
+targetdocent="gimpcon">GIMPCon</olink>.
+
+#### Where can I find documentation for the GIMP API?
+
+You can pass <command>--enable-gtk-doc</command> to the gimp
+`configure` script.  This requires having
+<ulink url="ftp://ftp.gtk.org/pub/gtk-doc/";>gtk-doc</ulink>
+installed.  After running <command>make</command> you can
+find the GIMP API reference in the
+`devel-docs` directory.
+
+Pre-generated API documentation is included in the
+official GIMP tarballs.
+
+The API reference will normally be installed in
+`PREFIX/share/gtk-doc/html`.  An on
+line version of the GIMP API reference can be found
+<ulink url="api/2.0/">here</ulink>.
+
+#### How do I make a stack trace?
+
+A stack trace is a list of function calls that leads to
+some point in the program. Debugging tools like <ulink
+url="http://www.gnu.org/software/gdb/gdb.html";>gdb</ulink>
+can get stack traces from crashed applications so that
+developers can figure out what went wrong. By including a
+stack trace with your bug report, it will be much easier
+for the developers to fix the reported problem.
+
+Information on how to make a stack trace can be found in
+the document <ulink
+url="http://live.gnome.org/GettingTraces";>Capturing
+Stack Traces</ulink>.
+
+#### What is the best way to submit a patch?
+
+The best way to submit a patch is to open a bug report in
+Bugzilla and attach the patch there along with a
+description of what it does and why it should be applied.
+
+An introduction to how this is done can be found in the
+<ulink
+url="http://www.gimp.org/bugs/howtos/submit-patch.html";>
+How To Create and Submit a Patch</ulink> document.
+
+#### What is the preferred coding style used in GIMP?
+
+We encourage you to follow the GIMP coding style
+throughout the GIMP project.  For the core components
+(application and libs) this coding style is enforced.  The
+GIMP coding style is defined as follows:
+
+* Function names are lowercase, words separated by underscores.
+* Macros and enums are all uppercase, words separated by underscores
+* Types are all words capitalized, no separators between words.
+* All functions in header files need to be prototyped.
+* Indentation rules are GNU coding style, in particular:
+  * 2 characters indentation level
+  * Do not use tabs (of course your editor can use tabs, but it should write them to file as 8 spaces each).
+  * Opening brackets are on a new line and indented one level.
+  * Function header have the return type on one line, the name starting in the first column of the following 
line.  All parameters are prototyped and there's a new line for each.
+
+Try to make use of GLib's object system as much as
+possible.  Do not create wrappers around functions of
+parent classes.  If you end up duplicating code, try to
+create a common parent class and implement the common
+methods there.
+
+Don't include headers in headers except where unavoidable
+(e.g. for deriving objects).  Opaque typedefs go to
+`app/base/base-types.h`, `app/core/core-types.h` etc.  See
+`devel-docs/includes.txt` for a
+detailed description of the include policy.
+
+Don't use the GTK wrappers around the GLib object and
+signal system.
+
+The above coding style, along with other useful
+information, is documented in the file <ulink
+url="HACKING">HACKING</ulink>.
+
+#### How can I configure my editor for this coding style?
+
+Your editor will not be able to do everything for you, but
+you can configure most editors so that they use two spaces
+for indentation, use spaces instead of tabs, etc.
+
+* If you are using Emacs, you can insert the following settings into your `~/.emacs` file:
+
+```
+;; Merge this into your custom-set-variables section if you already have one
+(custom-set-variables
+;; Syntax highlighting
+'(global-font-lock-mode t nil (font-lock))
+'(show-paren-mode t nil (paren))
+)
+;; use UTF-8 by default
+(prefer-coding-system 'mule-utf-8)
+;; use the GNU style for C files, spaces instead of tabs, highlight bad spaces
+(setq c-mode-common-hook '(lambda () (c-set-style "gnu")
+                (setq indent-tabs-mode nil)
+                (setq show-trailing-whitespace t))) ]]></programlisting>
+```
+
+* If you are using Vim, you can insert the following settings into your `~/.vimrc` file:
+
+```
+syn on           " syntax highlighting
+set expandtab    " use spaces instead of tabs
+set shiftwidth=2 " default indentation is 2 spaces ]]></programlisting>
+```
+
+* If you are using another editor and you know how to configure it correctly, please tell us about it on the 
GIMP developer <olink targetdocent="lists">mailing list</olink> so that we can update this FAQ.
+
+#### Who coordinates the GIMP translation efforts?
+
+Any help with translations is appreciated.  If you want to
+help, please get in contact with the people from the
+<ulink
+url="http://developer.gnome.org/projects/gtp/";>GNOME
+Translation Project</ulink> who coordinate all translation
+efforts for projects hosted in the GNOME GIT repository.
+
+More information about GIMP and localisation can be found
+in the file <ulink url="README.i18n">README.i18n</ulink>.
+
+
+#### How can I support GIMP development?
+
+By using GIMP and reporting any bugs you find to
+<ulink url="http://bugzilla.gnome.org/";>Bugzilla</ulink>
+you're helping a great deal.  But there are other
+non-technical ways of supporting the development of The
+GIMP as well.
+
+GIMP has a web site, application documentation, lots of
+tutorials, and more.  Unfortunately, as GIMP develops over
+time, much of this documentation needs to be re-written or
+freshened up, documentation needs to be added for new
+functionality, the web site needs to get a new lick of
+paint and so on.
+
+If you're interested in helping out you should drop an
+e-mail to the GIMP developer <olink
+targetdocent="lists">mailing list</olink> offering your
+help.
+
+## Plug-In Development
+
+#### Is there a plug-in template available?
+
+Yes. An official GIMP plug-in template is available in
+the <ulink
+url="http://git.gnome.org/cgit/gimp-plugin-template/";>gimp-plugin-template
+</ulink> git module.  Snapshots are available at <ulink
+url="ftp://ftp.gimp.org/pub/gimp/plugin-template/";>ftp.gimp.org</ulink>.
+
+#### How about a Script-Fu template?
+
+Yes.  Simon Budig has written a fill-in-the-blanks
+Script-Fu template which is available <ulink
+url="http://www.home.unix-ag.org/simon/files/script-fu-template.scm";>here</ulink>.
+
+#### How do I get my plug-in included in the GIMP?
+
+The best way to make your plug-in available to the World
+is to submit it to <ulink
+url="http://registry.gimp.org/";>the GIMP Plug-In
+Registry</ulink>.
+
+If you are certain that your plug-in will be useful to all
+GIMP users, then you can ask the GIMP developers to
+consider it for inclusion in future GIMP release.  The
+best way to do that is to suggest it on the GIMP developer
+<olink targetdocent="lists">mailing list</olink> or to
+open an enhancement request in Bugzilla. However, we would
+like to limit the number of plug-ins included in the
+standard distribution and encourage all users to use the
+registry.
+
+#### How do I debug a GIMP plug-in?
+
+Eeek! The plug-in you're working on has a bug in it! And
+the fix isn't completely obvious, so you want to use
+debugger to see what is going on.  But hmm, how does one
+start a plug-in under a debugger if GIMP is the one who is
+starting the plug-in...
+
+To address this issue, libgimp has some hooks controlled
+by the `GIMP_PLUGIN_DEBUG` environment
+variable.  The idea is that you can attach a debugger to
+the pid of the plug-in you want to debug.  The process is
+described in the file <ulink
+url="debug-plug-ins.txt">debug-plug-ins.txt</ulink>.
+
+
+#### Will the plug-in I compiled against 2.0 work with GIMP 2.2 or 2.4?
+
+The short answer is yes. GIMP 2.2 and 2.4 are binary
+compatible with plug-ins compiled for GIMP 2.0. The API is
+also backwards source compatible, so your plug-in should
+also compile cleanly against GIMP 2.2 and 2.4.
+
+If the plug-in you compiled for 2.0 does not work with 2.2
+or 2.4, there is one change which has been made which is
+not backwards compatible, since the old behaviour was
+considered incorrect. If you create a temporary drawable,
+using for example gimp_layer_new(), you are now required
+to add it to an image before calling any functions with
+the drawable as an argument.
+
+## GIT
+
+#### What should I put in the commit message when doing a git commit?
+
+Please put a short explanation of the change on the first line.
+Then, after an empty line, you can describe the change in more
+detail using as many lines as you need. Try not to exceed 72
+colums.
+
+If the commit fixes a bug or part of a bug please use the
+bug number and description as the first line of the commit
+message. It's most convenient to just copy the line from the
+Bugzilla bug page.
+
+## GEGL
+
+#### What is GEGL?
+
+GEGL is the <ulink url="http://www.gegl.org";>Generic
+Graphical Library</ulink>.  It is supposed to replace the
+handling of various image processing tasks in GIMP in
+a not too distant future (planned for GIMP 2.6).
+
+#### What will GEGL be able to do?
+
+GEGL will be a general image processing library.  It uses
+a directed acyclic graph, a DAG, to represent image
+processing operations.  In the DAG, images are edges, and
+operations are nodes.  It takes advantage of this DAG to
+minimize regions which are processed, provide efficient
+caching of operations, and efficient redrawing when a
+parameter of the graph changes.
+
+GEGL should also be independent of the data type being
+processed and will be able to handle high bit depth
+images, ICC profiles and parallel processing of image
+tiles.
+
+#### What does all that gibberish mean for GIMP?
+
+Many highly requested features of the GIMP will be easier
+to do using GEGL.  Layer effects, layer groups, and
+adjustment layers are quite easily represented (and
+efficiently calculated) using the DAG organization of GEGL.
+CMYK and high bit depth support will be easier because
+GEGL does not make the same assumptions about color spaces
+and data types that the GIMP does.
+
+The reusability of image processing operations means that
+plug-ins will be able to be designed in a much more modular
+way.  The brush system will be able to become more
+flexible, especially when filter plug-ins are able to be
+used as procedural brush plug-ins.
+
+## Bugzilla
+
+#### What is Bugzilla?
+
+The GIMP project uses <ulink
+url="http://bugzilla.gnome.org";>GNOME Bugzilla</ulink> for
+tracking of bug reports, enhancement requests etc.
+
+A beginners tutorial describing how to report a bug can be
+found in the <ulink
+url="http://www.gimp.org/bugs/howtos/bugzilla.html";>
+How To Report GIMP Bugs</ulink> document.
+
+An easy to use interface to reporting GIMP bugs can be
+found on <ulink
+url="http://bugs.gimp.org";>bugs.gimp.org</ulink>.
+
+#### What is the meaning of the NEEDINFO status code inBugzilla?
+
+If the status of a bug is changed to NEEDINFO it means the
+GIMP developers need more information from the bug
+reporter in order to resolve the bug.
+
+More information about the meaning of the Bugzilla status
+field codes can be found in <ulink
+url="http://bugzilla.gnome.org/page.cgi?id=bug-status.html";>
+A Bug's Life Cycle</ulink>.
+
+#### What is the best way to refer to a bug in Bugzilla?
+
+The best way to refer to a bug is <quote>bug
+#nnnnn</quote>, where nnnnn is the bug number.  Using
+<quote>bug</quote> before the number allows Bugzilla to
+link to the corresponding bug report automatically.  Using
+<quote>#</quote> before the number is optional for
+Bugzilla but makes it easier to locate references to bug
+reports in the ChangeLog or in e-mails.
+
+When referencing multiple bugs, it is better to be a bit
+redundant by writing <quote>bug #xxxxx, bug #yyyyy and bug
+#zzzzz</quote> instead of <quote>bugs #xxxxx, #yyyyy and
+#zzzzz</quote> in order to allow Bugzilla to link all bugs
+automatically.
+
+#### What is the proper way of handling duplicate bug reports?
+
+A bug report describing the same bug as a previous bug
+report should be marked as DUPLICATE of the older one.
+In some exceptional cases, it is possible to mark an old
+bug report as DUPLICATE of a newer one (e.g., when the
+newer bug report has a significantly better description
+than the older one).
+
+Another exception is when the same person submits the same
+bug report several times (same description): in this case,
+it is better to mark the additional copies of the bug
+report as INVALID in order to avoid inflating the
+statistics about the number of duplicates.
+
+#### What is the proper way of marking a bug as RESOLVED?
+
+When fixing a bug, always mention the bug number in the
+commit message.  Once the changes are in git, paste the
+relevant part of the commit message (or all of it) in the
+comment field and mark the bug as RESOLVED FIXED.
+These cross-references help a lot when trying to find
+when a bug was fixed, its relations to other bugs, and
+potential regressions.
+
+A bug that is fixed in git or in an unstable release
+should be marked as RESOLVED FIXED.  Optionally, the
+reporter or someone other than the one who fixed the bug
+can mark it as VERIFIED after some testing.  When the fix
+is part of a stable release, it can be marked as CLOSED.
+
+This is explained further in <ulink
+url="http://bugzilla.gnome.org/page.cgi?id=bug-status.html";>A
+Bug's Life Cycle</ulink> except for the difference between
+stable and unstable releases.
+
+## Miscellaneous
+
+#### Where can I learn more about the GObject system used by GIMP?
+
+The
+<ulink url="http://library.gnome.org/devel/gobject/stable/";>GObject
+documentation</ulink> has a
+nice <ulink url="http://library.gnome.org/devel/gobject/stable/howto-gobject.html";>tutorial</ulink> that you 
might want to have a look at.
+
+#### Where can I learn more about color spaces etc?
+
+Charles Poynton has collected a set of <ulink
+url="http://www.poynton.com/ColorFAQ.html";>Frequently
+Asked Questions about Color</ulink>.
+
+#### Where can I learn more about image manipulation algorithms?
+
+A good source of information is the
+comp.graphics.algorithms list of <ulink
+url="http://www.faqs.org/faqs/graphics/algorithms-faq/";>Frequently
+Asked Questions</ulink>.
+
+#### Is there a GIMP user FAQ available?
+
+There is no user FAQ available at the moment.  However
+there has been discussions about creating one.  If you
+would like to help with this please drop a mail on the
+GIMP developer <olink targetdocent="lists">mailing
+list</olink>.
+
+#### How can I contribute to this FAQ?
+
+If you would like to contribute to this FAQ, send an
+e-mail to the GIMP developer [mailing list](lists) with the
+exact text you think should be included (both question and
+answer).
+
+With your help this FAQ will grow and become more useful.
+
diff --git a/content/homepage/git.md b/content/homepage/git.md
new file mode 100644
index 0000000..19477cd
--- /dev/null
+++ b/content/homepage/git.md
@@ -0,0 +1,138 @@
+---
+title: "Git"
+date: 2022-07-20T19:04:57+01:00
+draft: true
+abbrev: "Git"
+description: "Living on the bleeding edge"
+url: git.html
+---
+
+The GIMP source code lives in the <emphasis>gimp</emphasis>
+repository on the
+<ulink url="https://gitlab.gnome.org";>GNOME git server</ulink>.
+For more information on the GNOME git solution, go
+<ulink url="http://live.gnome.org/Git";>here</ulink>.
+
+The GNOME git server hosts a couple of GIMP related repositories:
+
+<informaltable>
+<tgroup cols="2" align="left">
+<thead>
+<row>
+<entry>Module</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp/";>babl</ulink>
+</entry>
+<entry>
+Pixel format conversion library
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gegl/";>gegl</ulink>
+</entry>
+<entry>
+Generic Graphical Library
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp/";>gimp</ulink>
+</entry>
+<entry>
+GIMP and the standard set of plug-ins
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/Archive/gimp-data-extras";>gimp-data-extras</ulink>
+</entry>
+<entry>
+GIMP Data files such as brushes, gradients, patterns and the like
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp-gap/";>gimp-gap</ulink>
+</entry>
+<entry>
+GIMP Animation Package, a set of plug-ins that provide
+video editing functionality
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp-help/";>gimp-help-2</ulink>
+</entry>
+<entry>
+GIMP User Manual
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp-perl/";>gimp-perl</ulink>
+</entry>
+<entry>
+GIMP Perl bindings and a bunch of nice gimp-perl scripts
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/Archive/gimp-plugin-template";>gimp-plugin-template</ulink>
+</entry>
+<entry>
+GIMP Plug-In Template, a starting ground for plug-in developers,
+currently in need of updating with regards to the use of GEGL
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/Archive/gimp-plugins-unstable";>gimp-plugins-unstable</ulink>
+</entry>
+<entry>
+GIMP plug-ins from the past, a collection of unstable and
+unmaintained plug-ins
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp-ruby";>gimp-ruby</ulink>
+</entry>
+<entry>
+GIMP Ruby-based scripting plug-in
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/GNOME/gimp-tiny-fu";>gimp-tiny-fu</ulink>
+</entry>
+<entry>
+GIMP Tiny-Fu, a drop-in replacement for Script-Fu
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/Infrastructure/gimp-web";>gimp-web</ulink>
+</entry>
+<entry>
+The GIMP web site, available at <ulink url="https://www.gimp.org";>www.gimp.org</ulink>
+</entry>
+</row>
+<row>
+<entry>
+<ulink url="https://gitlab.gnome.org/Infrastructure/gimp-web-devel";>gimp-web-devel</ulink>
+</entry>
+<entry>
+The source of the pages you are reading right now
+</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+</webpage>
diff --git a/content/homepage/lists.md b/content/homepage/lists.md
new file mode 100644
index 0000000..a720c24
--- /dev/null
+++ b/content/homepage/lists.md
@@ -0,0 +1,12 @@
+---
+title: "Mailing Lists"
+description: "The finest spam in town"
+date: 2022-07-20T19:05:03+01:00
+draft: false
+type: new
+url: lists.html
+---
+
+There are several mailing-lists related to GIMP and
+[www.gimp.org lists them all](https://www.gimp.org/mail_lists.html).
+
diff --git a/content/homepage/plug-in-template.md b/content/homepage/plug-in-template.md
new file mode 100644
index 0000000..3d9bd5b
--- /dev/null
+++ b/content/homepage/plug-in-template.md
@@ -0,0 +1,24 @@
+---
+title: "GIMP Plug-In Template"
+abbrev: "Plug-In Template"
+description: "Don't start from scratch"
+date: 2022-07-20T19:05:12+01:00
+draft: false
+url: plug-in-template.html
+---
+
+The GIMP Plug-In Template is an empty GIMP Plug-In that does
+nothing. It also has a GUI that allows to control how it achieves
+this task. But best of all, it comes with a complete setup for
+[autoconf](https://www.gnu.org/software/autoconf/),
+[automake](https://www.gnu.org/software/automake/),
+internationalisation and all these things you never wanted to know
+about.
+
+Thanks to the GIMP Plug-In Template you don't need to worry about
+all these things. Just download the tarball, add some magic image
+manipulation routines and voilà, your own GIMP plug-in.
+
+Grab the latest release from
+[ftp.gimp.org/pub/gimp/plugin-template/](ftp://ftp.gimp.org/pub/gimp/plugin-template/).
+
diff --git a/content/homepage/plug-ins.md b/content/homepage/plug-ins.md
new file mode 100644
index 0000000..4747110
--- /dev/null
+++ b/content/homepage/plug-ins.md
@@ -0,0 +1,19 @@
+---
+title: "Plug Ins"
+date: 2022-07-20T19:05:09+01:00
+draft: true
+---
+
+---
+title: "Plug-In Development"
+description: "Writing GIMP plug-ins"
+---
+
+* [Writing a GIMP Plug-In Part I](writing-a-plug-in-1)
+* [Writing a GIMP Plug-In Part II](writing-a-plug-in-2)
+* [Writing a GIMP Plug-In Part III](writing-a-plug-in-3)
+
+Make good use of the <ulink url="api/2.0">GIMP 2.0 API reference</ulink>,
+and you can also have a look at a talk about
+<ulink url="http://www.home.unix-ag.org/simon/gimp/guadec2002/gimp-plugin/html/";>GIMP plug-in 
programming</ulink> that Simon gave at GUADEC in Sevilla.
+
diff --git a/content/homepage/screenshots.md b/content/homepage/screenshots.md
new file mode 100644
index 0000000..3801e0a
--- /dev/null
+++ b/content/homepage/screenshots.md
@@ -0,0 +1,63 @@
+---
+
+---
+
+<?xml version='1.0'?>
+<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
+             "dtd/website.dtd">
+
+<webpage id="screenshots" lang="en">
+
+<head>
+<title>Screenshots</title>
+<summary>What everyone is after...</summary>
+</head>
+
+<para>
+Here are a few screenshots of the development version. More should
+be added...
+</para>
+
+<para role="screenshot">
+<ulink url="screenshots/gimp-empty.png">
+<mediaobject>
+<imageobject>
+<imagedata fileref="screenshots/gimp-empty-thumb.png"/>
+</imageobject>
+<textobject>
+<phrase>No image opened</phrase>
+</textobject>
+</mediaobject>
+</ulink>
+This screenshot shows a GNOME desktop and GIMP 2.5 right after
+startup with no image loaded yet.
+</para>
+
+<para role="screenshot">
+<ulink url="screenshots/gimp-print.png">
+<mediaobject>
+<imageobject>
+<imagedata fileref="screenshots/gimp-print-thumb.png"/>
+</imageobject>
+<textobject>
+<phrase>Print dialog</phrase>
+</textobject>
+</mediaobject>
+</ulink>
+The Print plug-in has been further improved for GIMP 2.5.
+</para>
+
+<para role="screenshot">
+<ulink url="screenshots/gimp-curves.png">
+<mediaobject>
+<imageobject>
+<imagedata fileref="screenshots/gimp-curves-thumb.png"/>
+</imageobject>
+<textobject>
+<phrase>Curves dialog</phrase>
+</textobject>
+</mediaobject>
+</ulink>
+These screenshots illustrate changes to the Curves dialog for the
+upcoming GIMP 2.6 release.
+
diff --git a/standards.xml b/content/homepage/standards.md
similarity index 90%
rename from standards.xml
rename to content/homepage/standards.md
index c02857a..3770d1d 100644
--- a/standards.xml
+++ b/content/homepage/standards.md
@@ -1,23 +1,18 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" >
-
-<webpage id="standards" lang="en">
-
-  <head>
-    <title>GIMP and Standards</title>
-    <titleabbrev>Standards</titleabbrev>
-    <summary>Standards GIMP conforms to</summary>
-  </head>
-
-  <para>
-    GIMP is supposed to integrate well into your workflow. Thus is
-    needs to interoperate with other applications and your desktop.
-    Standards are there to make this happen and so we try to follow
-    established (and sometimes even proposed) standards. Below you
-    will find a list with links to specifications that a GIMP
-    developer may find useful.
-  </para>
+---
+title: "GIMP and Standards"
+date: 2022-07-20T19:05:19+01:00
+draft: true
+abbrev: "Standards"
+description: "Standards GIMP conforms to"
+url: standards.html
+---
+
+GIMP is supposed to integrate well into your workflow. Thus is
+needs to interoperate with other applications and your desktop.
+Standards are there to make this happen and so we try to follow
+established (and sometimes even proposed) standards. Below you
+will find a list with links to specifications that a GIMP
+developer may find useful.
 
   <variablelist>
     <title>Image File Formats</title>
@@ -27,10 +22,8 @@
        <ulink url="http://www.w3.org/XML/";>Extensible Markup Language (XML)</ulink>
       </term>
       <listitem>
-       <para>
          Describes the XML markup language, used to store the menu layout,
          the startup tips, help indices and other things.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -39,10 +32,8 @@
        <ulink url="http://www.w3.org/Graphics/GIF/spec-gif89a.txt";>Graphics Interchange Format</ulink>
       </term>
       <listitem>
-       <para>
          Describes the GIF file format, used in the GIF plug-in. GIF
          is bad, don't use it.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -51,9 +42,7 @@
        <ulink url="http://www.w3.org/Graphics/JPEG/";>JPEG (Joint Photographic Experts Group)</ulink>
       </term>
       <listitem>
-       <para>
          Describes the JPEG JFIF file format, used in the JPEG plug-in.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -62,11 +51,9 @@
        <ulink url="http://www.libpng.org/pub/mng/spec/jng.html";>JNG (JPEG Network Graphics) Format</ulink>
       </term>
       <listitem>
-       <para>
          GIMP doesn't use this format yet but it would be nice to
          extend the MNG plug-in to use it and to add a dedicated JNG
          plug-in.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -75,9 +62,7 @@
        <ulink url="http://www.libpng.org/pub/mng/spec/";>MNG (Multiple-image Network Graphics) Format</ulink>
       </term>
       <listitem>
-       <para>
          Describes the MNG file format, used in the MNG plug-in.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -86,11 +71,9 @@
        <ulink url="http://www.w3.org/TR/PNG/";>Portable Network Graphics (PNG)</ulink>
       </term>
       <listitem>
-       <para>
          Describes the PNG file format, used in the PNG plug-in. GIMP
          also reads patterns in the PNG file format and it stores
          thumbnails as PNG images.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -99,11 +82,9 @@
        <ulink url="http://www.w3.org/TR/SVG/";>Scalable Vector Graphics (SVG) 1.1</ulink>
       </term>
       <listitem>
-       <para>
          Describes the SVG file format, used in the SVG plug-in. GIMP
          uses SVG for import and export of paths and it also loads
          gradients from SVG files.
-       </para>
       </listitem>
     </varlistentry>
     
@@ -112,11 +93,9 @@
        <ulink url="http://partners.adobe.com/public/developer/tiff/";>TIFF 6.0</ulink>
       </term>
       <listitem>
-       <para>
          Describes the TIFF file format, used in the TIFF plug-in. See also
          the 
          <ulink url="http://www.awaresystems.be/imaging/tiff.html";>Unofficial TIFF Home Page</ulink>.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -125,10 +104,8 @@
        <ulink url="http://www.adobe.com/products/xmp/main.html";>Extensible Metadata Platform (XMP)</ulink>
       </term>
       <listitem>
-       <para>
          Describes XMP, a labeling technology that allows to embed
          data about a file, known as metadata, into the file itself.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -137,10 +114,8 @@
        <ulink url="http://www.adobe.com/products/dng/pdfs/dng_spec.pdf";>Digital Negative (DNG)</ulink>
       </term>
       <listitem>
-       <para>
          Specifies DNG, a format, proposed by Adobe, aiming to become
          a standard for storing raw data from digital cameras.
-       </para>
       </listitem>
     </varlistentry>
     
@@ -155,10 +130,8 @@
        <ulink url="http://www.w3.org/Graphics/Color/sRGB";>sRGB Color Space</ulink>
       </term>
       <listitem>
-       <para>
          Describes sRGB, a color space proposed as a standard default
          color space for the Internet and other interested vendors.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -167,12 +140,10 @@
        <ulink url="http://www.color.org/icc_specs2.html";>ICC Specification</ulink>
       </term>
       <listitem>
-       <para>
          Specifies the profile format defined by the International
          Color Consortium (ICC). The intent of this format is to
          provide a cross-platform device profile format that can be
          used to translate color data between device colorspaces.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -181,10 +152,8 @@
        <ulink url="http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html";>ICC Profiles In X 
Specification</ulink>
       </term>
       <listitem>
-       <para>
          This is a specification for associating ICC color profiles
          with X screens. GIMP 2.4 implements this proposed standard. 
-       </para>
       </listitem>
     </varlistentry>
 
@@ -198,12 +167,10 @@
        <ulink 
url="http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html";>Desktop Entry 
Specification</ulink>
       </term>
       <listitem>
-       <para>
          This document describes desktop entries: files describing
          information about an application such as the name, icon, and
          description. GIMP installs such
          a <filename>.desktop</filename> file.
-       </para>
       </listitem>
    </varlistentry>
 
@@ -212,12 +179,10 @@
        <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html";>Desktop Message Bus</ulink>
       </term>
       <listitem>
-       <para>
           D-Bus is a message bus for the desktop. If available, GIMP
          uses it to detect if another GIMP instance is already
          running. In the future, GIMP might make even more use of
          D-Bus.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -226,10 +191,8 @@
        <ulink url="http://freedesktop.org/wiki/Specifications/file-uri-spec";>File URI Specification</ulink>
       </term>
       <listitem>
-       <para>
          Specifies how URIs for normal UNIX filenames (file: URIs)
          are interpreted and created. This functionality is provided by GLib,
-       </para>
       </listitem>
     </varlistentry>
 
@@ -238,10 +201,8 @@
        <ulink url="https://developer.gnome.org/hig/stable/";>GNOME Human Interface Guidelines</ulink>
       </term>
       <listitem>
-       <para>
          We don't follow this spec to the word but we try to adopt as
          much of these guidelines as makes sense.
-       </para>
       </listitem>
    </varlistentry>
 
@@ -250,10 +211,8 @@
        <ulink url="http://standards.freedesktop.org/recent-file-spec/recent-file-spec-latest.html";>Recent 
File Storage Specification</ulink>
       </term>
       <listitem>
-       <para>
          Provides a standard mechanism for storing a list of recently
          used files. Supported since GIMP version 2.1.6.
-       </para>
       </listitem>
    </varlistentry>
 
@@ -262,11 +221,9 @@
        <ulink 
url="http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html";>Shared MIME 
Database</ulink>
       </term>
       <listitem>
-       <para>
          The shared MIME database contains common MIME types, descriptions,
          and rules for determining the types of files. GIMP file plug-ins
          should use the MIME types and descriptions defined here.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -275,11 +232,9 @@
        <ulink 
url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt";> Startup 
Notification</ulink>
       </term>
       <listitem>
-       <para>
          Specifies a mechanism allowing a desktop environment to
          track application startup to provide user feedback. GTK+
          provides support for this protocol.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -288,13 +243,11 @@
        <ulink 
url="https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html";>Thumbnail Managing 
Standard</ulink>
       </term>
       <listitem>
-       <para>
          Deals with the permanent storage of previews for file
          content. In particular, it tries to define a general and
          widely accepted standard for this task. GIMP 2.0 implements
          this standard and dropped support for the old-fashioned
          <filename>.xvpics</filename>.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -309,10 +262,8 @@
        <ulink url="http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt";>Clipboards</ulink>
       </term>
       <listitem>
-       <para>
          Not a formal specification, but explains the consensus of the
          Qt and GTK+ developers on how the X clipboard works.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -321,12 +272,10 @@
        <ulink url="http://www.freedesktop.org/wiki/ClipboardManager";>Clipboard Manager</ulink>
       </term>
       <listitem>
-       <para>
          The Clipboard Manager specification describes how
          applications can actively store the contents of the
          clipboard when the application is quit. This requires that a
          compliant clipboard manager is running.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -335,10 +284,8 @@
        <ulink url="http://freedesktop.org/Standards/XDND";>Drag-and-Drop Protocol for the X Window 
System</ulink>
       </term>
       <listitem>
-       <para>
          XDND defines a standard for drag and drop on X11. It is implemented
          by GTK+.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -347,11 +294,9 @@
        <ulink url="http://freedesktop.org/wiki/Standards_2fdirect_2dsave";>Direct Save Protocol for the X 
Window System</ulink>
       </term>
       <listitem>
-       <para>
          XDS defines an extension to XDND that allow users to save a file by
          simply dragging it to a file manager window. GIMP 2.4 supports
          this protocol.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -360,10 +305,8 @@
        <ulink url="http://standards.freedesktop.org/wm-spec/wm-spec-latest.html";>Extended Window Manager 
Hints</ulink>
       </term>
       <listitem>
-       <para>
          The Window Manager Specification is meant to unify the GNOME and KDE
          window manager hint conventions.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -372,12 +315,10 @@
        <ulink url="http://tronche.com/gui/x/icccm/";>Inter-Client Communication Conventions Manual 
(ICCCM)</ulink>
       </term>
       <listitem>
-       <para>
          This spec defines the interaction between X11 clients. In
          particular it talks about selections, cut buffers, window
          and session management, manipulation of shared resources
          and device color characterization.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -386,12 +327,10 @@
        <ulink url="http://standards.freedesktop.org/xsettings-spec/xsettings-spec-0.5.html";>XSETTINGS</ulink>
       </term>
       <listitem>
-       <para>
          The XSETTINGS protocol provides a mechanism for applications
          written with different toolkits to share simple
          configuration settings such as double-click-times and
          background colors. GTK+ hides this from us.
-       </para>
       </listitem>
     </varlistentry>
 
@@ -405,11 +344,9 @@
        <ulink url="http://developer.gimp.org/HACKING";>GIMP Hackordnung</ulink>
       </term>
       <listitem>
-       <para>
          The last section from the file HACKING as found in the GIMP
          source tree explains how the GIMP source code should be
          formatted.
-       </para>
       </listitem>
    </varlistentry>
 
@@ -418,11 +355,9 @@
        <ulink url="http://www.gnu.org/prep/standards/";>GNU coding standards</ulink>
       </term>
       <listitem>
-       <para>
          A guide to writing portable, robust and reliable
          programs. Also defines the
          <ulink url="http://www.gnu.org/prep/standards/standards.html#Formatting";>GNU coding style</ulink>.
-       </para>
       </listitem>
    </varlistentry>
 
@@ -431,9 +366,7 @@
        <ulink url="http://www.nirvani.net/docs/ansi_c.pdf";>ISO/IEC 9899</ulink>
       </term>
       <listitem>
-       <para>
          ISO 9899 is the international standard for the C programming language.
-       </para>
       </listitem>
     </varlistentry>
 
diff --git a/images/developer-barbg.png b/content/images/developer-barbg.png
similarity index 100%
rename from images/developer-barbg.png
rename to content/images/developer-barbg.png
diff --git a/images/developer-left.png b/content/images/developer-left.png
similarity index 100%
rename from images/developer-left.png
rename to content/images/developer-left.png
diff --git a/images/developer-right.png b/content/images/developer-right.png
similarity index 100%
rename from images/developer-right.png
rename to content/images/developer-right.png
diff --git a/images/shadow.gif b/content/images/shadow.gif
similarity index 100%
rename from images/shadow.gif
rename to content/images/shadow.gif
diff --git a/images/shadow.png b/content/images/shadow.png
similarity index 100%
rename from images/shadow.png
rename to content/images/shadow.png
diff --git a/images/wilber-icon.png b/content/images/wilber-icon.png
similarity index 100%
rename from images/wilber-icon.png
rename to content/images/wilber-icon.png
diff --git a/images/wilber.png b/content/images/wilber.png
similarity index 100%
rename from images/wilber.png
rename to content/images/wilber.png
diff --git a/layout.xml b/content/layout.xml
similarity index 100%
rename from layout.xml
rename to content/layout.xml
diff --git a/screenshots/Makefile b/content/screenshots/Makefile
similarity index 100%
rename from screenshots/Makefile
rename to content/screenshots/Makefile
diff --git a/content/screenshots/gimp-curves-thumb.png b/content/screenshots/gimp-curves-thumb.png
new file mode 100644
index 0000000..6941a85
Binary files /dev/null and b/content/screenshots/gimp-curves-thumb.png differ
diff --git a/screenshots/gimp-curves.png b/content/screenshots/gimp-curves.png
similarity index 100%
rename from screenshots/gimp-curves.png
rename to content/screenshots/gimp-curves.png
diff --git a/content/screenshots/gimp-empty-thumb.png b/content/screenshots/gimp-empty-thumb.png
new file mode 100644
index 0000000..f4eda5d
Binary files /dev/null and b/content/screenshots/gimp-empty-thumb.png differ
diff --git a/screenshots/gimp-empty.png b/content/screenshots/gimp-empty.png
similarity index 100%
rename from screenshots/gimp-empty.png
rename to content/screenshots/gimp-empty.png
diff --git a/screenshots/gimp-osx.jpeg b/content/screenshots/gimp-osx.jpeg
similarity index 100%
rename from screenshots/gimp-osx.jpeg
rename to content/screenshots/gimp-osx.jpeg
diff --git a/content/screenshots/gimp-print-thumb.png b/content/screenshots/gimp-print-thumb.png
new file mode 100644
index 0000000..5c78799
Binary files /dev/null and b/content/screenshots/gimp-print-thumb.png differ
diff --git a/screenshots/gimp-print.png b/content/screenshots/gimp-print.png
similarity index 100%
rename from screenshots/gimp-print.png
rename to content/screenshots/gimp-print.png
diff --git a/writing-a-plug-in-1.xml b/content/writing-a-plug-in/1.md
similarity index 81%
rename from writing-a-plug-in-1.xml
rename to content/writing-a-plug-in/1.md
index 5916754..084676e 100644
--- a/writing-a-plug-in-1.xml
+++ b/content/writing-a-plug-in/1.md
@@ -1,46 +1,29 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" [
-<!ENTITY writing-a-plug-in-2 SYSTEM "writing-a-plug-in-2.xml" NDATA XML>
-]>
-
-<webpage id="writing-a-plug-in-1" lang="en">
-
-  <head>
-    <title>How to write a GIMP plug-in</title>
-    <titleabbrev>Writing A Plug-In</titleabbrev>
-    <summary>Write your own</summary>
-  </head>
-
-  <para>
-    Written By <ulink url="mailto:bolsh NOSPAM gimp org">Dave Neary</ulink>
-  </para>
-
-  <para>
-    In this article, I present GIMP plug-ins basics and introduce the
-    libgimp API.  I will also show how to use the PDB to make our
-    plug-in available to other script authors.
-  </para>
+---
+title: "How to write a GIMP plug-in"
+abbrev: "Writing A Plug-In"
+description: "Write your own"
+---
 
-  <section>
-    <title>Introduction</title>
+Written By <ulink url="mailto:bolsh NOSPAM gimp org">Dave Neary</ulink>
 
-    <para>
-      New developers are often intimidated by The GIMP size and its
-      reputation.  They think that writing a plug-in would be a
-      difficult task. The goal of these articles is to dumb this
-      feeling down, by showing how easily one can make a C plug-in.
-    </para>
+In this article, I present GIMP plug-ins basics and introduce the
+libgimp API.  I will also show how to use the PDB to make our
+plug-in available to other script authors.
 
-    <para>
-      In this part, I present a plug-in's basic elements. We will see
-      how to install a plug-in and how to get data from an image and
-      directly manipulate it.
-    </para>
-  </section>
+<section>
+<title>Introduction</title>
 
-  <section>
-    <title>Architecture</title>
+<para>
+New developers are often intimidated by The GIMP size and its
+reputation.  They think that writing a plug-in would be a
+difficult task. The goal of these articles is to dumb this
+feeling down, by showing how easily one can make a C plug-in.
+
+In this part, I present a plug-in's basic elements. We will see
+how to install a plug-in and how to get data from an image and
+directly manipulate it.
+
+## Architecture
 
     <para role="images">
       <ulink url="architecture.png">
@@ -56,40 +39,28 @@
       </ulink>
     </para>
 
-    <para>
-      The GIMP script interface is centered on the Procedural database
-      (PDB). At startup, The GIMP looks into a predefined set of
-      places for scripts and plug-ins, and asks each new script to
-      identify itself.
-    </para>
+The GIMP script interface is centered on the Procedural database
+(PDB). At startup, The GIMP looks into a predefined set of
+places for scripts and plug-ins, and asks each new script to
+identify itself.
 
-    <para>
-      The plug-in declares itself to the PDB at that time, and passes
-      informations like the position it wishes to get in the menu
-      hierarchy, input parameters, and output parameters.
-    </para>
+The plug-in declares itself to the PDB at that time, and passes
+informations like the position it wishes to get in the menu
+hierarchy, input parameters, and output parameters.
 
-    <para>
-      When a script or a plug-in wants to use our plug-in, it gets
-      through the PDB, which manages communicating parameters in one
-      direction and the other in a transparent way.
-    </para>
+When a script or a plug-in wants to use our plug-in, it gets
+through the PDB, which manages communicating parameters in one
+direction and the other in a transparent way.
 
-    <para>
-      Internal functions that wish to get exposed to plug-ins have to
-      be packaged first in the core, that will register them in the
-      PDB, and secondly in the libgimp that will allow the function to
-      be called as a normal one.
-    </para>
+Internal functions that wish to get exposed to plug-ins have to
+be packaged first in the core, that will register them in the
+PDB, and secondly in the libgimp that will allow the function to
+be called as a normal one.
 
-    <para>
-      This was the introduction - now, we will look closer at our
-      first plug-in, a "Hello, world!".
-    </para>
-  </section>
+This was the introduction - now, we will look closer at our
+first plug-in, a "Hello, world!".
 
-  <section>
-    <title>Compiling the plug-in</title>
+## Compiling the plug-in
 
     <para>
       To be able to compile simple plug-ins for The GIMP, one needs
diff --git a/writing-a-plug-in-2.xml b/content/writing-a-plug-in/2.md
similarity index 70%
rename from writing-a-plug-in-2.xml
rename to content/writing-a-plug-in/2.md
index bdf85b7..92a8b8e 100644
--- a/writing-a-plug-in-2.xml
+++ b/content/writing-a-plug-in/2.md
@@ -1,86 +1,56 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" [
-<!ENTITY writing-a-plug-in-1 SYSTEM "writing-a-plug-in-1.xml" NDATA XML>
-<!ENTITY writing-a-plug-in-3 SYSTEM "writing-a-plug-in-3.xml" NDATA XML>
-]>
-
-<webpage id="writing-a-plug-in-2" lang="en">
-
-  <head>
-    <title>How to write a GIMP plug-in, part II</title>
-    <titleabbrev>Part II</titleabbrev>
-    <summary>Write your own</summary>
-  </head>
-
-  <para>
-    Written By <ulink url="mailto:bolsh NOSPAM gimp org">Dave Neary</ulink>
-  </para>
-
-  <para>
-    In the <olink targetdocent="writing-a-plug-in-1">first
-    part</olink>, I presented essential elements to build a plug-in
-    interface with The GIMP. Now we will produce a simple but useful
-    algorithm that we could use in our plug-in.
-  </para>
-
-  <section>
-    <title>Introduction</title>
-
-    <para>
-      The algorithm we are going to implement is a simple blur. It is
-      included in The GIMP as "Filters->Blur->Blur" with default
-      parameters.
-    </para>
-
-    <para>
-      That algorithm is very simple. Each pixel in our image is
-      replaced by a mean value of its neighbours. For example, if we
-      look at the simplest case where the neighbourhood is 3x3 (see
-      figure 1), in that case the center value will be replaced with
-      5, the mean of the 9 numbers in its neighbourhood.
-    </para>
-
-    <para>
-      With this method, edge differences are splatted, giving a
-      blurred result. One can choose another radius, using a (2r + 1)
-      x (2r + 1) matrix.
-    </para>
-  </section>
-
-  <section>
-    <title>Image structure</title>
-
-    <para>
-      Last month, we wrote a run() function that did nothing useful.
-      Let's look again at run() prototype:
-    </para>
-
-    <programlisting>
-    <![CDATA[
-      static void run (const gchar     *name,
-                       gint             nparams,
-                       const GimpParam *param,
-                       gint            *nreturn_vals,
-                       GimpParam      **return_vals);
-     ]]>
-    </programlisting>
-
-    <para>
-      We saw that for a filter (i.e. a plug-in that modifies the
-      image), the first three input parameters were the run mode, an
-      identifier for the image, and another one for the active
-      drawable (layer or mask).
-    </para>
-
-    <para>
-      A GIMP image is a structure that contains, among others, guides,
-      layers, layer masks, and any data associated to the image. The
-      word "drawable" is often used in GIMP internal structures. A
-      "drawable" is an object where you can get, and sometimes modify,
-      raw data. So : layers, layer masks, selections are all
-      "drawables".
-    </para>
+---
+title: "How to write a GIMP plug-in, part II"
+abbrev: "Part II"
+description: "Write your own"
+---
+
+Written By <ulink url="mailto:bolsh NOSPAM gimp org">Dave Neary</ulink>
+
+In the <olink targetdocent="writing-a-plug-in-1">first
+part</olink>, I presented essential elements to build a plug-in
+interface with The GIMP. Now we will produce a simple but useful
+algorithm that we could use in our plug-in.
+
+## Introduction
+
+The algorithm we are going to implement is a simple blur. It is
+included in The GIMP as "Filters->Blur->Blur" with default
+parameters.
+
+That algorithm is very simple. Each pixel in our image is
+replaced by a mean value of its neighbours. For example, if we
+look at the simplest case where the neighbourhood is 3x3 (see
+figure 1), in that case the center value will be replaced with
+5, the mean of the 9 numbers in its neighbourhood.
+
+With this method, edge differences are splatted, giving a
+blurred result. One can choose another radius, using a (2r + 1)
+x (2r + 1) matrix.
+
+## Image structure
+
+Last month, we wrote a run() function that did nothing useful.
+Let's look again at run() prototype:
+
+```
+static void run (const gchar     *name,
+               gint             nparams,
+               const GimpParam *param,
+               gint            *nreturn_vals,
+               GimpParam      **return_vals);
+```
+
+We saw that for a filter (i.e. a plug-in that modifies the
+image), the first three input parameters were the run mode, an
+identifier for the image, and another one for the active
+drawable (layer or mask).
+
+A GIMP image is a structure that contains, among others, guides,
+layers, layer masks, and any data associated to the image. The
+word "drawable" is often used in GIMP internal structures. A
+"drawable" is an object where you can get, and sometimes modify,
+raw data. So : layers, layer masks, selections are all
+"drawables".
     
     <para role="images">
       <ulink url="GimpImage.png">
@@ -94,11 +64,8 @@
         </mediaobject>
         Drawables
       </ulink>
-    </para>
-  </section>
 
-  <section>
-    <title>Accessing the data</title>
+## Accessing the data
 
     <para>
       To get a GimpDrawable from its identifier, we need the
@@ -207,34 +174,24 @@
     </para>
   </section>
   
-  <section>
-    <title>Updating the image</title>
+## Updating the image
 
-    <para>
-      At last, a plug-in that has modified a drawable data must flush
-      it to send data to the core, and to tell the application that
-      the display must be updated. This is done with the following
-      function:
-    </para>
+At last, a plug-in that has modified a drawable data must flush
+it to send data to the core, and to tell the application that
+the display must be updated. This is done with the following
+function:
 
-    <programlisting>
-    <![CDATA[
-      gimp_displays_flush ();
-      gimp_drawable_detach (drawable);
-     ]]>
-    </programlisting>
-  </section>
+```
+  gimp_displays_flush ();
+  gimp_drawable_detach (drawable);
+```
 
-  <section>
-    <title>Implementing blur()</title>
+## Implementing blur()
 
-    <para>
-      To be able to try out several different processing methods, we
-      will delegate the job to a blur() function. Our run() is below.
-    </para>
+To be able to try out several different processing methods, we
+will delegate the job to a blur() function. Our run() is below.
 
-    <programlisting>
-    <![CDATA[
+```
       static void
       run (const gchar      *name,
            gint              nparams,
@@ -277,52 +234,42 @@
         gimp_displays_flush ();
         gimp_drawable_detach (drawable);
       }
-     ]]>
-    </programlisting>
-
-    <para>
-      There are a few lines here that need to be explained a bit more.
-      The call to gimp_progress_init() initialises a progress
-      measurement for our plug-in. Later, if we call
-      gimp_progress_update(double percent), the percentage given as an
-      input parameter will be shown graphically. The run_mode tells us
-      whether the plug-in was launched in a way such as we can display
-      a graphical interface or not. Possible values are
-      GIMP_RUN_INTERACTIVE, GIMP_RUN_NONINTERACTIVE or
-      GIMP_RUN_WITH_LAST_VALS, which mean the plug-in was executed
-      from The GIMP, from a script, or from the "Repeat last filter"
-      menu entry.
-    </para>
-
-    <para>
-      Regarding the blur algorithm itself, the first version using
-      gimp_pixel_rgn_(get|set)_pixel() is found below. Some functions
-      in it have not been explained yet.
-    </para>
-
-    <para>
-      gimp_drawable_mask_bounds() allows calculation of the filter's
-      effect limits, excluding any region that is not in the active
-      selection. Limiting the processing this way allows an important
-      performance improvement.
-    </para>
-
-    <para>
-      gimp_pixel_rgn_init() takes as input parameters the drawable,
-      its limits for the processing, and two booleans that
-      significantly modify the behaviour of the resulting GimpPixelRgn.
-      The first one tells that "set" operations must be done on shadow
-      tiles, in order to leave original data as is until
-      gimp_drawable_merge_shadow() is called, when all modified data
-      will be merged. The second one tells that modified tiles should
-      be tagged "dirty" and sent to the core to be merged. Most of the
-      time, to read data, one uses FALSE and FALSE for these two
-      parameters, and to write data, one uses TRUE and TRUE. Other
-      combinations are possible but seldom used.
-    </para>
-
-    <programlisting>
-    <![CDATA[
+```
+
+There are a few lines here that need to be explained a bit more.
+The call to gimp_progress_init() initialises a progress
+measurement for our plug-in. Later, if we call
+gimp_progress_update(double percent), the percentage given as an
+input parameter will be shown graphically. The run_mode tells us
+whether the plug-in was launched in a way such as we can display
+a graphical interface or not. Possible values are
+GIMP_RUN_INTERACTIVE, GIMP_RUN_NONINTERACTIVE or
+GIMP_RUN_WITH_LAST_VALS, which mean the plug-in was executed
+from The GIMP, from a script, or from the "Repeat last filter"
+menu entry.
+
+Regarding the blur algorithm itself, the first version using
+gimp_pixel_rgn_(get|set)_pixel() is found below. Some functions
+in it have not been explained yet.
+
+`gimp_drawable_mask_bounds()` allows calculation of the filter's
+effect limits, excluding any region that is not in the active
+selection. Limiting the processing this way allows an important
+performance improvement.
+
+`gimp_pixel_rgn_init()` takes as input parameters the drawable,
+its limits for the processing, and two booleans that
+significantly modify the behaviour of the resulting GimpPixelRgn.
+The first one tells that "set" operations must be done on shadow
+tiles, in order to leave original data as is until
+gimp_drawable_merge_shadow() is called, when all modified data
+will be merged. The second one tells that modified tiles should
+be tagged "dirty" and sent to the core to be merged. Most of the
+time, to read data, one uses FALSE and FALSE for these two
+parameters, and to write data, one uses TRUE and TRUE. Other
+combinations are possible but seldom used.
+
+```
       static void
       blur (GimpDrawable *drawable)
       {
@@ -425,26 +372,19 @@
                               x1, y1,
                               x2 - x1, y2 - y1);
       }
-     ]]>
-    </programlisting>
-  </section>
+```
 
-  <section>
-    <title>Row processing</title>
+## Row processing
 
-    <para>
-      Our function has a bug drawback: performance. On a 300x300
-      selection, with the timing code uncommented, blur() took 12
-      minutes on my K6-2 350MHz, well loaded with other stuff. To
-      compare, on the same selection, Gaussian blur took 3 seconds.
-    </para>
+Our function has a bug drawback: performance. On a 300x300
+selection, with the timing code uncommented, blur() took 12
+minutes on my K6-2 350MHz, well loaded with other stuff. To
+compare, on the same selection, Gaussian blur took 3 seconds.
 
-    <para>
-      If we modify our function to rather use
-      gimp_pixel_rgn_(get|set)_row() the result is far better. We
-      reduce the timing for the 300x300 selection from 760 seconds to
-      6 seconds. blur() V2 is below:
-    </para>
+If we modify our function to rather use
+gimp_pixel_rgn_(get|set)_row() the result is far better. We
+reduce the timing for the 300x300 selection from 760 seconds to
+6 seconds. blur() V2 is below:
 
     <programlisting>
     <![CDATA[
diff --git a/writing-a-plug-in-3.xml b/content/writing-a-plug-in/3.md
similarity index 98%
rename from writing-a-plug-in-3.xml
rename to content/writing-a-plug-in/3.md
index ca168d2..620bb43 100644
--- a/writing-a-plug-in-3.xml
+++ b/content/writing-a-plug-in/3.md
@@ -1,22 +1,11 @@
-<?xml version='1.0'?>
-<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.1//EN"
-                         "dtd/website.dtd" [
-<!ENTITY writing-a-plug-in-2 SYSTEM "writing-a-plug-in-2.xml" NDATA XML>
-]>
-
-<webpage id="writing-a-plug-in-3" lang="en">
-
-  <head>
-    <title>How to write a GIMP plug-in, part III</title>
-    <titleabbrev>Part III</titleabbrev>
-    <summary>Write your own</summary>
-  </head>
-
-  <para>
-    Written By <ulink url="mailto:bolsh NOSPAM gimp org">Dave Neary</ulink>
-  </para>
+---
+title: "How to write a GIMP plug-in, part III"
+abbrev: "Part III"
+description: "Write your own"
+---
+
+Written By <ulink url="mailto:bolsh NOSPAM gimp org">Dave Neary</ulink>
 
-  <para>
     In the <olink targetdocent="writing-a-plug-in-2">second
     part</olink>, I told you about manipulating image data by pixel or
     row. This time, I will go farther and process data by tile, which
@@ -148,7 +137,7 @@
       are there to keep the blur code clean and small.
     </para>
 
-    <programlisting>
+```
     <![CDATA[    
       static void blur        (GimpDrawable *drawable);
 
@@ -904,5 +893,3 @@
     </para>
   </section>
 
-</webpage>
-
diff --git a/public/404.html b/public/404.html
new file mode 100644
index 0000000..16eb494
--- /dev/null
+++ b/public/404.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>404 Page not found &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <h1>404: Page not found</h1>
+<p class="lead">Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. <a 
href="https://developer.gimp.org/";>Head back home</a> to try finding it again.</p>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/about.html b/public/about.html
new file mode 100644
index 0000000..07855fa
--- /dev/null
+++ b/public/about.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>About this Site &middot; GIMP Developer Resources</title>
+  <meta name="description" content="About this Site." />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>About this Site</h1>
+  <time datetime=2022-07-19T00:00:00Z class="post-date">Tue, Jul 19, 2022</time>
+  <p>The look of this site was borrowed from
+<a href="http://www.gimp.org/";>www.gimp.org</a>.
+Under the hood it is based on
+<a href="http://docbook.sourceforge.net/projects/website/";>DocBook Website</a>.
+If you are curious, have a look at the <a href="about.md">Markdown source</a>
+of the page you are reading.</p>
+<p>If you want to help us with developer.gimp.org, clone the
+repository <code>gimp-web-devel</code> from <a href="git">git</a>.</p>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/api/2.0/libtest/test.txt b/public/api/2.0/libtest/test.txt
new file mode 100644
index 0000000..c677029
--- /dev/null
+++ b/public/api/2.0/libtest/test.txt
@@ -0,0 +1 @@
+only a test.
diff --git a/public/apple-touch-icon-144-precomposed.png b/public/apple-touch-icon-144-precomposed.png
new file mode 100644
index 0000000..19323de
Binary files /dev/null and b/public/apple-touch-icon-144-precomposed.png differ
diff --git a/public/bugs.html b/public/bugs.html
new file mode 100644
index 0000000..0ef670b
--- /dev/null
+++ b/public/bugs.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Bug Tracking System &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Bugs, bugs, bugs" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>Bug Tracking System</h1>
+  <time datetime=2022-07-19T00:00:00Z class="post-date">Tue, Jul 19, 2022</time>
+  <p>The GIMP project uses Gitlab&rsquo;s
+<a href="https://gitlab.gnome.org/GNOME/gimp/-/issues";>issues</a>,
+to coordinate bug reports. Gitlab is also used for enhancement requests
+and the preferred way to submit patches for the GIMP is make a
+<a href="https://gitlab.gnome.org/GNOME/gimp/-/merge_requests";>merge request</a>.</p>
+<p>On <a href="https://www.gimp.org";>www.gimp.org</a> you can find a document describing
+<a href="https://www.gimp.org/bugs/howtos/bugzilla.html";>HOW TO Report GIMP Bugs</a>.
+You can also find a document that describes
+<a href="https://www.gimp.org/bugs/howtos/submit-patch.html";>How To Create and Submit a Patch</a>.</p>
+<p>Below is a list of links to get you started with Gitlab:</p>
+<ul>
+<li><a href="https://gitlab.gnome.org/GNOME/gimp/-/issues";>List of Open Bugs</a></li>
+<li><a href="https://gitlab.gnome.org/GNOME/gimp/-/issues/?label_name%5B%5D=1.%20Bug";>List of Open Bugs 
(excluding enhancement requests)</a></li>
+<li><a href="https://gitlab.gnome.org/GNOME/gimp/-/milestones/20#tab-issues";>Tables of Open/Closed Bugs with 
milestone 2.10.34</a></li>
+<li><a href="https://gitlab.gnome.org/GNOME/gimp/-/milestones/19#tab-issues";>Tables of Open/Closed Bugs with 
milestone 2.99.12</a></li>
+<li><a href="https://gitlab.gnome.org/GNOME/gimp/-/milestones/1#tab-issues";>Issues without an associated, 
planned version number.</a></li>
+</ul>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/categories/index.html b/public/categories/index.html
new file mode 100644
index 0000000..6676b68
--- /dev/null
+++ b/public/categories/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Categories &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/categories/index.xml"; rel="alternate" type="application/rss+xml" 
title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/categories/index.xml b/public/categories/index.xml
new file mode 100644
index 0000000..73ad696
--- /dev/null
+++ b/public/categories/index.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>Categories on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/categories/</link>
+    <description>Recent content in Categories on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/categories/index.xml"; rel="self" type="application/rss+xml" />
+  </channel>
+</rss>
diff --git a/public/changelog.html b/public/changelog.html
new file mode 100644
index 0000000..f67f790
--- /dev/null
+++ b/public/changelog.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>GIMP ChangeLog &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Keeping an eye on the development." />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>GIMP ChangeLog</h1>
+  <time datetime=2022-07-20T19:04:06&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <p>The <a href="https://gitlab.gnome.org/GNOME/gimp/commits/master";>GIT repository</a>
+lists all changes in detail. The list below shows the latest
+commits.  It is generated from the RSS feed delivered by
+the <a href="https://cia.vc/";>CIA</a>.</p>
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/css/hyde.css b/public/css/hyde.css
new file mode 100644
index 0000000..597c8cd
--- /dev/null
+++ b/public/css/hyde.css
@@ -0,0 +1,300 @@
+/* This is the stylesheet of http://developer.gimp.org/ and should
+ * only be changed by the designer or the website maintainer. Remember
+ * that changes done here will change the appearance on the whole site
+ * so keep a backup of this file while working with it. Niklas */
+
+/* Copyright (C) 2002-2006 by The GIMP Web Team - Contributions by:
+ * Ville Pätsi (drc), Henrik Brix Andersen (brix), Carol Spears
+ * (carol), Niklas Mattisson (scizzo), Raphaël Quinet (raphael),
+ * Branko Collin (branko), Sven Neumann (neo) and Øyvind Kolås
+ * (pippin)
+ *
+ * This style sheet and corresponding site layout are designed to be
+ * used on official GIMP web sites only.  You may copy some parts of
+ * this file into your own style sheet as long as you create your own
+ * design that is significantly different from the one used on GIMP
+ * web sites (layout, colors, etc.) and you give appropriate credit if
+ * you copy more than a few lines from this file (do not claim that
+ * you wrote everything yourself).
+ */
+
+body {
+  background: white;
+  color: black;
+  font-family: arial,helvetica,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+
+a {
+  background: transparent;
+  color: #566e41;
+  text-decoration: none;
+  font-weight: bold;
+}
+
+a:hover        {
+  background: transparent;
+  color: #991e1e;
+  text-decoration: underline;
+  font-weight: bold;
+}
+
+img {
+  border: none;
+}
+
+img.map {
+  margin: 0px;
+  padding: 0px;
+}
+
+p {
+  margin-top: 1.33em;
+  margin-right: 1.33em;
+  text-align: justify;
+}
+
+p.title {
+  font-size: 110%;
+}
+
+p.images img {
+  border: solid black 2px;
+}
+
+p.framelessimages,
+p.images {
+  text-align: center;
+}
+
+p.screenshot {
+  clear:both;
+  padding: 1em;
+}
+
+p.screenshot .mediaobject {
+  float: left;
+  background: url(/images/shadow.png) no-repeat bottom right !important;
+  background: url(/images/shadow.gif) no-repeat bottom right;
+  margin: 0 0 6px 6px;
+  padding: 4px;
+}
+
+p.screenshot .mediaobject img {
+  border: none;
+  margin: -6px 2px -2px -6px;
+}
+
+li {
+  text-align: justify;
+}
+
+td {
+  padding: 5px 5px 0px 0px;
+}
+
+td.main {
+  padding: 10px;
+  padding-left: 40px;
+  padding-right: 40px;
+  vertical-align: top;
+  width: 100%;
+}
+
+td.map {
+  margin: 0px;
+  padding: 0px;
+}
+
+h1 {
+  background-color: #dce5d4;
+  color: black;
+  border: thin solid #a9b3a1;
+  padding: 5px;
+  margin-bottom: 30px;
+  margin-left: -30px;
+  margin-right: -30px;
+  font-weight: bold;
+  font-size: 110%;
+  text-align: center;
+}
+
+h2 {
+  font-weight: bold;
+  clear: both;
+  font-size: 110%;
+}
+
+h3 {
+  font-weight: bold;
+  clear: both;
+  font-size: 105%;
+}
+
+td.menu {
+  background: #dce5d4;
+  color: black;
+  border-style: solid;
+  border-color: #a9b3a1;
+  border-top-width: 0px;
+  border-bottom-width: 0px;
+  border-left-width: 0px;
+  border-right-width: 1px;
+  padding: 10px;
+  font-weight: bold;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+table.layout {
+  clear: both;
+  margin: 0px;
+  border: none;
+  padding: 0px;
+  border-collapse: collapse;
+  width: 100%;
+}
+
+div.titlebar {
+  background-image: url("../images/developer-barbg.png");
+  background-repeat: repeat-x;
+  height: 100px;
+}
+
+div.informaltable table {
+  border-collapse: collapse;
+}
+
+div.informaltable table tr td, div.informaltable table tr th {
+  padding: 5px;
+}
+
+img.titlebarleft {
+  float: left;
+}
+
+img.titlebarright {
+  float: right;
+}
+
+div.linkbar, div.navbar {
+  clear: both;
+  background: #dce5d4;
+  color: black;
+  border: solid #a9b3a1;
+  border-width: 1px 0px 1px 0px;
+  padding: 5px 5px 5px 5px;
+  font-weight: bold;
+  text-align: center;
+}
+
+span.footerleft {
+  float: left;
+  padding: 20px;
+}
+
+span.footerright {
+  float: right;
+  padding: 20px;
+}
+
+span.shrink1 {
+  padding-left: 10px;
+  font-size: 95%;
+}
+
+span.shrink2 {
+  padding-left: 20px;
+  font-size: 90%;
+}
+
+span.shrink3 {
+  padding-left: 30px;
+  font-size: 85%;
+}
+
+div.rss {
+  margin-top: 1em;
+  margin-bottom: 2em;
+}
+
+div.rss dd p {
+  white-space: pre;
+  border-width: 0px;
+  padding: 0px;
+  border: 2px solid red;
+}
+
+div.rss img {
+  border: none;
+  float: right;
+  border: 2px solid red;
+}
+
+div.rss p {
+  background-color: green;
+  display: inline;
+}
+
+span.date {
+  display: block;
+  font-size: 75%;
+  padding-right: 1em;
+  font-style: italic;
+  background-color: #ddd;
+  text-align: right;
+  border-left: 1px solid #888;
+  border-top: 1px solid #888;
+  border-right: 1px solid #888;
+}
+
+div.rss ul {
+  padding-right: 1em;
+  margin-top: -0.1em;
+  padding-left: 2.0em;
+}
+
+div.rss strong {
+  font-weight: bold;
+  font-style: italic;
+  color: #566e41;
+}
+div.rss b {
+  font-weight : normal;
+  color: #000:
+}
+
+
+div.rss b {
+  font-weight: normal;
+}
+
+div.rss ul li {
+  text-align: left;
+}
+
+div.rss_entry {
+  margin-bottom: 1em;
+}
+
+div.qandaset tr.question td {
+  padding-top: 15px;
+}
+
+div.qandaset tr.question p {
+  margin: 0px;
+}
+
+@media print {
+
+div.navbar, div.linkbar, td.menu {
+  display: none
+}
+
+td.main {
+  padding-right: 0px;
+  padding-left: 0px;
+}
+
+}
diff --git a/public/css/poole.css b/public/css/poole.css
new file mode 100644
index 0000000..ec6a32f
--- /dev/null
+++ b/public/css/poole.css
@@ -0,0 +1,404 @@
+/*
+ *                        ___
+ *                       /\_ \
+ *  _____     ___     ___\//\ \      __
+ * /\ '__`\  / __`\  / __`\\ \ \   /'__`\
+ * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\  __/
+ *  \ \ ,__/\ \____/\ \____//\____\ \____\
+ *   \ \ \/  \/___/  \/___/ \/____/\/____/
+ *    \ \_\
+ *     \/_/
+ *
+ * Designed, built, and released under MIT license by @mdo. Learn more at
+ * https://github.com/poole/poole.
+ */
+
+
+/*
+ * Contents
+ *
+ * Body resets
+ * Custom type
+ * Messages
+ * Container
+ * Masthead
+ * Posts and pages
+ * Pagination
+ * Reverse layout
+ * Themes
+ */
+
+
+/*
+ * Body resets
+ *
+ * Update the foundational and global aspects of the page.
+ */
+
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+html,
+body {
+  margin: 0;
+  padding: 0;
+}
+
+html {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 16px;
+  line-height: 1.5;
+}
+@media (min-width: 38em) {
+  html {
+    font-size: 20px;
+  }
+}
+
+body {
+  color: #515151;
+  background-color: #fff;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+          text-size-adjust: 100%;
+}
+
+/* No `:visited` state is required by default (browsers will use `a`) */
+a {
+  color: #227bb9;
+  text-decoration: none;
+}
+/* `:focus` is linked to `:hover` for basic accessibility */
+a:hover,
+a:focus {
+  text-decoration: underline;
+}
+
+/* Headings */
+h1, h2, h3, h4, h5, h6 {
+  margin-bottom: .5rem;
+  font-weight: bold;
+  line-height: 1.25;
+  color: #313131;
+  text-rendering: optimizeLegibility;
+}
+h1 {
+  font-size: 2rem;
+}
+h2 {
+  margin-top: 1rem;
+  font-size: 1.5rem;
+}
+h3 {
+  margin-top: 1.5rem;
+  font-size: 1.25rem;
+}
+h4, h5, h6 {
+  margin-top: 1rem;
+  font-size: 1rem;
+}
+
+/* Body text */
+p {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+strong {
+  color: #303030;
+}
+
+
+/* Lists */
+ul, ol, dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-bottom: .5rem;
+}
+
+/* Misc */
+hr {
+  position: relative;
+  margin: 1.5rem 0;
+  border: 0;
+  border-top: 1px solid #eee;
+  border-bottom: 1px solid #fff;
+}
+
+abbr {
+  font-size: 85%;
+  font-weight: bold;
+  color: #555;
+  text-transform: uppercase;
+}
+abbr[title] {
+  cursor: help;
+  border-bottom: 1px dotted #e5e5e5;
+}
+
+/* Code */
+code,
+pre {
+  font-family: Menlo, Monaco, "Courier New", monospace;
+}
+code {
+  padding: .25em .5em;
+  font-size: 85%;
+  color: #b3555e;
+  background-color: #f9f9f9;
+  border-radius: 3px;
+}
+pre {
+  display: block;
+  margin-top: 0;
+  margin-bottom: 1rem;
+  padding: 1rem;
+  font-size: .8rem;
+  line-height: 1.4;
+  white-space: pre;
+  white-space: pre-wrap;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f9f9f9;
+}
+pre code {
+  padding: 0;
+  font-size: 100%;
+  color: inherit;
+  background-color: transparent;
+}
+.highlight {
+  margin-bottom: 1rem;
+  border-radius: 4px;
+}
+.highlight pre {
+  margin-bottom: 0;
+}
+
+/* Quotes */
+blockquote {
+  padding: .5rem 1rem;
+  margin: .8rem 0;
+  color: #7a7a7a;
+  border-left: .25rem solid #e5e5e5;
+}
+blockquote p:last-child {
+  margin-bottom: 0;
+}
+@media (min-width: 30em) {
+  blockquote {
+    padding-right: 5rem;
+    padding-left: 1.25rem;
+  }
+}
+
+img {
+  display: block;
+  margin: 0 0 1rem;
+  border-radius: 5px;
+  max-width: 100%;
+}
+
+/* Tables */
+table {
+  margin-bottom: 1rem;
+  width: 100%;
+  border: 1px solid #e5e5e5;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: .25rem .5rem;
+  border: 1px solid #e5e5e5;
+}
+tbody tr:nth-child(odd) td,
+tbody tr:nth-child(odd) th {
+  background-color: #f9f9f9;
+}
+
+
+/*
+ * Custom type
+ *
+ * Extend paragraphs with `.lead` for larger introductory text.
+ */
+
+.lead {
+  font-size: 1.25rem;
+  font-weight: 300;
+}
+
+
+/*
+ * Messages
+ *
+ * Show alert messages to users. You may add it to single elements like a `<p>`,
+ * or to a parent if there are multiple elements to show.
+ */
+
+.message {
+  margin-bottom: 1rem;
+  padding: 1rem;
+  color: #717171;
+  background-color: #f9f9f9;
+}
+
+
+/*
+ * Container
+ *
+ * Center the page content.
+ */
+
+.container {
+  max-width: 38rem;
+  padding-left:  1rem;
+  padding-right: 1rem;
+  margin-left:  auto;
+  margin-right: auto;
+}
+
+
+/*
+ * Masthead
+ *
+ * Super small header above the content for site name and short description.
+ */
+
+.masthead {
+  padding-top:    1rem;
+  padding-bottom: 1rem;
+  margin-bottom: 3rem;
+}
+.masthead-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  color: #505050;
+}
+.masthead-title a {
+  color: #505050;
+}
+.masthead-title small {
+  font-size: 75%;
+  font-weight: 400;
+  color: #c0c0c0;
+  letter-spacing: 0;
+}
+
+
+/*
+ * Posts and pages
+ *
+ * Each post is wrapped in `.post` and is used on default and post layouts. Each
+ * page is wrapped in `.page` and is only used on the page layout.
+ */
+
+.page,
+.post {
+  margin-bottom: 4em;
+}
+
+/* Blog post or page title */
+.page-title,
+.post-title,
+.post-title a {
+  color: #303030;
+}
+.page-title,
+.post-title {
+  margin-top: 0;
+}
+
+/* Meta data line below post title */
+.post-date {
+  display: block;
+  margin-top: -.5rem;
+  margin-bottom: 1rem;
+  color: #757575;
+}
+
+/* Related posts */
+.related {
+  padding-top: 2rem;
+  padding-bottom: 2rem;
+  border-top: 1px solid #eee;
+}
+.related-posts {
+  padding-left: 0;
+  list-style: none;
+}
+.related-posts h3 {
+  margin-top: 0;
+}
+.related-posts li small {
+  font-size: 75%;
+  color: #999;
+}
+.related-posts li a:hover {
+  color: #227bb9;
+  text-decoration: none;
+}
+.related-posts li a:hover small {
+  color: inherit;
+}
+
+
+/*
+ * Pagination
+ *
+ * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
+ * there are no more previous or next posts to show.
+ */
+
+.pagination {
+  overflow: hidden; /* clearfix */
+  margin-left: -1rem;
+  margin-right: -1rem;
+  font-family: "PT Sans", Helvetica, Arial, sans-serif;
+  color: #ccc;
+  text-align: center;
+}
+
+/* Pagination items can be `span`s or `a`s */
+.pagination-item {
+  display: block;
+  padding: 1rem;
+  border: 1px solid #eee;
+}
+.pagination-item:first-child {
+  margin-bottom: -1px;
+}
+
+/* Only provide a hover state for linked pagination items */
+a.pagination-item:hover {
+  background-color: #f5f5f5;
+}
+
+@media (min-width: 30em) {
+  .pagination {
+    margin: 3rem 0;
+  }
+  .pagination-item {
+    float: left;
+    width: 50%;
+  }
+  .pagination-item:first-child {
+    margin-bottom: 0;
+    border-top-left-radius:    4px;
+    border-bottom-left-radius: 4px;
+  }
+  .pagination-item:last-child {
+    margin-left: -1px;
+    border-top-right-radius:    4px;
+    border-bottom-right-radius: 4px;
+  }
+}
diff --git a/public/css/print.css b/public/css/print.css
new file mode 100644
index 0000000..da8f1df
--- /dev/null
+++ b/public/css/print.css
@@ -0,0 +1,19 @@
+.sidebar {
+  display: none !important;
+}
+
+.content {
+  margin: 0 auto;
+  width: 100%;
+  float: none;
+  display: initial;
+}
+
+.container {
+  width: 100%;
+  float: none;
+  display: initial;
+  padding-left:  1rem;
+  padding-right: 1rem;
+  margin: 0 auto;
+}
diff --git a/public/css/syntax.css b/public/css/syntax.css
new file mode 100644
index 0000000..1264b87
--- /dev/null
+++ b/public/css/syntax.css
@@ -0,0 +1,66 @@
+.hll { background-color: #ffffcc }
+ /*{ background: #f0f3f3; }*/
+.c { color: #999; } /* Comment */
+.err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.k { color: #006699; } /* Keyword */
+.o { color: #555555 } /* Operator */
+.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.cp { color: #009999 } /* Comment.Preproc */
+.c1 { color: #999; } /* Comment.Single */
+.cs { color: #999; } /* Comment.Special */
+.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.ge { font-style: italic } /* Generic.Emph */
+.gr { color: #FF0000 } /* Generic.Error */
+.gh { color: #003300; } /* Generic.Heading */
+.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.go { color: #AAAAAA } /* Generic.Output */
+.gp { color: #000099; } /* Generic.Prompt */
+.gs { } /* Generic.Strong */
+.gu { color: #003300; } /* Generic.Subheading */
+.gt { color: #99CC66 } /* Generic.Traceback */
+.kc { color: #006699; } /* Keyword.Constant */
+.kd { color: #006699; } /* Keyword.Declaration */
+.kn { color: #006699; } /* Keyword.Namespace */
+.kp { color: #006699 } /* Keyword.Pseudo */
+.kr { color: #006699; } /* Keyword.Reserved */
+.kt { color: #007788; } /* Keyword.Type */
+.m { color: #FF6600 } /* Literal.Number */
+.s { color: #d44950 } /* Literal.String */
+.na { color: #4f9fcf } /* Name.Attribute */
+.nb { color: #336666 } /* Name.Builtin */
+.nc { color: #00AA88; } /* Name.Class */
+.no { color: #336600 } /* Name.Constant */
+.nd { color: #9999FF } /* Name.Decorator */
+.ni { color: #999999; } /* Name.Entity */
+.ne { color: #CC0000; } /* Name.Exception */
+.nf { color: #CC00FF } /* Name.Function */
+.nl { color: #9999FF } /* Name.Label */
+.nn { color: #00CCFF; } /* Name.Namespace */
+.nt { color: #2f6f9f; } /* Name.Tag */
+.nv { color: #003333 } /* Name.Variable */
+.ow { color: #000000; } /* Operator.Word */
+.w { color: #bbbbbb } /* Text.Whitespace */
+.mf { color: #FF6600 } /* Literal.Number.Float */
+.mh { color: #FF6600 } /* Literal.Number.Hex */
+.mi { color: #FF6600 } /* Literal.Number.Integer */
+.mo { color: #FF6600 } /* Literal.Number.Oct */
+.sb { color: #CC3300 } /* Literal.String.Backtick */
+.sc { color: #CC3300 } /* Literal.String.Char */
+.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.s2 { color: #CC3300 } /* Literal.String.Double */
+.se { color: #CC3300; } /* Literal.String.Escape */
+.sh { color: #CC3300 } /* Literal.String.Heredoc */
+.si { color: #AA0000 } /* Literal.String.Interpol */
+.sx { color: #CC3300 } /* Literal.String.Other */
+.sr { color: #33AAAA } /* Literal.String.Regex */
+.s1 { color: #CC3300 } /* Literal.String.Single */
+.ss { color: #FFCC33 } /* Literal.String.Symbol */
+.bp { color: #336666 } /* Name.Builtin.Pseudo */
+.vc { color: #003333 } /* Name.Variable.Class */
+.vg { color: #003333 } /* Name.Variable.Global */
+.vi { color: #003333 } /* Name.Variable.Instance */
+.il { color: #FF6600 } /* Literal.Number.Integer.Long */
+
+.css .o,
+.css .o + .nt,
+.css .nt + .nt { color: #999; }
diff --git a/public/cvs.html b/public/cvs.html
new file mode 100644
index 0000000..dcbc9fb
--- /dev/null
+++ b/public/cvs.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>CVS &middot; GIMP Developer Resources</title>
+  <meta name="description" content="CVS migrated to Subversion." />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>CVS</h1>
+  <time datetime=2022-07-19T20:45:01&#43;0100 class="post-date">Tue, Jul 19, 2022</time>
+  <p>GIMP doesn&rsquo;t use CVS any longer. The source code repository has been
+migrated to <a href="git">git</a>.</p>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/default.css b/public/default.css
new file mode 100644
index 0000000..597c8cd
--- /dev/null
+++ b/public/default.css
@@ -0,0 +1,300 @@
+/* This is the stylesheet of http://developer.gimp.org/ and should
+ * only be changed by the designer or the website maintainer. Remember
+ * that changes done here will change the appearance on the whole site
+ * so keep a backup of this file while working with it. Niklas */
+
+/* Copyright (C) 2002-2006 by The GIMP Web Team - Contributions by:
+ * Ville Pätsi (drc), Henrik Brix Andersen (brix), Carol Spears
+ * (carol), Niklas Mattisson (scizzo), Raphaël Quinet (raphael),
+ * Branko Collin (branko), Sven Neumann (neo) and Øyvind Kolås
+ * (pippin)
+ *
+ * This style sheet and corresponding site layout are designed to be
+ * used on official GIMP web sites only.  You may copy some parts of
+ * this file into your own style sheet as long as you create your own
+ * design that is significantly different from the one used on GIMP
+ * web sites (layout, colors, etc.) and you give appropriate credit if
+ * you copy more than a few lines from this file (do not claim that
+ * you wrote everything yourself).
+ */
+
+body {
+  background: white;
+  color: black;
+  font-family: arial,helvetica,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+
+a {
+  background: transparent;
+  color: #566e41;
+  text-decoration: none;
+  font-weight: bold;
+}
+
+a:hover        {
+  background: transparent;
+  color: #991e1e;
+  text-decoration: underline;
+  font-weight: bold;
+}
+
+img {
+  border: none;
+}
+
+img.map {
+  margin: 0px;
+  padding: 0px;
+}
+
+p {
+  margin-top: 1.33em;
+  margin-right: 1.33em;
+  text-align: justify;
+}
+
+p.title {
+  font-size: 110%;
+}
+
+p.images img {
+  border: solid black 2px;
+}
+
+p.framelessimages,
+p.images {
+  text-align: center;
+}
+
+p.screenshot {
+  clear:both;
+  padding: 1em;
+}
+
+p.screenshot .mediaobject {
+  float: left;
+  background: url(/images/shadow.png) no-repeat bottom right !important;
+  background: url(/images/shadow.gif) no-repeat bottom right;
+  margin: 0 0 6px 6px;
+  padding: 4px;
+}
+
+p.screenshot .mediaobject img {
+  border: none;
+  margin: -6px 2px -2px -6px;
+}
+
+li {
+  text-align: justify;
+}
+
+td {
+  padding: 5px 5px 0px 0px;
+}
+
+td.main {
+  padding: 10px;
+  padding-left: 40px;
+  padding-right: 40px;
+  vertical-align: top;
+  width: 100%;
+}
+
+td.map {
+  margin: 0px;
+  padding: 0px;
+}
+
+h1 {
+  background-color: #dce5d4;
+  color: black;
+  border: thin solid #a9b3a1;
+  padding: 5px;
+  margin-bottom: 30px;
+  margin-left: -30px;
+  margin-right: -30px;
+  font-weight: bold;
+  font-size: 110%;
+  text-align: center;
+}
+
+h2 {
+  font-weight: bold;
+  clear: both;
+  font-size: 110%;
+}
+
+h3 {
+  font-weight: bold;
+  clear: both;
+  font-size: 105%;
+}
+
+td.menu {
+  background: #dce5d4;
+  color: black;
+  border-style: solid;
+  border-color: #a9b3a1;
+  border-top-width: 0px;
+  border-bottom-width: 0px;
+  border-left-width: 0px;
+  border-right-width: 1px;
+  padding: 10px;
+  font-weight: bold;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+table.layout {
+  clear: both;
+  margin: 0px;
+  border: none;
+  padding: 0px;
+  border-collapse: collapse;
+  width: 100%;
+}
+
+div.titlebar {
+  background-image: url("../images/developer-barbg.png");
+  background-repeat: repeat-x;
+  height: 100px;
+}
+
+div.informaltable table {
+  border-collapse: collapse;
+}
+
+div.informaltable table tr td, div.informaltable table tr th {
+  padding: 5px;
+}
+
+img.titlebarleft {
+  float: left;
+}
+
+img.titlebarright {
+  float: right;
+}
+
+div.linkbar, div.navbar {
+  clear: both;
+  background: #dce5d4;
+  color: black;
+  border: solid #a9b3a1;
+  border-width: 1px 0px 1px 0px;
+  padding: 5px 5px 5px 5px;
+  font-weight: bold;
+  text-align: center;
+}
+
+span.footerleft {
+  float: left;
+  padding: 20px;
+}
+
+span.footerright {
+  float: right;
+  padding: 20px;
+}
+
+span.shrink1 {
+  padding-left: 10px;
+  font-size: 95%;
+}
+
+span.shrink2 {
+  padding-left: 20px;
+  font-size: 90%;
+}
+
+span.shrink3 {
+  padding-left: 30px;
+  font-size: 85%;
+}
+
+div.rss {
+  margin-top: 1em;
+  margin-bottom: 2em;
+}
+
+div.rss dd p {
+  white-space: pre;
+  border-width: 0px;
+  padding: 0px;
+  border: 2px solid red;
+}
+
+div.rss img {
+  border: none;
+  float: right;
+  border: 2px solid red;
+}
+
+div.rss p {
+  background-color: green;
+  display: inline;
+}
+
+span.date {
+  display: block;
+  font-size: 75%;
+  padding-right: 1em;
+  font-style: italic;
+  background-color: #ddd;
+  text-align: right;
+  border-left: 1px solid #888;
+  border-top: 1px solid #888;
+  border-right: 1px solid #888;
+}
+
+div.rss ul {
+  padding-right: 1em;
+  margin-top: -0.1em;
+  padding-left: 2.0em;
+}
+
+div.rss strong {
+  font-weight: bold;
+  font-style: italic;
+  color: #566e41;
+}
+div.rss b {
+  font-weight : normal;
+  color: #000:
+}
+
+
+div.rss b {
+  font-weight: normal;
+}
+
+div.rss ul li {
+  text-align: left;
+}
+
+div.rss_entry {
+  margin-bottom: 1em;
+}
+
+div.qandaset tr.question td {
+  padding-top: 15px;
+}
+
+div.qandaset tr.question p {
+  margin: 0px;
+}
+
+@media print {
+
+div.navbar, div.linkbar, td.menu {
+  display: none
+}
+
+td.main {
+  padding-right: 0px;
+  padding-left: 0px;
+}
+
+}
diff --git a/public/favicon.png b/public/favicon.png
new file mode 100644
index 0000000..84cce4d
Binary files /dev/null and b/public/favicon.png differ
diff --git a/public/gimpcon/2000/people-small.jpg b/public/gimpcon/2000/people-small.jpg
new file mode 100644
index 0000000..51f90a1
Binary files /dev/null and b/public/gimpcon/2000/people-small.jpg differ
diff --git a/public/gimpcon/2003/gimpcon2003-mins-1/index.html 
b/public/gimpcon/2003/gimpcon2003-mins-1/index.html
new file mode 100644
index 0000000..a1906ae
--- /dev/null
+++ b/public/gimpcon/2003/gimpcon2003-mins-1/index.html
@@ -0,0 +1,372 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title> &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1></h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <pre><code>&lt;title&gt;The First Big Serious Meeting of GIMPCon 2003&lt;/title&gt;
+&lt;titleabbrev&gt;First Meeting&lt;/titleabbrev&gt;
+&lt;summary&gt;Minutes of the first GIMPCon 2003 Meeting&lt;/summary&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  The idea of a foundation was proposed. Lots of ideas were thrown
+  about as to what kind of remit it would have. If created, the
+  foundation would certainly have 2 things we don't have at the
+  moment - a bank account people could donate to, and a focus on
+  &lt;quote&gt;marketing&lt;/quote&gt; in the broadest sense of the word.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Some of the issues were whether the foundation would be set up
+  in Europe or in the US (in the US it might make it easier to get
+  donations from US companies, but in Europe we're not as
+  litigious, so setting up would certainly cost less, but then we
+  probably wouldn't have NPO status in the US), whether it would
+  have any technical aspect (that is, would the foundation act as
+  a kind of steering committee for the general direction of the
+  GIMP?), and how, if the issue came up, we might pay someone.
+&lt;/para&gt;
+
+&lt;para&gt;
+  This led onto a discussion of whether the foundation would be
+  responsible for setting release dates, or whether we would have
+  a separate...
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  The general consensus (more on that later) was that a release
+  manager is a good thing. There do seem to be a few different
+  ideas of what the role would entail. The general idea would be
+  that the release manager would be responsible for following CVS
+  and know at what stage a given feature is at, follow bugzilla
+  making sure that bugs got milestoned for some release in order
+  of their priority, would annoy people to get commits in before
+  feature freeze dates or postpone mercilessly features which are
+  not finished.
+&lt;/para&gt;
+
+&lt;para&gt;
+  It was agreed that a release schedule would be helpful to define
+  the perimeters of responsibility of the release manager -
+  basically, some way to set up large milestones to aim for with
+  things to go into those milestones. This release schedule would
+  be subject to revision, and would be no more realistic than any
+  other release schedule, but it would serve as a guide for
+  development. Dan agreed to draw up a first draft of this, and
+  we'll have something more concrete before the end of the
+  weekend.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The questions that came up about the release manager were things
+  like where his authority comes from, how does he decide which
+  bugs are important and which features can be postponed and so
+  on. In other words, how do decisions get made. Is the release
+  manager a benevolent dictator, or does he answer to the larger
+  developer and user community? If so, to what extent? Is backing
+  out CVS commits OK, for example?
+&lt;/para&gt;
+
+&lt;para&gt;
+  So we started talking about how to get contentious decisions
+  made.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  Currently, there are two ways to get something done in the
+  GIMP. First, you can write decent code and patches for a while,
+  until you get CVS commit access, then you write whatever feature
+  you're interested in, and commit it. If no-one backs it out,
+  then it's in.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Second, you can bring it up on the mailing list, or in bugzilla,
+  or in IRC (more on communication later), and discuss it until
+  there is a consensus. However, we tend to be pretty bad at
+  reaching consensus on anything even slightly contentious. The
+  important questions to be answered any time a discussion like
+  this comes up are what's going to be done, and who's going to do
+  it.
+&lt;/para&gt;
+
+&lt;para&gt;
+  It was agreed that beyond a certain point, there is generally
+  very little technical merit to these types of discussions. It
+  was felt that about 5 days was enough for everyone with an
+  opinion on a given matter to make that opinion known, and that
+  after that point, it would be an idea to have a summary of the
+  salient points and close the discussion. That means, the people
+  here would stop posting to the discussion. Of course, if other
+  people want to keep on flaming, they're free to do so, but
+  people will just ignore the thread.
+&lt;/para&gt;
+
+&lt;para&gt;
+  At this point, the summary should sum up the various points, and
+  finish with an answer to those two questions - what gets done,
+  and who's doing it.
+&lt;/para&gt;
+
+&lt;para&gt;
+  We may even have a bake-off system. If there are two competing
+  ideas for the way something should be done, currently no-one
+  tends to do it. Ideally, both people would do it and we pick the
+  best one.
+&lt;/para&gt;
+
+&lt;para&gt;
+  This brings up another point, though - in general, what is
+  authority? And in particular, at what point has someone gained
+  enough standing and authority to post one of these thread-ending
+  summaries? Some discussion is going to be had on that over the
+  weekend.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  We talked about various ways of improving the way we use these
+  tools. First is whether it makes sense for us to have module
+  owners, and if so, who should they be? Should we use the system
+  of bug owners to track who is responsible for a bug at any given
+  time, or is the current scheme of bugs gimp org sufficient? Do
+  we need to change bugs gimp org to something else to avoid
+  confusion with the old bug reporting address? There were a few
+  open points in here.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Second, we talked about pre-release branches, and whether it
+  would be worthwhile having a mozilla style release cycle with
+  feature-freezes, followed by concurrent bug-fixing before
+  unstable releases, freeing up the branch for bigger stuff that
+  people want to start committing. In general, it was felt that
+  there was very little to be gained from that, and the current
+  system of a long-lived devel branch with self-imposed feature
+  freezes every few weeks was a better way to go.
+&lt;/para&gt;
+
+&lt;para&gt;
+  We also expressed a desire to have more redundancy in the
+  non-technical aspects of The GIMP, things like the mailing lists
+  and ftp mirror lists should have more than one person with the
+  ability to change them so that if there's a problem, and that
+  person has no time to take care of it, then someone
+  will. Perhaps using a Debian or GNU style ticket system might
+  help here fro these particular tasks? In any case, everyone in a
+  given group should know everyone else in the group, and know
+  more or less that when an issue gets in, it will be handled by
+  at least one person.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  It was agreed that we need to communicate better (that's a
+  no-brainer, really). For a start, every developer should be
+  subscribed to the userlist. gimp-devel (if it doesn't disappear
+  altogether) would only be used for technical discussions of
+  implementation details - all the philosophical level discussions
+  of new features, ui changes, release mechanisms and so on should
+  be discussed on the user list.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Basically, we're going to talk a lot more about how the
+  developers can interface better with the users.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  Not too many of these... we will have a release manager, but we
+  need to define exactly what his/her remit will be. And who it
+  will be. We agreed that the &lt;quote&gt;5 days and it's dead&lt;/quote&gt;
+  rule for threads makes sense, so that will be done.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  &lt;orderedlist&gt;
+    &lt;listitem&gt;
+      Roadmap - rough release schedule, we will have a first draft
+      today.
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      GIMP Foundation - we need to define its responsibilities,
+      set up election rules, and get this set up. The principle of
+      the foundation is more or less agreed.
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      Communication
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      Release Manager - what'll he do, who'll he be. This should
+      be short once we have discussed communication channels a
+      bit.
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      Technie stuff - Sven and mitch are going to talk to us about
+      the re-organisation of the code, GObjectification of
+      everything, and other stuff. Daniel and Calvin are going to
+      talk to us about GEGL and how they feel The GIMP could use
+      it. This will probably be a two-way discussion about what
+      kind of things we expect GEGL to furnish as well.
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      GIMP tutorials - jimmac and nomis are going to do some
+      presentations for people, which should be good.
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      Plug-in distribution - 3 years ago this was discussion, yosh
+      has been working on something as a proof-of-concept, it
+      would be nice to address this and get something in place
+      soon.
+    &lt;/listitem&gt;
+  &lt;/orderedlist&gt;
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2003/gimpcon2003-mins-2/index.html 
b/public/gimpcon/2003/gimpcon2003-mins-2/index.html
new file mode 100644
index 0000000..a423f57
--- /dev/null
+++ b/public/gimpcon/2003/gimpcon2003-mins-2/index.html
@@ -0,0 +1,428 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title> &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1></h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <pre><code>&lt;title&gt;The Second Big Serious Meeting of GIMPCon2003&lt;/title&gt;
+&lt;titleabbrev&gt;Second Meeting&lt;/titleabbrev&gt;
+&lt;summary&gt;Minutes of the second GIMPCon 2003 Meeting&lt;/summary&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  There was quite a lot of talk on what was required for a 2.0
+  release. It was agreed that a pre-release should have feature
+  complete versions of everything going into 2.0, for obvious
+  reasons. These can be somewhat buggy, but they should at least
+  support what is supported in the 1.2 equivalents.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The major features or API changes which it was agreed are
+  necessary are:
+&lt;orderedlist&gt;
+  &lt;listitem&gt;Complete path tool (nomis)&lt;/listitem&gt;
+  &lt;listitem&gt;Remove libgck (Sven and mitch)&lt;/listitem&gt;
+  &lt;listitem&gt;Finish the text tool (Sven)&lt;/listitem&gt;
+  &lt;listitem&gt;Documentation (more on this later)&lt;/listitem&gt;
+  &lt;listitem&gt;Web-site (again, more on this later)&lt;/listitem&gt;
+  &lt;listitem&gt;Some libgimp changes which need to be made now so that
+  we can havebinary compatibility across a 2.2 release&lt;/listitem&gt;
+&lt;/orderedlist&gt;
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  We felt that with pre-releases, the documentation will become
+  more complete. There should, however, be an effort to actively
+  get people writing docs. The main requirement, then, for 2.0
+  pre-releases will be to have a working help framework, so that
+  when people hit F1 for help, they at least get a message saying
+  &lt;quote&gt;This help item does not exist yet.If you would like to
+  help write it, contact docs gimp org&lt;/quote&gt; or some such.
+  &lt;footnote&gt;
+&lt;para&gt;
+      That email address doesn't exist (yet). People interested in
+      helping with the documentation should have a look at the
+      &lt;ulink url=&quot;http://wiki.gimp.org/gimp/GimpDocs&quot;&gt;Wiki&lt;/ulink&gt;.
+    &lt;/para&gt;
+  &lt;/footnote&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  If documentation is going to be released as a separate package,
+  as now seems likely, then we will need to define the interface
+  between the core and the help pages reasonably quickly. The
+  general idea is to more or less hard-code tagnames for a
+  particular help topic, and get the core and help using the same
+  tags, and agreeing on how they be communicated. This will
+  presumably require a considerable amount of communication with
+  the help team.
+&lt;/para&gt;
+
+&lt;para&gt;
+  We also need to have the docs browsable online so that if people
+  want to browse them they can.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  The new site should switch over to www.gimp.org soon. There will
+  obviously be quite a bit of pain involved as content gets added
+  and we get lots of &lt;quote&gt;your website sucks&lt;/quote&gt; type
+  feedback, but this will only befor the short term. We should
+  switch to mmaybe as the main site before 2.0pre1. It was
+  suggested to do it even earlier than that, in the region of 2 to
+  3 weeks time.
+&lt;/para&gt;
+
+&lt;para&gt;
+  It was also discussed whether it was a good idea to have a
+  separate coordinator for the website.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  As an approximate set of ideals, it was agreed that we want
+  this: 2.0pre1 very soon, 2.0 soon, 2.2 next year, and GEGL
+  integration the end of next Summer.
+&lt;/para&gt;
+
+&lt;para&gt;
+  More specifically, the near-term release schedule that we agreed
+  was reasonable is this:
+&lt;/para&gt;
+
+&lt;para&gt;
+  1 or 2 developer releases (one now, more or less, and another
+  one in another 2 weeks). 6 weeks time (end of September 2003):
+  First pre-release of 2.0, including the features mentioned
+  above, and any other minor features that people code in the
+  meantime (hint, hint). Roughly 3 months later: 2.0
+&lt;/para&gt;
+
+&lt;para&gt;
+  It was more or less agreed that 3 to 4 weeks was a nice
+  turnaround time for pre-releases, so that would imply between 4
+  and 6 (inclusive) pre-releases before 2.0.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The reason for not having a pre-release straight away was
+  mentioned above: to be feature complete, some features need a
+  little more than 2 weeks work, and people have real lives. So 6
+  weeks was felt to be a reasonable amount of time to have the
+  path tool and the help browser in place.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  The developer release will also be a prelude to a bug week. We
+  would like people (that's you, in particular) to actively work
+  on bugzilla clean-up for 2.0 - bugs need to be prioritized,
+  unconfirmed bugs need confirming and milestoning (and if you're
+  feeling really helpful, fixing). The idea would more or less be
+  that the 2.0 milestone will be locked down for anything other
+  than serious bugs after this bug week, so if there are bugs that
+  are annoying you a lot, this is your chance to get them
+  considered and worked on for the 2.0 releases.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Just to spell that out - at the end of the bug week, any bugs
+  reported against The GIMP in CVS will be milestoned for 2.0.x,
+  or even 2.2, unless they are considered blockers for the
+  release. If we want to get a 2.0 release soon, we need to get
+  lots of testing done, and lots of bugfixing done, but we also
+  need to choose what to do and what not to do. We felt this was a
+  reasonable compromise.
+&lt;/para&gt;
+
+&lt;para&gt;
+  It was also re-discussed whether it would make sense to have
+  module owners. The conclusion was that for certain components,
+  it makes sense to have a smaller group of people getting the bug
+  reports and having responsibility for them. This would be done
+  via mail aliases for the group of people guiding the component,
+  in a similar way to that which is used for (say) gtktreeview in
+  gtk+.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The module owner group wouldn't have to be technical, and we
+  should be actively recruiting people to do this kind of work and
+  leave more time for programmers to program.
+&lt;/para&gt;
+
+&lt;para&gt;
+  This leads us on to...
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  There are lots of non-technical jobs that need doing around the
+  gimp-docs, website, bugzilla triage, internationalisation,
+  etc. Often it is quite difficult to know what needs doing, and
+  who to contact about getting it done. We need a list of
+  bite-sized tasks that people can do, including the kinds of
+  tasks that only take a few hours a week to do, but are ongoing
+  tasks.
+&lt;/para&gt;
+
+&lt;para&gt;
+  We used to have a TODO, and we could use that system again, if
+  someone were maintaining it. That could come under the remit of
+  the release manager to some extent, but since the mainenance of
+  the TODO list is mostly a non-technical task, anyone could do it
+  (in fact, as an example of a task, &lt;quote&gt;Maintaining the TODO
+  list&lt;/quote&gt; would go in the TODO list).
+&lt;/para&gt;
+
+&lt;para&gt;
+  We might do this through Bugzilla using a keyword to allow
+  getting at the list easily, which would imply getting more
+  people looking at bugzilla regularly. Then again, if there were
+  a link to a bugzilla query on the webpage marked &lt;quote&gt;GIMP
+  TODO list&lt;/quote&gt; we could get that for free.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  Basically, we're agreed this is a good idea to have some kind of
+  public face people and companies can contribute to. There is no
+  problem with having 2 foundations, one in Europe and one in the
+  US. It was more or less agreed that assigning copyright to the
+  foundation isn't going to happen soon (for a start, so many
+  plug-in authors have gone their merry way and are almost
+  unfindable) This may hapen in the future, but most people felt
+  that it would not be something they'd be happy doing personally.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Other people said they would prefer to assign copyright to an
+  organism under the jurisdiction of European law rather than
+  under US jurisdiction.
+&lt;/para&gt;
+
+&lt;para&gt;
+  So, to sum up, there's no reason not to have one of
+  these. Daniel Rogers has agreed to do the necessary paperwork
+  and set up the foundation and the bank account for donations in
+  the US. Pretty quickly after getting that up and going, we will
+  need to get a board of directors and a set of by-laws. We know
+  lots of people who can help with this (in particular, the GNOME
+  foundation and the FSF).
+&lt;/para&gt;
+
+&lt;para&gt;
+  If someone wants to set up an equivalent in Europe, we're all
+  ears. Currently no-one has said they'll do it, so it's an open
+  point. To start, the foundation will only be a board an a bank
+  account - in the future, we could expand its responsibilities to
+  promotional work, a single point where people could go to get
+  speakers, a group that does press releases and so on. It was
+  agreed that at least in the short term it is undesirable to have
+  the foundation have actual control of source code, just in case
+  the foundation then gets sued.
+&lt;/para&gt;
+
+&lt;para&gt;
+  In brief, it's being set up with a very narrow remit, with the
+  possibility to expand later if it is felt that there is a need.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  The responsibilities are:
+&lt;itemizedlist&gt;
+  &lt;listitem&gt;
+    Follow CVS so that he can write release notes, and knows at
+    any given time who is working on what, and at what stage it
+    is
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    Follow bugzilla closely
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    Make releases regularly, according to the roadmap (or make
+    sure releases get made)
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    Update the roadmap to reflect reality
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    Write release notes for the releases (keep NEWS up to date)
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    Generally annoy people sending mails to the mailing lists and
+    sending content to the website to explain the state of play
+    and get people to work on stuff.
+  &lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  Dave Neary (me) agreed to do this. He already regrets it.
+&lt;/para&gt;
+
+&lt;para&gt;
+  That's it folks - today, Sven and mitch are going to talk to us
+  about the major changes in the codebase and the general utility
+  stuff which exists now which has been written from scratch,
+  Calvin and Daniel are going to talk about GEGL and how we can
+  use it, and work towards having a GEGL that we can use in a
+  year. I'm going to lead a discussion on communication in the
+  GIMP, and how to maybe make it easier for people to contribute,
+  and jimmac is going to demonstrate what a power user really is.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Goodbye from everyone at camp. As usual, comments are welcome on
+  all this stuff. While on a philosophical level, we are agreed on
+  the direction things should take, all the details are open to
+  discussion, if there's any reason to change them.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2003/gimpcon2003-mins-3/index.html 
b/public/gimpcon/2003/gimpcon2003-mins-3/index.html
new file mode 100644
index 0000000..5fc08e9
--- /dev/null
+++ b/public/gimpcon/2003/gimpcon2003-mins-3/index.html
@@ -0,0 +1,313 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title> &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1></h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <pre><code>&lt;title&gt;The Third Big Serious Meeting of GIMPCon 2003&lt;/title&gt;
+&lt;titleabbrev&gt;Third Meeting&lt;/titleabbrev&gt;
+&lt;summary&gt;Minutes of the third GIMPCon 2003 Meeting&lt;/summary&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  Like in any Free Software project, developers are leaving from
+  time to time to pursue other projects. And from time to time,
+  new developersare joining the team and starting to contribute.
+  However, it looks like the number of new developers joining the
+  GIMP development has been decreasing in the recent years. This
+  may be due in part to the fact that there haven't been any major
+  changes in a stable release for a long time.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Another reason may be that it is difficult to build the
+  development version because it depends on released versions of
+  some libraries that are not included yet in the major GNU/Linux
+  distributions (e.g., GTK+ version 2.2.2). Also, the number of
+  dependencies for GIMP 1.3.x is much higher than the number of
+  dependencies for GIMP 1.2.x, so it ismore difficult to have a
+  working build environment for the 1.3.x version. This problem
+  may be solved as time passes, because more and more
+  distributions will include the required libraries.
+&lt;/para&gt;
+
+&lt;para&gt;
+  There should be a section on www.gimp.org or developer.gimp.org
+  titled &lt;quote&gt;How to contribute?&lt;/quote&gt; or &lt;quote&gt;How to get
+  involved?&lt;/quote&gt;. It should be easy for potential new
+  developers to see where to start and how they can help. More on
+  that below.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  There was a discussion about binary distributions. This may help
+  people to try some versions of the GIMP (especially the
+  development versions) without having to compile everything.
+  However, maintaining binaries is a lot of work, even if we only
+  maintain binaries supplied by others. In addition, this would
+  bring some additional responsabilities that we do not want to
+  have. For these reasons, it was decided that www.gimp.org would
+  not host any binaries but would link to the pages of those who
+  are providing binaries for various platforms.
+&lt;/para&gt;
+
+&lt;para&gt;
+  It would be very nice to have Windows binaries for the
+  development version.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  It was suggested to make it easier for users to submit bug
+  reports, for example by having an e-mail address to which bug
+  reports can be sent without having to register to Bugzilla (we
+  already have such an address, although it is not widely known).
+  This proposal was rejected because most of the bug reports
+  (especially from new users) are incomplete and require
+  additional information. If the user does nothave a Bugzilla
+  account, it is not possible to rely on the automatic
+  notification system to send messages to the user when a comment
+  is added to their bug report or when the status of their bug
+  report changes.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Most developers consider Bugzilla to be a very valuable tool
+  that works well. Instead of trying to hide Bugzilla from the
+  users, we should try to make it as easy as possible for the new
+  users to join. This is already done to some extent by the bug
+  submission wizard available from http://bugs.gimp.org/. There is
+  a small problem with the GNOME2 keyword that prevents the open
+  GIMP bugs from being displayed to the user and we should try to
+  get this fixed.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  There are many open bug reports or proposals for enhancements
+  that would be relatively easy to fix or implement. We should
+  make it easier for potential contributors to see the list of
+  easy tasks that are open. The &lt;quote&gt;easy tasks&lt;/quote&gt; should
+  include anything that can be done in one or two hours by an
+  average developer or maybe a bit more if the contributor is not
+  familiar with the code.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The best way to keep the list of open tasks up-to-date is
+  probably to base it on Bugzilla. We could for example use a
+  Bugzilla keyword for all bugs that are easy to fix (there is
+  already a keyword &lt;quote&gt;easy-fix&lt;/quote&gt; reserved for that,
+  although we could invent our own). It would then be easy to
+  create a Bugzilla query showing the list of easy tasks. Another
+  solution would be to have a page on www.gimp.org or
+  developer.gimp.org containing a list of all these bugs, with
+  direct links to the corresponding bug reports. The second
+  solution may require a bit more work because it would have to be
+  maintained by someone, but it might be a bit easier to use.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  Sometimes, there is a lack of communication between users and
+  developers of The GIMP. After some discussion, it was decided
+  that we should not merge the mailing lists gimp-user and
+  gimp-developer because this could cause various problems: the
+  combined amount of traffic may be too high for some subscribers,
+  the discussions among developers may be confusing for some
+  users, and in general we should let people subscribe to what
+  they are interested in, instead of removing this option by
+  merging the lists (we cannot force anybody to read what they do
+  not want to read).
+&lt;/para&gt;
+
+&lt;para&gt;
+  But it would be very useful for the developers to get more
+  feedback from the users, especially about UI and usability
+  issues. For this reason, all developers are strongly encouraged
+  to subscribe to the gimp-user list.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The web site (www.gimp.org) should contain a list of the various
+  sources of information about the GIMP: mailing lists, newsgroup,
+  Yahoo group, GUG, other web sites such as linuxgraphic.org or
+  gimp.de, etc. The description of the mailing lists should
+  encourage people to subscribe to both the users and developers
+  lists.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  We hope that the next stable release will attract new
+  developers. This has been the case when 1.0 and 1.2 were
+  released. The transition to the new web site will also help,
+  especially if the navigation menu contains some useful items
+  such as &lt;quote&gt;Bugs&lt;/quote&gt;, &lt;quote&gt;FAQ&lt;/quote&gt;, etc. The
+  following items should be available in the web site:
+&lt;itemizedlist&gt;
+  &lt;listitem&gt;
+    &lt;quote&gt;How to contribute?&lt;/quote&gt; or &lt;quote&gt;Getting involved&lt;/quote&gt;
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    List of tasks
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    List of sources of information (mailing lists, newsgroup, ...)
+  &lt;/listitem&gt;
+  &lt;listitem&gt;
+    FAQ
+  &lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  As with the other documents summarizing what is happening here
+  at GimpCon, comments are welcome...
+&lt;/para&gt;
+
+&lt;para&gt;
+  Written by Raphaël Quinet
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2003/gimpcon2003-mins/index.html b/public/gimpcon/2003/gimpcon2003-mins/index.html
new file mode 100644
index 0000000..4e30e2d
--- /dev/null
+++ b/public/gimpcon/2003/gimpcon2003-mins/index.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title> &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1></h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <pre><code>&lt;title&gt;Minutes of The GIMP Developers Conference 2003&lt;/title&gt;
+&lt;titleabbrev&gt;Minutes&lt;/titleabbrev&gt;
+&lt;summary&gt;Minutes of the GIMPCon 2003 Meetings&lt;/summary&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  This meeting was held in the evening of August 7th, 2003. The main
+  issues discussed were:
+  &lt;itemizedlist&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-1&quot;
+      localinfo=&quot;foundation&quot;&gt;The GIMP foundation&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-1&quot;
+      localinfo=&quot;manager&quot;&gt;Release manager&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-1&quot;
+      localinfo=&quot;decisions&quot;&gt;Decision making (or lack of
+      it)&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-1&quot;
+      localinfo=&quot;general&quot;&gt;General stuff about CVS,
+      Bugzilla&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-1&quot;
+      localinfo=&quot;communication&quot;&gt;Communication&lt;/olink&gt;
+    &lt;/listitem&gt;
+  &lt;/itemizedlist&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  The minutes from this meeting can be found &lt;olink
+  targetdocent=&quot;gimpcon2003-mins-1&quot;&gt;here&lt;/olink&gt;.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  This meeting was held in the evening of August 8th, 2003. The
+  main issues discussed were:
+  &lt;itemizedlist&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;features&quot;&gt;Features required for 2.0&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;documentation&quot;&gt;Documentation&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;web&quot;&gt;Web-site&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;roadmap&quot;&gt;Roadmap&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;bugs&quot;&gt;Bugs&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;tasks&quot;&gt;Task List&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;foundation&quot;&gt;GIMP Foundation&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-2&quot;
+      localinfo=&quot;manager&quot;&gt;Release manager&lt;/olink&gt;
+    &lt;/listitem&gt;
+  &lt;/itemizedlist&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  The minutes from this meeting can be found &lt;olink
+  targetdocent=&quot;gimpcon2003-mins-2&quot;&gt;here&lt;/olink&gt;.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  This meeting was held in the afternoon of August 9th, 2003. The
+  main issues discussed were:
+  &lt;itemizedlist&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-3&quot;
+      localinfo=&quot;developers&quot;&gt;How to get new
+      developers?&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-3&quot;
+      localinfo=&quot;binary&quot;&gt;De we need binary
+      distributions?&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-3&quot;
+      localinfo=&quot;bugzilla&quot;&gt;Is Bugzilla too hard to use for new
+      users?&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-3&quot;
+      localinfo=&quot;tasks&quot;&gt;List of open tasks&lt;/olink&gt;
+    &lt;/listitem&gt;
+    &lt;listitem&gt;
+      &lt;olink targetdocent=&quot;gimpcon2003-mins-3&quot;
+      localinfo=&quot;mailinglists&quot;&gt;Mailing lists&lt;/olink&gt;
+    &lt;/listitem&gt;
+  &lt;/itemizedlist&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  The minutes from this meeting can be found &lt;olink
+  targetdocent=&quot;gimpcon2003-mins-3&quot;&gt;here&lt;/olink&gt;.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2003/index.html b/public/gimpcon/2003/index.html
new file mode 100644
index 0000000..6072e42
--- /dev/null
+++ b/public/gimpcon/2003/index.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>GIMP Developers Conference 2003 &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/gimpcon/2003/index.xml"; rel="alternate" type="application/rss+xml" 
title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+<li>
+    <span><a href="https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-1/";></a> <time class="pull-right 
post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-2/";></a> <time class="pull-right 
post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-3/";></a> <time class="pull-right 
post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins/";></a> <time class="pull-right 
post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li>
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2003/index.xml b/public/gimpcon/2003/index.xml
new file mode 100644
index 0000000..ffd7c84
--- /dev/null
+++ b/public/gimpcon/2003/index.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>GIMP Developers Conference 2003 on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/gimpcon/2003/</link>
+    <description>Recent content in GIMP Developers Conference 2003 on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/gimpcon/2003/index.xml"; rel="self" type="application/rss+xml" />
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-1/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-1/</guid>
+      <description>&amp;lt;title&amp;gt;The First Big Serious Meeting of GIMPCon 2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;First Meeting&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the 
first GIMPCon 2003 Meeting&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; The idea of a foundation was 
proposed. Lots of ideas were thrown about as to what kind of remit it would have. If created, the foundation 
would certainly have 2 things we don&#39;t have at the moment - a bank account people could donate to, and a 
focus on &amp;lt;quote&amp;gt;marketing&amp;lt;/quote&amp;gt; in the broadest sense of the word.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-2/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-2/</guid>
+      <description>&amp;lt;title&amp;gt;The Second Big Serious Meeting of GIMPCon2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;Second Meeting&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the 
second GIMPCon 2003 Meeting&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; There was quite a lot of talk on 
what was required for a 2.0 release. It was agreed that a pre-release should have feature complete versions 
of everything going into 2.0, for obvious reasons. These can be somewhat buggy, but they should at least 
support what is supported in the 1.2 equivalents. &amp;lt;/para&amp;gt; &amp;lt;para&amp;gt; The major 
features or API changes which it was agreed are necessary are: &amp;lt;orderedlist&amp;gt; 
&amp;lt;listitem&amp;gt;Complete path tool (nomis)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Remove 
libgck (Sven and mitch)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Finish the text tool 
(Sven)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Documentati
 on (more on this later)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Web-site (again, more on this 
later)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Some libgimp changes which need to be made now so 
that we can havebinary compatibility across a 2.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-3/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-3/</guid>
+      <description>&amp;lt;title&amp;gt;The Third Big Serious Meeting of GIMPCon 2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;Third Meeting&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the 
third GIMPCon 2003 Meeting&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; Like in any Free Software project, 
developers are leaving from time to time to pursue other projects. And from time to time, new developersare 
joining the team and starting to contribute. However, it looks like the number of new developers joining the 
GIMP development has been decreasing in the recent years. This may be due in part to the fact that there 
haven&#39;t been any major changes in a stable release for a long time.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins/</guid>
+      <description>&amp;lt;title&amp;gt;Minutes of The GIMP Developers Conference 2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;Minutes&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the GIMPCon 
2003 Meetings&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; This meeting was held in the evening of August 
7th, 2003. The main issues discussed were: &amp;lt;itemizedlist&amp;gt; &amp;lt;listitem&amp;gt; 
&amp;lt;olink targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; 
localinfo=&amp;quot;foundation&amp;quot;&amp;gt;The GIMP foundation&amp;lt;/olink&amp;gt; 
&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; localinfo=&amp;quot;manager&amp;quot;&amp;gt;Release 
manager&amp;lt;/olink&amp;gt; &amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; localinfo=&amp;quot;decisions&amp;quot;&amp;gt;Decision 
making (or lack of it)&amp;lt;/olink&amp;gt; &a
 mp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; localinfo=&amp;quot;general&amp;quot;&amp;gt;General 
stuff about CVS, Bugzilla&amp;lt;/olink&amp;gt; &amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; 
&amp;lt;olink targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; 
localinfo=&amp;quot;communication&amp;quot;&amp;gt;Communication&amp;lt;/olink&amp;gt; 
&amp;lt;/listitem&amp;gt; &amp;lt;/itemizedlist&amp;gt; &amp;lt;/para&amp;gt; &amp;lt;para&amp;gt; The 
minutes from this meeting can be found &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot;&amp;gt;here&amp;lt;/olink&amp;gt;.</description>
+    </item>
+    
+  </channel>
+</rss>
diff --git a/public/gimpcon/2003/people-small.png b/public/gimpcon/2003/people-small.png
new file mode 100644
index 0000000..c921c9c
Binary files /dev/null and b/public/gimpcon/2003/people-small.png differ
diff --git a/public/gimpcon/2003/people.png b/public/gimpcon/2003/people.png
new file mode 100644
index 0000000..a141b84
Binary files /dev/null and b/public/gimpcon/2003/people.png differ
diff --git a/public/gimpcon/2004/Dave_Neary.jpg b/public/gimpcon/2004/Dave_Neary.jpg
new file mode 100644
index 0000000..33f5c8d
Binary files /dev/null and b/public/gimpcon/2004/Dave_Neary.jpg differ
diff --git a/public/gimpcon/2004/Oyvind_Kolas.png b/public/gimpcon/2004/Oyvind_Kolas.png
new file mode 100644
index 0000000..4aad64c
Binary files /dev/null and b/public/gimpcon/2004/Oyvind_Kolas.png differ
diff --git a/public/gimpcon/2004/gnu-head-sm.jpg b/public/gimpcon/2004/gnu-head-sm.jpg
new file mode 100644
index 0000000..49502c7
Binary files /dev/null and b/public/gimpcon/2004/gnu-head-sm.jpg differ
diff --git a/public/gimpcon/2004/index.html b/public/gimpcon/2004/index.html
new file mode 100644
index 0000000..bde5994
--- /dev/null
+++ b/public/gimpcon/2004/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>GIMP Developers Conference 2004 &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/gimpcon/2004/index.xml"; rel="alternate" type="application/rss+xml" 
title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2004/index.xml b/public/gimpcon/2004/index.xml
new file mode 100644
index 0000000..c0d806e
--- /dev/null
+++ b/public/gimpcon/2004/index.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>GIMP Developers Conference 2004 on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/gimpcon/2004/</link>
+    <description>Recent content in GIMP Developers Conference 2004 on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/gimpcon/2004/index.xml"; rel="self" type="application/rss+xml" />
+  </channel>
+</rss>
diff --git a/public/gimpcon/2004/mac_gimp_logo4.png b/public/gimpcon/2004/mac_gimp_logo4.png
new file mode 100644
index 0000000..d96f370
Binary files /dev/null and b/public/gimpcon/2004/mac_gimp_logo4.png differ
diff --git a/public/gimpcon/2004/macosx_screenshot1_thumb.jpg 
b/public/gimpcon/2004/macosx_screenshot1_thumb.jpg
new file mode 100644
index 0000000..aa0fb1b
Binary files /dev/null and b/public/gimpcon/2004/macosx_screenshot1_thumb.jpg differ
diff --git a/public/gimpcon/2006/index.html b/public/gimpcon/2006/index.html
new file mode 100644
index 0000000..fe4f0e7
--- /dev/null
+++ b/public/gimpcon/2006/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title> &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/gimpcon/2006/index.xml"; rel="alternate" type="application/rss+xml" 
title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/2006/index.xml b/public/gimpcon/2006/index.xml
new file mode 100644
index 0000000..5a5497f
--- /dev/null
+++ b/public/gimpcon/2006/index.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/gimpcon/2006/</link>
+    <description>Recent content on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/gimpcon/2006/index.xml"; rel="self" type="application/rss+xml" />
+  </channel>
+</rss>
diff --git a/public/gimpcon/2006/meetings.jpg b/public/gimpcon/2006/meetings.jpg
new file mode 100644
index 0000000..fbc7660
Binary files /dev/null and b/public/gimpcon/2006/meetings.jpg differ
diff --git a/public/gimpcon/2006/meetings_small.jpg b/public/gimpcon/2006/meetings_small.jpg
new file mode 100644
index 0000000..4974a6a
Binary files /dev/null and b/public/gimpcon/2006/meetings_small.jpg differ
diff --git a/public/gimpcon/2006/people.jpg b/public/gimpcon/2006/people.jpg
new file mode 100644
index 0000000..beb4a57
Binary files /dev/null and b/public/gimpcon/2006/people.jpg differ
diff --git a/public/gimpcon/2006/people_small.jpg b/public/gimpcon/2006/people_small.jpg
new file mode 100644
index 0000000..09a9b7f
Binary files /dev/null and b/public/gimpcon/2006/people_small.jpg differ
diff --git a/public/gimpcon/index.html b/public/gimpcon/index.html
new file mode 100644
index 0000000..43c994e
--- /dev/null
+++ b/public/gimpcon/index.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>GIMP Developer Conferences &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Hanging out with GIMP developers." />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/gimpcon/index.xml"; rel="alternate" type="application/rss+xml" 
title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+<li>
+    <span><a href="https://developer.gimp.org/gimpcon/2006/";></a> <time class="pull-right post-list" 
datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/gimpcon/2003/";>GIMP Developers Conference 2003</a> <time 
class="pull-right post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/gimpcon/2004/";>GIMP Developers Conference 2004</a> <time 
class="pull-right post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li>
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/gimpcon/index.xml b/public/gimpcon/index.xml
new file mode 100644
index 0000000..77c4c8c
--- /dev/null
+++ b/public/gimpcon/index.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>GIMP Developer Conferences on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/gimpcon/</link>
+    <description>Recent content in GIMP Developer Conferences on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/gimpcon/index.xml"; rel="self" type="application/rss+xml" />
+  </channel>
+</rss>
diff --git a/public/git.html b/public/git.html
new file mode 100644
index 0000000..1f76997
--- /dev/null
+++ b/public/git.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Git &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Living on the bleeding edge" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>Git</h1>
+  <time datetime=2022-07-20T19:04:57&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <p>The GIMP source code lives in the <!-- raw HTML omitted -->gimp<!-- raw HTML omitted -->
+repository on the
+<!-- raw HTML omitted -->GNOME git server<!-- raw HTML omitted -->.
+For more information on the GNOME git solution, go
+<!-- raw HTML omitted -->here<!-- raw HTML omitted -->.</p>
+<p>The GNOME git server hosts a couple of GIMP related repositories:</p>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/homepage/faq/index.html b/public/homepage/faq/index.html
new file mode 100644
index 0000000..8bc7677
--- /dev/null
+++ b/public/homepage/faq/index.html
@@ -0,0 +1,446 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Frequently Asked Questions &middot; GIMP Developer Resources</title>
+  <meta name="description" content="New to GIMP Development?" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>Frequently Asked Questions</h1>
+  <time datetime=2022-07-20T19:04:11&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <p>Below you will find a collection of frequently asked questions
+regarding development of the GIMP.</p>
+<h2 id="gimp-development">GIMP Development</h2>
+<h4 id="who-coordinates-gimp-development">Who coordinates GIMP development?</h4>
+<p>GIMP development is coordinated by Wilber the GIMP along
+with a loosely knit team of GIMP developers.  The
+developers can be reached through the GIMP developer
+<!-- raw HTML omitted -->mailing list<!-- raw HTML omitted -->.</p>
+<h4 id="how-can-i-become-a-gimp-developer">How can I become a GIMP developer?</h4>
+<p>If you are a developer who wants to start contributing
+code to the GIMP, the best way to get to know its
+structure is by fixing bugs reported in Bugzilla.  Pick a
+bug, perhaps ask the advice of another developer as to
+whether he/she thinks it will be an easy bug or not, and
+then fix it.  Sounds easy, doesn&rsquo;t it?</p>
+<p>After helping with a couple of bugs, people will start to
+recognize your immense talent, and you will be on your way
+to becoming a GIMP hacker.  Any time you feel able, you
+can pick a smaller enhancement request and have a go at
+implementing it.  It&rsquo;s that easy.</p>
+<h4 id="where-can-i-discuss-gimp-development">Where can I discuss GIMP development?</h4>
+<p>There are several <!-- raw HTML omitted -->mailing
+lists<!-- raw HTML omitted --> associated with the GIMP project.
+Developments related issues can be brought up on the GIMP
+Developer mailing list.</p>
+<p>The GIMP has its own IRC channel on GIMPNet where most of
+the active developers hang out.  Join us in #gimp on
+<!-- raw HTML omitted -->irc.gimp.org<!-- raw HTML omitted -->.</p>
+<p>Every once in a while the GIMP developers get together for
+a few days to throw a GIMP Developers Conference, also
+referred to as <!-- raw HTML omitted -->GIMPCon<!-- raw HTML omitted -->.</p>
+<h4 id="where-can-i-find-documentation-for-the-gimp-api">Where can I find documentation for the GIMP 
API?</h4>
+<p>You can pass <!-- raw HTML omitted -->&ndash;enable-gtk-doc<!-- raw HTML omitted --> to the gimp
+<code>configure</code> script.  This requires having
+<!-- raw HTML omitted -->gtk-doc<!-- raw HTML omitted -->
+installed.  After running <!-- raw HTML omitted -->make<!-- raw HTML omitted --> you can
+find the GIMP API reference in the
+<code>devel-docs</code> directory.</p>
+<p>Pre-generated API documentation is included in the
+official GIMP tarballs.</p>
+<p>The API reference will normally be installed in
+<code>PREFIX/share/gtk-doc/html</code>.  An on
+line version of the GIMP API reference can be found
+<!-- raw HTML omitted -->here<!-- raw HTML omitted -->.</p>
+<h4 id="how-do-i-make-a-stack-trace">How do I make a stack trace?</h4>
+<p>A stack trace is a list of function calls that leads to
+some point in the program. Debugging tools like <!-- raw HTML omitted -->gdb<!-- raw HTML omitted -->
+can get stack traces from crashed applications so that
+developers can figure out what went wrong. By including a
+stack trace with your bug report, it will be much easier
+for the developers to fix the reported problem.</p>
+<p>Information on how to make a stack trace can be found in
+the document <!-- raw HTML omitted -->Capturing
+Stack Traces<!-- raw HTML omitted -->.</p>
+<h4 id="what-is-the-best-way-to-submit-a-patch">What is the best way to submit a patch?</h4>
+<p>The best way to submit a patch is to open a bug report in
+Bugzilla and attach the patch there along with a
+description of what it does and why it should be applied.</p>
+<p>An introduction to how this is done can be found in the
+<!-- raw HTML omitted -->
+How To Create and Submit a Patch<!-- raw HTML omitted --> document.</p>
+<h4 id="what-is-the-preferred-coding-style-used-in-gimp">What is the preferred coding style used in 
GIMP?</h4>
+<p>We encourage you to follow the GIMP coding style
+throughout the GIMP project.  For the core components
+(application and libs) this coding style is enforced.  The
+GIMP coding style is defined as follows:</p>
+<ul>
+<li>Function names are lowercase, words separated by underscores.</li>
+<li>Macros and enums are all uppercase, words separated by underscores</li>
+<li>Types are all words capitalized, no separators between words.</li>
+<li>All functions in header files need to be prototyped.</li>
+<li>Indentation rules are GNU coding style, in particular:
+<ul>
+<li>2 characters indentation level</li>
+<li>Do not use tabs (of course your editor can use tabs, but it should write them to file as 8 spaces 
each).</li>
+<li>Opening brackets are on a new line and indented one level.</li>
+<li>Function header have the return type on one line, the name starting in the first column of the following 
line.  All parameters are prototyped and there&rsquo;s a new line for each.</li>
+</ul>
+</li>
+</ul>
+<p>Try to make use of GLib&rsquo;s object system as much as
+possible.  Do not create wrappers around functions of
+parent classes.  If you end up duplicating code, try to
+create a common parent class and implement the common
+methods there.</p>
+<p>Don&rsquo;t include headers in headers except where unavoidable
+(e.g. for deriving objects).  Opaque typedefs go to
+<code>app/base/base-types.h</code>, <code>app/core/core-types.h</code> etc.  See
+<code>devel-docs/includes.txt</code> for a
+detailed description of the include policy.</p>
+<p>Don&rsquo;t use the GTK wrappers around the GLib object and
+signal system.</p>
+<p>The above coding style, along with other useful
+information, is documented in the file <!-- raw HTML omitted -->HACKING<!-- raw HTML omitted -->.</p>
+<h4 id="how-can-i-configure-my-editor-for-this-coding-style">How can I configure my editor for this coding 
style?</h4>
+<p>Your editor will not be able to do everything for you, but
+you can configure most editors so that they use two spaces
+for indentation, use spaces instead of tabs, etc.</p>
+<ul>
+<li>If you are using Emacs, you can insert the following settings into your <code>~/.emacs</code> file:</li>
+</ul>
+<pre tabindex="0"><code>;; Merge this into your custom-set-variables section if you already have one
+(custom-set-variables
+;; Syntax highlighting
+&#39;(global-font-lock-mode t nil (font-lock))
+&#39;(show-paren-mode t nil (paren))
+)
+;; use UTF-8 by default
+(prefer-coding-system &#39;mule-utf-8)
+;; use the GNU style for C files, spaces instead of tabs, highlight bad spaces
+(setq c-mode-common-hook &#39;(lambda () (c-set-style &#34;gnu&#34;)
+                (setq indent-tabs-mode nil)
+                (setq show-trailing-whitespace t))) ]]&gt;&lt;/programlisting&gt;
+</code></pre><ul>
+<li>If you are using Vim, you can insert the following settings into your <code>~/.vimrc</code> file:</li>
+</ul>
+<pre tabindex="0"><code>syn on           &#34; syntax highlighting
+set expandtab    &#34; use spaces instead of tabs
+set shiftwidth=2 &#34; default indentation is 2 spaces ]]&gt;&lt;/programlisting&gt;
+</code></pre><ul>
+<li>If you are using another editor and you know how to configure it correctly, please tell us about it on 
the GIMP developer <!-- raw HTML omitted -->mailing list<!-- raw HTML omitted --> so that we can update this 
FAQ.</li>
+</ul>
+<h4 id="who-coordinates-the-gimp-translation-efforts">Who coordinates the GIMP translation efforts?</h4>
+<p>Any help with translations is appreciated.  If you want to
+help, please get in contact with the people from the
+<!-- raw HTML omitted -->GNOME
+Translation Project<!-- raw HTML omitted --> who coordinate all translation
+efforts for projects hosted in the GNOME GIT repository.</p>
+<p>More information about GIMP and localisation can be found
+in the file <!-- raw HTML omitted -->README.i18n<!-- raw HTML omitted -->.</p>
+<h4 id="how-can-i-support-gimp-development">How can I support GIMP development?</h4>
+<p>By using GIMP and reporting any bugs you find to
+<!-- raw HTML omitted -->Bugzilla<!-- raw HTML omitted -->
+you&rsquo;re helping a great deal.  But there are other
+non-technical ways of supporting the development of The
+GIMP as well.</p>
+<p>GIMP has a web site, application documentation, lots of
+tutorials, and more.  Unfortunately, as GIMP develops over
+time, much of this documentation needs to be re-written or
+freshened up, documentation needs to be added for new
+functionality, the web site needs to get a new lick of
+paint and so on.</p>
+<p>If you&rsquo;re interested in helping out you should drop an
+e-mail to the GIMP developer <!-- raw HTML omitted -->mailing list<!-- raw HTML omitted --> offering your
+help.</p>
+<h2 id="plug-in-development">Plug-In Development</h2>
+<h4 id="is-there-a-plug-in-template-available">Is there a plug-in template available?</h4>
+<p>Yes. An official GIMP plug-in template is available in
+the <!-- raw HTML omitted -->gimp-plugin-template
+<!-- raw HTML omitted --> git module.  Snapshots are available at <!-- raw HTML omitted -->ftp.gimp.org<!-- 
raw HTML omitted -->.</p>
+<h4 id="how-about-a-script-fu-template">How about a Script-Fu template?</h4>
+<p>Yes.  Simon Budig has written a fill-in-the-blanks
+Script-Fu template which is available <!-- raw HTML omitted -->here<!-- raw HTML omitted -->.</p>
+<h4 id="how-do-i-get-my-plug-in-included-in-the-gimp">How do I get my plug-in included in the GIMP?</h4>
+<p>The best way to make your plug-in available to the World
+is to submit it to <!-- raw HTML omitted -->the GIMP Plug-In
+Registry<!-- raw HTML omitted -->.</p>
+<p>If you are certain that your plug-in will be useful to all
+GIMP users, then you can ask the GIMP developers to
+consider it for inclusion in future GIMP release.  The
+best way to do that is to suggest it on the GIMP developer
+<!-- raw HTML omitted -->mailing list<!-- raw HTML omitted --> or to
+open an enhancement request in Bugzilla. However, we would
+like to limit the number of plug-ins included in the
+standard distribution and encourage all users to use the
+registry.</p>
+<h4 id="how-do-i-debug-a-gimp-plug-in">How do I debug a GIMP plug-in?</h4>
+<p>Eeek! The plug-in you&rsquo;re working on has a bug in it! And
+the fix isn&rsquo;t completely obvious, so you want to use
+debugger to see what is going on.  But hmm, how does one
+start a plug-in under a debugger if GIMP is the one who is
+starting the plug-in&hellip;</p>
+<p>To address this issue, libgimp has some hooks controlled
+by the <code>GIMP_PLUGIN_DEBUG</code> environment
+variable.  The idea is that you can attach a debugger to
+the pid of the plug-in you want to debug.  The process is
+described in the file <!-- raw HTML omitted -->debug-plug-ins.txt<!-- raw HTML omitted -->.</p>
+<h4 id="will-the-plug-in-i-compiled-against-20-work-with-gimp-22-or-24">Will the plug-in I compiled against 
2.0 work with GIMP 2.2 or 2.4?</h4>
+<p>The short answer is yes. GIMP 2.2 and 2.4 are binary
+compatible with plug-ins compiled for GIMP 2.0. The API is
+also backwards source compatible, so your plug-in should
+also compile cleanly against GIMP 2.2 and 2.4.</p>
+<p>If the plug-in you compiled for 2.0 does not work with 2.2
+or 2.4, there is one change which has been made which is
+not backwards compatible, since the old behaviour was
+considered incorrect. If you create a temporary drawable,
+using for example gimp_layer_new(), you are now required
+to add it to an image before calling any functions with
+the drawable as an argument.</p>
+<h2 id="git">GIT</h2>
+<h4 id="what-should-i-put-in-the-commit-message-when-doing-a-git-commit">What should I put in the commit 
message when doing a git commit?</h4>
+<p>Please put a short explanation of the change on the first line.
+Then, after an empty line, you can describe the change in more
+detail using as many lines as you need. Try not to exceed 72
+colums.</p>
+<p>If the commit fixes a bug or part of a bug please use the
+bug number and description as the first line of the commit
+message. It&rsquo;s most convenient to just copy the line from the
+Bugzilla bug page.</p>
+<h2 id="gegl">GEGL</h2>
+<h4 id="what-is-gegl">What is GEGL?</h4>
+<p>GEGL is the <!-- raw HTML omitted -->Generic
+Graphical Library<!-- raw HTML omitted -->.  It is supposed to replace the
+handling of various image processing tasks in GIMP in
+a not too distant future (planned for GIMP 2.6).</p>
+<h4 id="what-will-gegl-be-able-to-do">What will GEGL be able to do?</h4>
+<p>GEGL will be a general image processing library.  It uses
+a directed acyclic graph, a DAG, to represent image
+processing operations.  In the DAG, images are edges, and
+operations are nodes.  It takes advantage of this DAG to
+minimize regions which are processed, provide efficient
+caching of operations, and efficient redrawing when a
+parameter of the graph changes.</p>
+<p>GEGL should also be independent of the data type being
+processed and will be able to handle high bit depth
+images, ICC profiles and parallel processing of image
+tiles.</p>
+<h4 id="what-does-all-that-gibberish-mean-for-gimp">What does all that gibberish mean for GIMP?</h4>
+<p>Many highly requested features of the GIMP will be easier
+to do using GEGL.  Layer effects, layer groups, and
+adjustment layers are quite easily represented (and
+efficiently calculated) using the DAG organization of GEGL.
+CMYK and high bit depth support will be easier because
+GEGL does not make the same assumptions about color spaces
+and data types that the GIMP does.</p>
+<p>The reusability of image processing operations means that
+plug-ins will be able to be designed in a much more modular
+way.  The brush system will be able to become more
+flexible, especially when filter plug-ins are able to be
+used as procedural brush plug-ins.</p>
+<h2 id="bugzilla">Bugzilla</h2>
+<h4 id="what-is-bugzilla">What is Bugzilla?</h4>
+<p>The GIMP project uses <!-- raw HTML omitted -->GNOME Bugzilla<!-- raw HTML omitted --> for
+tracking of bug reports, enhancement requests etc.</p>
+<p>A beginners tutorial describing how to report a bug can be
+found in the <!-- raw HTML omitted -->
+How To Report GIMP Bugs<!-- raw HTML omitted --> document.</p>
+<p>An easy to use interface to reporting GIMP bugs can be
+found on <!-- raw HTML omitted -->bugs.gimp.org<!-- raw HTML omitted -->.</p>
+<h4 id="what-is-the-meaning-of-the-needinfo-status-code-inbugzilla">What is the meaning of the NEEDINFO 
status code inBugzilla?</h4>
+<p>If the status of a bug is changed to NEEDINFO it means the
+GIMP developers need more information from the bug
+reporter in order to resolve the bug.</p>
+<p>More information about the meaning of the Bugzilla status
+field codes can be found in <!-- raw HTML omitted -->
+A Bug&rsquo;s Life Cycle<!-- raw HTML omitted -->.</p>
+<h4 id="what-is-the-best-way-to-refer-to-a-bug-in-bugzilla">What is the best way to refer to a bug in 
Bugzilla?</h4>
+<p>The best way to refer to a bug is <!-- raw HTML omitted -->bug
+#nnnnn<!-- raw HTML omitted -->, where nnnnn is the bug number.  Using
+<!-- raw HTML omitted -->bug<!-- raw HTML omitted --> before the number allows Bugzilla to
+link to the corresponding bug report automatically.  Using
+<!-- raw HTML omitted -->#<!-- raw HTML omitted --> before the number is optional for
+Bugzilla but makes it easier to locate references to bug
+reports in the ChangeLog or in e-mails.</p>
+<p>When referencing multiple bugs, it is better to be a bit
+redundant by writing <!-- raw HTML omitted -->bug #xxxxx, bug #yyyyy and bug
+#zzzzz<!-- raw HTML omitted --> instead of <!-- raw HTML omitted -->bugs #xxxxx, #yyyyy and
+#zzzzz<!-- raw HTML omitted --> in order to allow Bugzilla to link all bugs
+automatically.</p>
+<h4 id="what-is-the-proper-way-of-handling-duplicate-bug-reports">What is the proper way of handling 
duplicate bug reports?</h4>
+<p>A bug report describing the same bug as a previous bug
+report should be marked as DUPLICATE of the older one.
+In some exceptional cases, it is possible to mark an old
+bug report as DUPLICATE of a newer one (e.g., when the
+newer bug report has a significantly better description
+than the older one).</p>
+<p>Another exception is when the same person submits the same
+bug report several times (same description): in this case,
+it is better to mark the additional copies of the bug
+report as INVALID in order to avoid inflating the
+statistics about the number of duplicates.</p>
+<h4 id="what-is-the-proper-way-of-marking-a-bug-as-resolved">What is the proper way of marking a bug as 
RESOLVED?</h4>
+<p>When fixing a bug, always mention the bug number in the
+commit message.  Once the changes are in git, paste the
+relevant part of the commit message (or all of it) in the
+comment field and mark the bug as RESOLVED FIXED.
+These cross-references help a lot when trying to find
+when a bug was fixed, its relations to other bugs, and
+potential regressions.</p>
+<p>A bug that is fixed in git or in an unstable release
+should be marked as RESOLVED FIXED.  Optionally, the
+reporter or someone other than the one who fixed the bug
+can mark it as VERIFIED after some testing.  When the fix
+is part of a stable release, it can be marked as CLOSED.</p>
+<p>This is explained further in <!-- raw HTML omitted -->A
+Bug&rsquo;s Life Cycle<!-- raw HTML omitted --> except for the difference between
+stable and unstable releases.</p>
+<h2 id="miscellaneous">Miscellaneous</h2>
+<h4 id="where-can-i-learn-more-about-the-gobject-system-used-by-gimp">Where can I learn more about the 
GObject system used by GIMP?</h4>
+<p>The
+<!-- raw HTML omitted -->GObject
+documentation<!-- raw HTML omitted --> has a
+nice <!-- raw HTML omitted -->tutorial<!-- raw HTML omitted --> that you might want to have a look at.</p>
+<h4 id="where-can-i-learn-more-about-color-spaces-etc">Where can I learn more about color spaces etc?</h4>
+<p>Charles Poynton has collected a set of <!-- raw HTML omitted -->Frequently
+Asked Questions about Color<!-- raw HTML omitted -->.</p>
+<h4 id="where-can-i-learn-more-about-image-manipulation-algorithms">Where can I learn more about image 
manipulation algorithms?</h4>
+<p>A good source of information is the
+comp.graphics.algorithms list of <!-- raw HTML omitted -->Frequently
+Asked Questions<!-- raw HTML omitted -->.</p>
+<h4 id="is-there-a-gimp-user-faq-available">Is there a GIMP user FAQ available?</h4>
+<p>There is no user FAQ available at the moment.  However
+there has been discussions about creating one.  If you
+would like to help with this please drop a mail on the
+GIMP developer <!-- raw HTML omitted -->mailing
+list<!-- raw HTML omitted -->.</p>
+<h4 id="how-can-i-contribute-to-this-faq">How can I contribute to this FAQ?</h4>
+<p>If you would like to contribute to this FAQ, send an
+e-mail to the GIMP developer <a href="lists">mailing list</a> with the
+exact text you think should be included (both question and
+answer).</p>
+<p>With your help this FAQ will grow and become more useful.</p>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/homepage/plug-ins/index.html b/public/homepage/plug-ins/index.html
new file mode 100644
index 0000000..ec19c3a
--- /dev/null
+++ b/public/homepage/plug-ins/index.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Plug Ins &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>Plug Ins</h1>
+  <time datetime=2022-07-20T19:05:09&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <hr>
+<h2 id="description-writing-gimp-plug-ins">title: &ldquo;Plug-In Development&rdquo;
+description: &ldquo;Writing GIMP plug-ins&rdquo;</h2>
+<ul>
+<li><a href="writing-a-plug-in-1">Writing a GIMP Plug-In Part I</a></li>
+<li><a href="writing-a-plug-in-2">Writing a GIMP Plug-In Part II</a></li>
+<li><a href="writing-a-plug-in-3">Writing a GIMP Plug-In Part III</a></li>
+</ul>
+<p>Make good use of the <!-- raw HTML omitted -->GIMP 2.0 API reference<!-- raw HTML omitted -->,
+and you can also have a look at a talk about
+<!-- raw HTML omitted -->GIMP plug-in programming<!-- raw HTML omitted --> that Simon gave at GUADEC in 
Sevilla.</p>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/homepage/screenshots/index.html b/public/homepage/screenshots/index.html
new file mode 100644
index 0000000..56b9208
--- /dev/null
+++ b/public/homepage/screenshots/index.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title> &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1></h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/images/developer-barbg.png b/public/images/developer-barbg.png
new file mode 100644
index 0000000..14d066e
Binary files /dev/null and b/public/images/developer-barbg.png differ
diff --git a/public/images/developer-left.png b/public/images/developer-left.png
new file mode 100644
index 0000000..c88815a
Binary files /dev/null and b/public/images/developer-left.png differ
diff --git a/public/images/developer-right.png b/public/images/developer-right.png
new file mode 100644
index 0000000..0762614
Binary files /dev/null and b/public/images/developer-right.png differ
diff --git a/public/images/shadow.gif b/public/images/shadow.gif
new file mode 100644
index 0000000..af7f537
Binary files /dev/null and b/public/images/shadow.gif differ
diff --git a/public/images/shadow.png b/public/images/shadow.png
new file mode 100644
index 0000000..a2561df
Binary files /dev/null and b/public/images/shadow.png differ
diff --git a/public/images/wilber-icon.png b/public/images/wilber-icon.png
new file mode 100644
index 0000000..3fa3ffa
Binary files /dev/null and b/public/images/wilber-icon.png differ
diff --git a/public/images/wilber.png b/public/images/wilber.png
new file mode 100644
index 0000000..8c23183
Binary files /dev/null and b/public/images/wilber.png differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..089358e
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>GIMP Development on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/index.html/</link>
+    <description>Recent content in GIMP Development on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright>
+    <lastBuildDate>Tue, 19 Jul 2022 00:00:00 +0000</lastBuildDate><atom:link 
href="https://developer.gimp.org/index.html/"; rel="self" type="application/rss+xml" />
+    <item>
+      <title>GIMP and Standards</title>
+      <link>https://developer.gimp.org/standards.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:19 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/standards.html</guid>
+      <description>GIMP is supposed to integrate well into your workflow. Thus is needs to interoperate with 
other applications and your desktop. Standards are there to make this happen and so we try to follow 
established (and sometimes even proposed) standards. Below you will find a list with links to specifications 
that a GIMP developer may find useful.
+&amp;lt;varlistentry&amp;gt; &amp;lt;term&amp;gt; &amp;lt;ulink 
url=&amp;quot;http://www.w3.org/Graphics/GIF/spec-gif89a.txt&amp;quot;&amp;gt;Graphics Interchange 
Format&amp;lt;/ulink&amp;gt; &amp;lt;/term&amp;gt; &amp;lt;listitem&amp;gt; Describes the GIF file format, 
used in the GIF plug-in.</description>
+    </item>
+    
+    <item>
+      <title>GIMP Plug-In Template</title>
+      <link>https://developer.gimp.org/plug-in-template.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:12 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/plug-in-template.html</guid>
+      <description>The GIMP Plug-In Template is an empty GIMP Plug-In that does nothing. It also has a GUI 
that allows to control how it achieves this task. But best of all, it comes with a complete setup for 
autoconf, automake, internationalisation and all these things you never wanted to know about.
+Thanks to the GIMP Plug-In Template you don&amp;rsquo;t need to worry about all these things. Just download 
the tarball, add some magic image manipulation routines and voilà, your own GIMP plug-in.</description>
+    </item>
+    
+    <item>
+      <title>Plug Ins</title>
+      <link>https://developer.gimp.org/homepage/plug-ins/</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:09 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/homepage/plug-ins/</guid>
+      <description>title: &amp;ldquo;Plug-In Development&amp;rdquo; description: &amp;ldquo;Writing GIMP 
plug-ins&amp;rdquo; Writing a GIMP Plug-In Part I Writing a GIMP Plug-In Part II Writing a GIMP Plug-In Part 
III Make good use of the GIMP 2.0 API reference, and you can also have a look at a talk about GIMP plug-in 
programming that Simon gave at GUADEC in Sevilla.</description>
+    </item>
+    
+    <item>
+      <title>Mailing Lists</title>
+      <link>https://developer.gimp.org/lists.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:03 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/lists.html</guid>
+      <description>There are several mailing-lists related to GIMP and www.gimp.org lists them 
all.</description>
+    </item>
+    
+    <item>
+      <title>Git</title>
+      <link>https://developer.gimp.org/git.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:04:57 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/git.html</guid>
+      <description>The GIMP source code lives in the gimp repository on the GNOME git server. For more 
information on the GNOME git solution, go here.
+The GNOME git server hosts a couple of GIMP related repositories:</description>
+    </item>
+    
+    <item>
+      <title>Frequently Asked Questions</title>
+      <link>https://developer.gimp.org/homepage/faq/</link>
+      <pubDate>Wed, 20 Jul 2022 19:04:11 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/homepage/faq/</guid>
+      <description>Below you will find a collection of frequently asked questions regarding development of 
the GIMP.
+GIMP Development Who coordinates GIMP development? GIMP development is coordinated by Wilber the GIMP along 
with a loosely knit team of GIMP developers. The developers can be reached through the GIMP developer mailing 
list.
+How can I become a GIMP developer? If you are a developer who wants to start contributing code to the GIMP, 
the best way to get to know its structure is by fixing bugs reported in Bugzilla.</description>
+    </item>
+    
+    <item>
+      <title>GIMP ChangeLog</title>
+      <link>https://developer.gimp.org/changelog.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:04:06 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/changelog.html</guid>
+      <description>The GIT repository lists all changes in detail. The list below shows the latest commits. 
It is generated from the RSS feed delivered by the CIA.</description>
+    </item>
+    
+    <item>
+      <title>CVS</title>
+      <link>https://developer.gimp.org/cvs.html</link>
+      <pubDate>Tue, 19 Jul 2022 20:45:01 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/cvs.html</guid>
+      <description>GIMP doesn&amp;rsquo;t use CVS any longer. The source code repository has been migrated 
to git.</description>
+    </item>
+    
+    <item>
+      <title>About this Site</title>
+      <link>https://developer.gimp.org/about.html</link>
+      <pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/about.html</guid>
+      <description>The look of this site was borrowed from www.gimp.org. Under the hood it is based on 
DocBook Website. If you are curious, have a look at the Markdown source of the page you are reading.
+If you want to help us with developer.gimp.org, clone the repository gimp-web-devel from git.</description>
+    </item>
+    
+    <item>
+      <title>Bug Tracking System</title>
+      <link>https://developer.gimp.org/bugs.html</link>
+      <pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/bugs.html</guid>
+      <description>The GIMP project uses Gitlab&amp;rsquo;s issues, to coordinate bug reports. Gitlab is 
also used for enhancement requests and the preferred way to submit patches for the GIMP is make a merge 
request.
+On www.gimp.org you can find a document describing HOW TO Report GIMP Bugs. You can also find a document 
that describes How To Create and Submit a Patch.
+Below is a list of links to get you started with Gitlab:</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/homepage/screenshots/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/homepage/screenshots/</guid>
+      <description> </description>
+    </item>
+    
+  </channel>
+</rss>
diff --git a/public/index.xml b/public/index.xml
new file mode 100644
index 0000000..489a5b9
--- /dev/null
+++ b/public/index.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>GIMP Development on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/</link>
+    <description>Recent content in GIMP Development on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright>
+    <lastBuildDate>Tue, 19 Jul 2022 00:00:00 +0000</lastBuildDate><atom:link 
href="https://developer.gimp.org/index.xml"; rel="self" type="application/rss+xml" />
+    <item>
+      <title>GIMP and Standards</title>
+      <link>https://developer.gimp.org/standards.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:19 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/standards.html</guid>
+      <description>GIMP is supposed to integrate well into your workflow. Thus is needs to interoperate with 
other applications and your desktop. Standards are there to make this happen and so we try to follow 
established (and sometimes even proposed) standards. Below you will find a list with links to specifications 
that a GIMP developer may find useful.
+&amp;lt;varlistentry&amp;gt; &amp;lt;term&amp;gt; &amp;lt;ulink 
url=&amp;quot;http://www.w3.org/Graphics/GIF/spec-gif89a.txt&amp;quot;&amp;gt;Graphics Interchange 
Format&amp;lt;/ulink&amp;gt; &amp;lt;/term&amp;gt; &amp;lt;listitem&amp;gt; Describes the GIF file format, 
used in the GIF plug-in.</description>
+    </item>
+    
+    <item>
+      <title>GIMP Plug-In Template</title>
+      <link>https://developer.gimp.org/plug-in-template.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:12 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/plug-in-template.html</guid>
+      <description>The GIMP Plug-In Template is an empty GIMP Plug-In that does nothing. It also has a GUI 
that allows to control how it achieves this task. But best of all, it comes with a complete setup for 
autoconf, automake, internationalisation and all these things you never wanted to know about.
+Thanks to the GIMP Plug-In Template you don&amp;rsquo;t need to worry about all these things. Just download 
the tarball, add some magic image manipulation routines and voilà, your own GIMP plug-in.</description>
+    </item>
+    
+    <item>
+      <title>Plug Ins</title>
+      <link>https://developer.gimp.org/homepage/plug-ins/</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:09 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/homepage/plug-ins/</guid>
+      <description>title: &amp;ldquo;Plug-In Development&amp;rdquo; description: &amp;ldquo;Writing GIMP 
plug-ins&amp;rdquo; Writing a GIMP Plug-In Part I Writing a GIMP Plug-In Part II Writing a GIMP Plug-In Part 
III Make good use of the GIMP 2.0 API reference, and you can also have a look at a talk about GIMP plug-in 
programming that Simon gave at GUADEC in Sevilla.</description>
+    </item>
+    
+    <item>
+      <title>Mailing Lists</title>
+      <link>https://developer.gimp.org/lists.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:05:03 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/lists.html</guid>
+      <description>There are several mailing-lists related to GIMP and www.gimp.org lists them 
all.</description>
+    </item>
+    
+    <item>
+      <title>Git</title>
+      <link>https://developer.gimp.org/git.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:04:57 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/git.html</guid>
+      <description>The GIMP source code lives in the gimp repository on the GNOME git server. For more 
information on the GNOME git solution, go here.
+The GNOME git server hosts a couple of GIMP related repositories:</description>
+    </item>
+    
+    <item>
+      <title>Frequently Asked Questions</title>
+      <link>https://developer.gimp.org/homepage/faq/</link>
+      <pubDate>Wed, 20 Jul 2022 19:04:11 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/homepage/faq/</guid>
+      <description>Below you will find a collection of frequently asked questions regarding development of 
the GIMP.
+GIMP Development Who coordinates GIMP development? GIMP development is coordinated by Wilber the GIMP along 
with a loosely knit team of GIMP developers. The developers can be reached through the GIMP developer mailing 
list.
+How can I become a GIMP developer? If you are a developer who wants to start contributing code to the GIMP, 
the best way to get to know its structure is by fixing bugs reported in Bugzilla.</description>
+    </item>
+    
+    <item>
+      <title>GIMP ChangeLog</title>
+      <link>https://developer.gimp.org/changelog.html</link>
+      <pubDate>Wed, 20 Jul 2022 19:04:06 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/changelog.html</guid>
+      <description>The GIT repository lists all changes in detail. The list below shows the latest commits. 
It is generated from the RSS feed delivered by the CIA.</description>
+    </item>
+    
+    <item>
+      <title>CVS</title>
+      <link>https://developer.gimp.org/cvs.html</link>
+      <pubDate>Tue, 19 Jul 2022 20:45:01 +0100</pubDate>
+      
+      <guid>https://developer.gimp.org/cvs.html</guid>
+      <description>GIMP doesn&amp;rsquo;t use CVS any longer. The source code repository has been migrated 
to git.</description>
+    </item>
+    
+    <item>
+      <title>About this Site</title>
+      <link>https://developer.gimp.org/about.html</link>
+      <pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/about.html</guid>
+      <description>The look of this site was borrowed from www.gimp.org. Under the hood it is based on 
DocBook Website. If you are curious, have a look at the Markdown source of the page you are reading.
+If you want to help us with developer.gimp.org, clone the repository gimp-web-devel from git.</description>
+    </item>
+    
+    <item>
+      <title>Bug Tracking System</title>
+      <link>https://developer.gimp.org/bugs.html</link>
+      <pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/bugs.html</guid>
+      <description>The GIMP project uses Gitlab&amp;rsquo;s issues, to coordinate bug reports. Gitlab is 
also used for enhancement requests and the preferred way to submit patches for the GIMP is make a merge 
request.
+On www.gimp.org you can find a document describing HOW TO Report GIMP Bugs. You can also find a document 
that describes How To Create and Submit a Patch.
+Below is a list of links to get you started with Gitlab:</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-1/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-1/</guid>
+      <description>&amp;lt;title&amp;gt;The First Big Serious Meeting of GIMPCon 2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;First Meeting&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the 
first GIMPCon 2003 Meeting&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; The idea of a foundation was 
proposed. Lots of ideas were thrown about as to what kind of remit it would have. If created, the foundation 
would certainly have 2 things we don&#39;t have at the moment - a bank account people could donate to, and a 
focus on &amp;lt;quote&amp;gt;marketing&amp;lt;/quote&amp;gt; in the broadest sense of the word.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-2/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-2/</guid>
+      <description>&amp;lt;title&amp;gt;The Second Big Serious Meeting of GIMPCon2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;Second Meeting&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the 
second GIMPCon 2003 Meeting&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; There was quite a lot of talk on 
what was required for a 2.0 release. It was agreed that a pre-release should have feature complete versions 
of everything going into 2.0, for obvious reasons. These can be somewhat buggy, but they should at least 
support what is supported in the 1.2 equivalents. &amp;lt;/para&amp;gt; &amp;lt;para&amp;gt; The major 
features or API changes which it was agreed are necessary are: &amp;lt;orderedlist&amp;gt; 
&amp;lt;listitem&amp;gt;Complete path tool (nomis)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Remove 
libgck (Sven and mitch)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Finish the text tool 
(Sven)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Documentati
 on (more on this later)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Web-site (again, more on this 
later)&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt;Some libgimp changes which need to be made now so 
that we can havebinary compatibility across a 2.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-3/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-3/</guid>
+      <description>&amp;lt;title&amp;gt;The Third Big Serious Meeting of GIMPCon 2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;Third Meeting&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the 
third GIMPCon 2003 Meeting&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; Like in any Free Software project, 
developers are leaving from time to time to pursue other projects. And from time to time, new developersare 
joining the team and starting to contribute. However, it looks like the number of new developers joining the 
GIMP development has been decreasing in the recent years. This may be due in part to the fact that there 
haven&#39;t been any major changes in a stable release for a long time.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins/</guid>
+      <description>&amp;lt;title&amp;gt;Minutes of The GIMP Developers Conference 2003&amp;lt;/title&amp;gt; 
&amp;lt;titleabbrev&amp;gt;Minutes&amp;lt;/titleabbrev&amp;gt; &amp;lt;summary&amp;gt;Minutes of the GIMPCon 
2003 Meetings&amp;lt;/summary&amp;gt; &amp;lt;para&amp;gt; This meeting was held in the evening of August 
7th, 2003. The main issues discussed were: &amp;lt;itemizedlist&amp;gt; &amp;lt;listitem&amp;gt; 
&amp;lt;olink targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; 
localinfo=&amp;quot;foundation&amp;quot;&amp;gt;The GIMP foundation&amp;lt;/olink&amp;gt; 
&amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; localinfo=&amp;quot;manager&amp;quot;&amp;gt;Release 
manager&amp;lt;/olink&amp;gt; &amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; localinfo=&amp;quot;decisions&amp;quot;&amp;gt;Decision 
making (or lack of it)&amp;lt;/olink&amp;gt; &a
 mp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; localinfo=&amp;quot;general&amp;quot;&amp;gt;General 
stuff about CVS, Bugzilla&amp;lt;/olink&amp;gt; &amp;lt;/listitem&amp;gt; &amp;lt;listitem&amp;gt; 
&amp;lt;olink targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot; 
localinfo=&amp;quot;communication&amp;quot;&amp;gt;Communication&amp;lt;/olink&amp;gt; 
&amp;lt;/listitem&amp;gt; &amp;lt;/itemizedlist&amp;gt; &amp;lt;/para&amp;gt; &amp;lt;para&amp;gt; The 
minutes from this meeting can be found &amp;lt;olink 
targetdocent=&amp;quot;gimpcon2003-mins-1&amp;quot;&amp;gt;here&amp;lt;/olink&amp;gt;.</description>
+    </item>
+    
+    <item>
+      <title></title>
+      <link>https://developer.gimp.org/homepage/screenshots/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/homepage/screenshots/</guid>
+      <description> </description>
+    </item>
+    
+    <item>
+      <title>How to write a GIMP plug-in</title>
+      <link>https://developer.gimp.org/writing-a-plug-in/1/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/writing-a-plug-in/1/</guid>
+      <description>Written By Dave Neary
+In this article, I present GIMP plug-ins basics and introduce the libgimp API. I will also show how to use 
the PDB to make our plug-in available to other script authors.
+In this part, I present a plug-in&amp;rsquo;s basic elements. We will see how to install a plug-in and how 
to get data from an image and directly manipulate it.
+Architecture &amp;lt;para role=&amp;quot;images&amp;quot;&amp;gt; &amp;lt;ulink 
url=&amp;quot;architecture.png&amp;quot;&amp;gt; &amp;lt;mediaobject&amp;gt; &amp;lt;imageobject&amp;gt; 
&amp;lt;imagedata fileref=&amp;quot;architecture-small.</description>
+    </item>
+    
+    <item>
+      <title>How to write a GIMP plug-in, part II</title>
+      <link>https://developer.gimp.org/writing-a-plug-in/2/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/writing-a-plug-in/2/</guid>
+      <description>Written By Dave Neary
+In the first part, I presented essential elements to build a plug-in interface with The GIMP. Now we will 
produce a simple but useful algorithm that we could use in our plug-in.
+Introduction The algorithm we are going to implement is a simple blur. It is included in The GIMP as 
&amp;ldquo;Filters-&amp;gt;Blur-&amp;gt;Blur&amp;rdquo; with default parameters.
+That algorithm is very simple. Each pixel in our image is replaced by a mean value of its 
neighbours.</description>
+    </item>
+    
+    <item>
+      <title>How to write a GIMP plug-in, part III</title>
+      <link>https://developer.gimp.org/writing-a-plug-in/3/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/writing-a-plug-in/3/</guid>
+      <description>Written By Dave Neary
+In the &amp;lt;olink targetdocent=&amp;quot;writing-a-plug-in-2&amp;quot;&amp;gt;second 
part&amp;lt;/olink&amp;gt;, I told you about manipulating image data by pixel or row. This time, I will go 
farther and process data by tile, which will improve our plug-in performance. I will also update our 
algorithm to take larger radius into account, and build a graphical interface to allow changing that 
parameter. &amp;lt;para&amp;gt; Let&#39;s have a look at our simple algorithm: for each pixel, generate a 
(2r+1)x(2r+1) neighbourhood and for each layer, replace the layer&#39;s pixel value with the average value in 
the neighbourhood.</description>
+    </item>
+    
+  </channel>
+</rss>
diff --git a/public/layout.xml b/public/layout.xml
new file mode 100644
index 0000000..db76e2e
--- /dev/null
+++ b/public/layout.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!DOCTYPE layout PUBLIC "-//Norman Walsh//DTD Website Layout V2.4.1//EN"
+          "dtd/layout.dtd">
+
+<layout>
+
+  <config param="title" value="GIMP Developer Resources" />
+  <config param="banner-left"  value="images/developer-left.png"  />
+  <config param="banner-right" value="images/developer-right.png" />
+
+  <copyright>
+    <year>2003-2018</year>
+    <holder role="http://www.gimp.org/";>The GIMP Development Team</holder>
+  </copyright>
+
+  <headlink rel="icon"
+            href="/images/wilber-icon.png"
+            type="image/png" />
+  <headlink rel="bookmark"
+            href="http://developer.gimp.org/";
+            title="GIMP Developer Resources"
+            type="text/html" />
+  <headlink rel="bookmark"
+            href="http://www.gimp.org/";
+            title="GIMP Website"
+            type="text/html" />
+  <headlink rel="bookmark"
+            href="http://www.gegl.org/";
+            title="GEGL Website"
+            type="text/html" />
+  <headlink rel="author"
+            href="mailto:webmaster gimp org"
+            title="webmaster gimp org" />
+
+  <style src="style/default.css" type="text/css" />
+
+  <toc page="index.xml" filename="index.html">
+
+    <tocentry page="git.xml" filename="git.html">
+
+      <tocentry page="changelog.xml" filename="changelog.html" />
+
+      <tocentry id="news" href="https://gitlab.gnome.org/GNOME/gimp/blob/master/NEWS";>
+        <title>News</title>
+        <summary>The NEWS file in the master branch</summary>
+      </tocentry>
+
+      <tocentry id="hacking" href="https://gitlab.gnome.org/GNOME/gimp/blob/master/HACKING";>
+        <title>Hacking</title>
+       <summary>The HACKING file in the trunk</summary>
+      </tocentry>
+
+    </tocentry>
+
+   <tocentry page="bugs.xml" filename="bugs.html"/>
+
+    <tocentry page="mailing-lists.xml" filename="lists.html" />
+
+    <tocentry page="screenshots.xml" filename="screenshots.html" />
+
+    <tocentry page="plug-ins.xml" filename="plug-ins.html">
+
+      <tocentry id="api" href="/api/2.0/index.html">
+       <title>API Reference</title>
+       <summary>GIMP Reference Manuals</summary>
+      </tocentry>
+
+      <tocentry page="writing-a-plug-in-1.xml"
+               filename="writing-a-plug-in/1/index.html">
+
+        <tocentry page="writing-a-plug-in-2.xml"
+                 filename="writing-a-plug-in/2/index.html" />
+        <tocentry page="writing-a-plug-in-3.xml"
+                 filename="writing-a-plug-in/3/index.html" />
+
+      </tocentry>
+
+      <tocentry page="plug-in-template.xml" filename="plug-in-template.html" />
+
+    </tocentry>
+
+    <tocentry page="gimpcon.xml" filename="gimpcon/index.html">
+
+      <tocentry page="gimpcon2000.xml" filename="gimpcon/2000/index.html" />
+
+      <tocentry page="gimpcon2003.xml" filename="gimpcon/2003/index.html">
+
+        <tocentry page="gimpcon2003-mins.xml"
+                 filename="gimpcon/2003/minutes.html">
+
+          <tocentry page="gimpcon2003-mins-1.xml"
+                   filename="gimpcon/2003/minutes-1.html" />
+          <tocentry page="gimpcon2003-mins-2.xml"
+                    filename="gimpcon/2003/minutes-2.html" />
+          <tocentry page="gimpcon2003-mins-3.xml"
+                    filename="gimpcon/2003/minutes-3.html" />
+
+        </tocentry>
+
+      </tocentry>
+
+      <tocentry page="gimpcon2004.xml" filename="gimpcon/2004/index.html" />
+
+      <tocentry page="gimpcon2006.xml" filename="gimpcon/2006/index.html" />
+
+    </tocentry>
+
+    <tocentry page="faq.xml" filename="faq.html" />
+
+    <tocentry page="standards.xml" filename="standards.html" />
+
+    <tocentry page="about.xml" filename="about.html" />
+
+  </toc>
+
+  <notoc page="cvs.xml" filename="cvs.html"/>
+
+</layout>
diff --git a/public/lists.html b/public/lists.html
new file mode 100644
index 0000000..5a7304f
--- /dev/null
+++ b/public/lists.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Mailing Lists &middot; GIMP Developer Resources</title>
+  <meta name="description" content="The finest spam in town" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>Mailing Lists</h1>
+  <time datetime=2022-07-20T19:05:03&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <p>There are several mailing-lists related to GIMP and
+<a href="https://www.gimp.org/mail_lists.html";>www.gimp.org lists them all</a>.</p>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/plug-in-template.html b/public/plug-in-template.html
new file mode 100644
index 0000000..0cc254a
--- /dev/null
+++ b/public/plug-in-template.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>GIMP Plug-In Template &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Don&#39;t start from scratch" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>GIMP Plug-In Template</h1>
+  <time datetime=2022-07-20T19:05:12&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <p>The GIMP Plug-In Template is an empty GIMP Plug-In that does
+nothing. It also has a GUI that allows to control how it achieves
+this task. But best of all, it comes with a complete setup for
+<a href="https://www.gnu.org/software/autoconf/";>autoconf</a>,
+<a href="https://www.gnu.org/software/automake/";>automake</a>,
+internationalisation and all these things you never wanted to know
+about.</p>
+<p>Thanks to the GIMP Plug-In Template you don&rsquo;t need to worry about
+all these things. Just download the tarball, add some magic image
+manipulation routines and voilà, your own GIMP plug-in.</p>
+<p>Grab the latest release from
+<a href="ftp://ftp.gimp.org/pub/gimp/plugin-template/";>ftp.gimp.org/pub/gimp/plugin-template/</a>.</p>
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/screenshots/Makefile b/public/screenshots/Makefile
new file mode 100644
index 0000000..811ffaf
--- /dev/null
+++ b/public/screenshots/Makefile
@@ -0,0 +1,19 @@
+THUMBS = \
+       gimp-curves-thumb.png   \
+       gimp-empty-thumb.png    \
+       gimp-print-thumb.png
+
+all: thumbs
+
+.PHONY: thumbs
+thumbs: $(THUMBS)
+
+%-thumb.png: %.png
+       @sh ../scripts/thumb.sh $<
+
+%-thumb.png: %.jpeg
+       @sh ../scripts/thumb.sh $<
+
+.PHONY: clean
+clean:
+       -rm -rf *-thumb.png
diff --git a/public/screenshots/gimp-curves-thumb.png b/public/screenshots/gimp-curves-thumb.png
new file mode 100644
index 0000000..6941a85
Binary files /dev/null and b/public/screenshots/gimp-curves-thumb.png differ
diff --git a/public/screenshots/gimp-curves.png b/public/screenshots/gimp-curves.png
new file mode 100644
index 0000000..410ad9c
Binary files /dev/null and b/public/screenshots/gimp-curves.png differ
diff --git a/public/screenshots/gimp-empty-thumb.png b/public/screenshots/gimp-empty-thumb.png
new file mode 100644
index 0000000..f4eda5d
Binary files /dev/null and b/public/screenshots/gimp-empty-thumb.png differ
diff --git a/public/screenshots/gimp-empty.png b/public/screenshots/gimp-empty.png
new file mode 100644
index 0000000..fe4da0b
Binary files /dev/null and b/public/screenshots/gimp-empty.png differ
diff --git a/public/screenshots/gimp-osx.jpeg b/public/screenshots/gimp-osx.jpeg
new file mode 100644
index 0000000..2c20edd
Binary files /dev/null and b/public/screenshots/gimp-osx.jpeg differ
diff --git a/public/screenshots/gimp-print-thumb.png b/public/screenshots/gimp-print-thumb.png
new file mode 100644
index 0000000..5c78799
Binary files /dev/null and b/public/screenshots/gimp-print-thumb.png differ
diff --git a/public/screenshots/gimp-print.png b/public/screenshots/gimp-print.png
new file mode 100644
index 0000000..e0f9461
Binary files /dev/null and b/public/screenshots/gimp-print.png differ
diff --git a/public/sitemap.xml b/public/sitemap.xml
new file mode 100644
index 0000000..a82ec16
--- /dev/null
+++ b/public/sitemap.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";
+  xmlns:xhtml="http://www.w3.org/1999/xhtml";>
+  <url>
+    <loc>https://developer.gimp.org/standards.html</loc>
+    <lastmod>2022-07-20T19:05:19+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/plug-in-template.html</loc>
+    <lastmod>2022-07-20T19:05:12+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/homepage/plug-ins/</loc>
+    <lastmod>2022-07-20T19:05:09+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/lists.html</loc>
+    <lastmod>2022-07-20T19:05:03+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/git.html</loc>
+    <lastmod>2022-07-20T19:04:57+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/homepage/faq/</loc>
+    <lastmod>2022-07-20T19:04:11+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/changelog.html</loc>
+    <lastmod>2022-07-20T19:04:06+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/cvs.html</loc>
+    <lastmod>2022-07-19T20:45:01+01:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/about.html</loc>
+    <lastmod>2022-07-19T00:00:00+00:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/bugs.html</loc>
+    <lastmod>2022-07-19T00:00:00+00:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/</loc>
+    <lastmod>2022-07-19T00:00:00+00:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/index.html/</loc>
+    <lastmod>2022-07-19T00:00:00+00:00</lastmod>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-1/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-2/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins-3/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2003/gimpcon2003-mins/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2006/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/homepage/screenshots/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/categories/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2003/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/gimpcon/2004/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/writing-a-plug-in/1/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/writing-a-plug-in/2/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/writing-a-plug-in/3/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/tags/</loc>
+  </url><url>
+    <loc>https://developer.gimp.org/writing-a-plug-in/</loc>
+  </url>
+</urlset>
diff --git a/public/standards.html b/public/standards.html
new file mode 100644
index 0000000..acb2e35
--- /dev/null
+++ b/public/standards.html
@@ -0,0 +1,265 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>GIMP and Standards &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Standards GIMP conforms to" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>GIMP and Standards</h1>
+  <time datetime=2022-07-20T19:05:19&#43;0100 class="post-date">Wed, Jul 20, 2022</time>
+  <p>GIMP is supposed to integrate well into your workflow. Thus is
+needs to interoperate with other applications and your desktop.
+Standards are there to make this happen and so we try to follow
+established (and sometimes even proposed) standards. Below you
+will find a list with links to specifications that a GIMP
+developer may find useful.</p>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.w3.org/Graphics/GIF/spec-gif89a.txt&quot;&gt;Graphics Interchange 
Format&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes the GIF file format, used in the GIF plug-in. GIF
+  is bad, don't use it.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.w3.org/Graphics/JPEG/&quot;&gt;JPEG (Joint Photographic Experts 
Group)&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes the JPEG JFIF file format, used in the JPEG plug-in.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.libpng.org/pub/mng/spec/jng.html&quot;&gt;JNG (JPEG Network Graphics) 
Format&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  GIMP doesn't use this format yet but it would be nice to
+  extend the MNG plug-in to use it and to add a dedicated JNG
+  plug-in.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.libpng.org/pub/mng/spec/&quot;&gt;MNG (Multiple-image Network Graphics) 
Format&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes the MNG file format, used in the MNG plug-in.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.w3.org/TR/PNG/&quot;&gt;Portable Network Graphics (PNG)&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes the PNG file format, used in the PNG plug-in. GIMP
+  also reads patterns in the PNG file format and it stores
+  thumbnails as PNG images.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.w3.org/TR/SVG/&quot;&gt;Scalable Vector Graphics (SVG) 1.1&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes the SVG file format, used in the SVG plug-in. GIMP
+  uses SVG for import and export of paths and it also loads
+  gradients from SVG files.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://partners.adobe.com/public/developer/tiff/&quot;&gt;TIFF 6.0&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes the TIFF file format, used in the TIFF plug-in. See also
+  the 
+  &lt;ulink url=&quot;http://www.awaresystems.be/imaging/tiff.html&quot;&gt;Unofficial TIFF Home 
Page&lt;/ulink&gt;.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.adobe.com/products/xmp/main.html&quot;&gt;Extensible Metadata Platform 
(XMP)&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Describes XMP, a labeling technology that allows to embed
+  data about a file, known as metadata, into the file itself.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+
+&lt;varlistentry&gt;
+  &lt;term&gt;
+&lt;ulink url=&quot;http://www.adobe.com/products/dng/pdfs/dng_spec.pdf&quot;&gt;Digital Negative 
(DNG)&lt;/ulink&gt;
+  &lt;/term&gt;
+  &lt;listitem&gt;
+  Specifies DNG, a format, proposed by Adobe, aiming to become
+  a standard for storing raw data from digital cameras.
+  &lt;/listitem&gt;
+&lt;/varlistentry&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/tags/index.html b/public/tags/index.html
new file mode 100644
index 0000000..6477dab
--- /dev/null
+++ b/public/tags/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Tags &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/tags/index.xml"; rel="alternate" type="application/rss+xml" 
title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/tags/index.xml b/public/tags/index.xml
new file mode 100644
index 0000000..4280efd
--- /dev/null
+++ b/public/tags/index.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>Tags on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/tags/</link>
+    <description>Recent content in Tags on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/tags/index.xml"; rel="self" type="application/rss+xml" />
+  </channel>
+</rss>
diff --git a/public/writing-a-plug-in/1/index.html b/public/writing-a-plug-in/1/index.html
new file mode 100644
index 0000000..e8bb0fd
--- /dev/null
+++ b/public/writing-a-plug-in/1/index.html
@@ -0,0 +1,512 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>How to write a GIMP plug-in &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Write your own" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>How to write a GIMP plug-in</h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <p>Written By <!-- raw HTML omitted -->Dave Neary<!-- raw HTML omitted --></p>
+<p>In this article, I present GIMP plug-ins basics and introduce the
+libgimp API.  I will also show how to use the PDB to make our
+plug-in available to other script authors.</p>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<p>In this part, I present a plug-in&rsquo;s basic elements. We will see
+how to install a plug-in and how to get data from an image and
+directly manipulate it.</p>
+<h2 id="architecture">Architecture</h2>
+<pre><code>&lt;para role=&quot;images&quot;&gt;
+  &lt;ulink url=&quot;architecture.png&quot;&gt;
+    &lt;mediaobject&gt;
+      &lt;imageobject&gt;
+        &lt;imagedata fileref=&quot;architecture-small.png&quot;/&gt;
+      &lt;/imageobject&gt;
+      &lt;textobject&gt;
+        &lt;phrase&gt;Architecture&lt;/phrase&gt;
+      &lt;/textobject&gt;
+    &lt;/mediaobject&gt;
+    Architecture
+  &lt;/ulink&gt;
+&lt;/para&gt;
+</code></pre>
+<p>The GIMP script interface is centered on the Procedural database
+(PDB). At startup, The GIMP looks into a predefined set of
+places for scripts and plug-ins, and asks each new script to
+identify itself.</p>
+<p>The plug-in declares itself to the PDB at that time, and passes
+informations like the position it wishes to get in the menu
+hierarchy, input parameters, and output parameters.</p>
+<p>When a script or a plug-in wants to use our plug-in, it gets
+through the PDB, which manages communicating parameters in one
+direction and the other in a transparent way.</p>
+<p>Internal functions that wish to get exposed to plug-ins have to
+be packaged first in the core, that will register them in the
+PDB, and secondly in the libgimp that will allow the function to
+be called as a normal one.</p>
+<p>This was the introduction - now, we will look closer at our
+first plug-in, a &ldquo;Hello, world!&rdquo;.</p>
+<h2 id="compiling-the-plug-in">Compiling the plug-in</h2>
+<pre><code>&lt;para&gt;
+  To be able to compile simple plug-ins for The GIMP, one needs
+  libgimp headers, as well as an associated utility named
+  gimptool.
+&lt;/para&gt;
+
+&lt;para&gt;
+  With that utility, one can install a plug-in either in a private
+  directory (~/.gimp-2.0/plug-ins), or in the global plug-in
+  directory.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Syntax is
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+   gimptool-2.0 --install plugin.c or gimptool-2.0 --install-admin plugin.c
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  This utility, with other options, can also be used to install
+  scripts, or uninstall plug-ins.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  A GIMP plug-in can typically behave three different ways. It can
+  take image data, modify it, and send back the modified image,
+  like edge detection. It can generate an image and send it back,
+  like some script-fus, or file reading plug-ins like jpeg. Or it
+  can get an image, and process it without modifying its data,
+  like a file saver plug-in.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;programlisting&gt;
+&lt;![CDATA[
+  #include &amp;lt;libgimp/gimp.h&amp;gt;
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  This header makes all basic plug-in elements available to us.
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  GimpPlugInInfo PLUG_IN_INFO = {
+    init,
+    quit,
+    query,
+    run
+  };
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  This structure has to have that name. It contains four pointers
+  to functions, which will be called at set times of the plug-in
+  life. init and quit are optional, and thus can hold NULL values,
+  but the last two functions, query and run, are mandatory.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The init() function is called each time The GIMP starts up. This
+  function is not typically used. Some plug-ins use it to make a
+  secondary search that is not done by the core. This function is
+  not used by any standard GIMP plug-in, but could be useful for
+  example for a plug-in that would like to register some procedure
+  conditionally on some files presence.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The quit() function is not used much either. It is called when
+  The GIMP is about to be closed, to allow it to free some
+  resources. It is used in the script-fu plug-in.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The query() function is called the first time the plug-in is
+  present, and then each time the plug-in changes.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The run() function is the plug-in's centrepiece. It is called
+  when the plug-in is asked to run. It gets the plug-in name (as a
+  plug-in can register several procedures), input parameters, and
+  a pointer to output parameters, then determines if it is
+  launched in a interactive way or by a script, and does all the
+  plug-in processing. Its prototype is
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  void run (const gchar      *name,
+            gint              nparams,
+            const GimpParam  *param,
+            gint             *nreturn_vals,
+            GimpParam       **return_vals);
+ ]]&gt;
+&lt;/programlisting&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  MAIN is a C macro that holds a bit of dark magic to initialise
+  arguments.  It also calls the appropriate PLUG_IN_INFO function
+  depending on the timing. Your plug-in needs it.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  query() deals with the procedure registration and input
+  arguments definition.  These informations are saved to speed up
+  startup time, and refreshed only when the plug-in is modified.
+&lt;/para&gt;
+
+&lt;para&gt;
+  For our &quot;Hello, world!&quot; plug-in, the query function will look
+  like this:
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  static void
+  query (void)
+    {
+      static GimpParamDef args[] = {
+        {
+          GIMP_PDB_INT32,
+          &quot;run-mode&quot;,
+          &quot;Run mode&quot;
+        },
+        {
+          GIMP_PDB_IMAGE,
+          &quot;image&quot;,
+          &quot;Input image&quot;
+        },
+        {
+          GIMP_PDB_DRAWABLE,
+          &quot;drawable&quot;,
+          &quot;Input drawable&quot;
+        }
+      };
+
+      gimp_install_procedure (
+        &quot;plug-in-hello&quot;,
+        &quot;Hello, world!&quot;,
+        &quot;Displays \&quot;Hello, world!\&quot; in a dialog&quot;,
+        &quot;David Neary&quot;,
+        &quot;Copyright David Neary&quot;,
+        &quot;2004&quot;,
+        &quot;_Hello world...&quot;,
+        &quot;RGB*, GRAY*&quot;,
+        GIMP_PLUGIN,
+        G_N_ELEMENTS (args), 0,
+        args, NULL);
+
+        gimp_plugin_menu_register (&quot;plug-in-hello&quot;,
+                                   &quot;&lt;Image&gt;/Filters/Misc&quot;); 
+    }
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  GimpParamDef contains three things - the parameter type, its
+  name, and a string describing the parameter.
+&lt;/para&gt;
+
+&lt;para&gt;
+  gimp_install_procedure declares the procedure name, some
+  description and help strings, menu path where the plug-in should
+  sit, image types handled by the plug-in, and at the end, input
+  and output parameters number, as well as the parameters
+  descriptors.
+&lt;/para&gt;
+
+&lt;para&gt;
+  &quot;RGB*, GRAY*&quot; declares the image types handled. It can be RGB,
+  INDEXED or GRAY, with or without Alpha. So &quot;RGB*, GRAY*&quot;
+  describes RGB, RGBA, GRAY or GRAY image type.
+&lt;/para&gt;
+
+&lt;para&gt;
+  GIMP_PLUGIN declares this procedure to be external, and not to
+  be executed in The GIMP core.
+&lt;/para&gt;
+
+&lt;para&gt;
+  By adding a stub run function now, we can check that our plug-in
+  has all the essential elements, and test that it registers
+  itself in the PDB with the &quot;Xtns-&gt;Plug-in Details&quot; plug-in.
+&lt;/para&gt;
+
+&lt;para role=&quot;images&quot;&gt;
+  &lt;ulink url=&quot;plug-in-details.png&quot;&gt;
+    &lt;mediaobject&gt;
+      &lt;imageobject&gt;
+        &lt;imagedata fileref=&quot;plug-in-details-small.png&quot;/&gt;
+      &lt;/imageobject&gt;
+      &lt;textobject&gt;
+        &lt;phrase&gt;Plug-in details&lt;/phrase&gt;
+      &lt;/textobject&gt;
+    &lt;/mediaobject&gt;
+    Plug-in details
+  &lt;/ulink&gt;
+&lt;/para&gt;
+
+&lt;para role=&quot;images&quot;&gt;
+  &lt;ulink url=&quot;plug-in-menu.png&quot;&gt;
+    &lt;mediaobject&gt;
+      &lt;imageobject&gt;
+        &lt;imagedata fileref=&quot;plug-in-menu-small.png&quot;/&gt;
+      &lt;/imageobject&gt;
+      &lt;textobject&gt;
+        &lt;phrase&gt;Our plug-in is in the menus&lt;/phrase&gt;
+      &lt;/textobject&gt;
+    &lt;/mediaobject&gt;
+    Our plug-in is in the menus
+  &lt;/ulink&gt;
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  The other required function for PLUG_IN_INFO is run. The core of
+  the plug-in stands there.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Output values (return_vals in the prototype) must have at least
+  one value associated - the plug-in status. Typically, this
+  parameter will hold &quot;GIMP_PDB_SUCCESS&quot;.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  One can run a plug-in in several different ways, it can be run
+  from a GIMP menu if The GIMP is run interactively, or from a
+  script or a batch, or from the &quot;Filters-&gt;Repeat Last&quot; shortcut.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The &quot;run_mode&quot; input parameter can hold one of these values:
+  &quot;GIMP_RUN_INTERACTIVE&quot;, &quot;GIMP_RUN_NONINTERACTIVE&quot; or
+  &quot;GIMP_RUN_WITH_LAST_VALS&quot;.
+&lt;/para&gt;
+
+&lt;para&gt;
+  &quot;GIMP_RUN_INTERACTIVE&quot; is typically the only case where one
+  creates an options dialog. Otherwise, one directly calls the
+  processing with values from input parameters or from memory.
+&lt;/para&gt;
+
+&lt;para&gt;
+  For our test plug-in, we will simply display a dialog containing
+  a &quot;Hello, world!&quot; message. Thankfully, this is really easy with
+  GTK+. Our run function could be:
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  static void
+  run (const gchar      *name,
+       gint              nparams,
+       const GimpParam  *param,
+       gint             *nreturn_vals,
+       GimpParam       **return_vals)
+  {
+    static GimpParam  values[1];
+    GimpPDBStatusType status = GIMP_PDB_SUCCESS;
+    GimpRunMode       run_mode;
+
+    /* Setting mandatory output values */
+    *nreturn_vals = 1;
+    *return_vals  = values;
+
+    values[0].type = GIMP_PDB_STATUS;
+    values[0].data.d_status = status;
+
+    /* Getting run_mode - we won't display a dialog if 
+     * we are in NONINTERACTIVE mode */
+    run_mode = param[0].data.d_int32;
+
+    if (run_mode != GIMP_RUN_NONINTERACTIVE)
+      g_message(&quot;Hello, world!\n&quot;);
+  }
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  Now, when we run our plug-in, there is action:
+&lt;/para&gt;
+
+&lt;para role=&quot;images&quot;&gt;
+  &lt;mediaobject&gt;
+    &lt;imageobject&gt;
+      &lt;imagedata fileref=&quot;hello.png&quot;/&gt;
+    &lt;/imageobject&gt;
+    &lt;textobject&gt;
+      &lt;phrase&gt;Hello, world!&lt;/phrase&gt;
+    &lt;/textobject&gt;
+  &lt;/mediaobject&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  Have a look at the full &lt;ulink url=&quot;hello.c&quot;&gt;hello.c&lt;/ulink&gt; plug-in code.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  In &lt;olink targetdocent=&quot;writing-a-plug-in-2&quot;&gt;next part&lt;/olink&gt;
+  we will go on, making a more useful plug-in that will get its
+  hands on image data. We will see how to use The GIMP image
+  architecture to make the plug-in perform better, processing the
+  image tile by tile.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  This work is licensed under a &lt;ulink
+  url=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative
+  Commons Attribution-NonCommercial-ShareAlike 2.5
+  License&lt;/ulink&gt;.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/writing-a-plug-in/2/index.html b/public/writing-a-plug-in/2/index.html
new file mode 100644
index 0000000..e1796e1
--- /dev/null
+++ b/public/writing-a-plug-in/2/index.html
@@ -0,0 +1,600 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>How to write a GIMP plug-in, part II &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Write your own" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>How to write a GIMP plug-in, part II</h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <p>Written By <!-- raw HTML omitted -->Dave Neary<!-- raw HTML omitted --></p>
+<p>In the <!-- raw HTML omitted -->first
+part<!-- raw HTML omitted -->, I presented essential elements to build a plug-in
+interface with The GIMP. Now we will produce a simple but useful
+algorithm that we could use in our plug-in.</p>
+<h2 id="introduction">Introduction</h2>
+<p>The algorithm we are going to implement is a simple blur. It is
+included in The GIMP as &ldquo;Filters-&gt;Blur-&gt;Blur&rdquo; with default
+parameters.</p>
+<p>That algorithm is very simple. Each pixel in our image is
+replaced by a mean value of its neighbours. For example, if we
+look at the simplest case where the neighbourhood is 3x3 (see
+figure 1), in that case the center value will be replaced with
+5, the mean of the 9 numbers in its neighbourhood.</p>
+<p>With this method, edge differences are splatted, giving a
+blurred result. One can choose another radius, using a (2r + 1)
+x (2r + 1) matrix.</p>
+<h2 id="image-structure">Image structure</h2>
+<p>Last month, we wrote a run() function that did nothing useful.
+Let&rsquo;s look again at run() prototype:</p>
+<pre tabindex="0"><code>static void run (const gchar     *name,
+               gint             nparams,
+               const GimpParam *param,
+               gint            *nreturn_vals,
+               GimpParam      **return_vals);
+</code></pre><p>We saw that for a filter (i.e. a plug-in that modifies the
+image), the first three input parameters were the run mode, an
+identifier for the image, and another one for the active
+drawable (layer or mask).</p>
+<p>A GIMP image is a structure that contains, among others, guides,
+layers, layer masks, and any data associated to the image. The
+word &ldquo;drawable&rdquo; is often used in GIMP internal structures. A
+&ldquo;drawable&rdquo; is an object where you can get, and sometimes modify,
+raw data. So : layers, layer masks, selections are all
+&ldquo;drawables&rdquo;.</p>
+<pre><code>&lt;para role=&quot;images&quot;&gt;
+  &lt;ulink url=&quot;GimpImage.png&quot;&gt;
+    &lt;mediaobject&gt;
+      &lt;imageobject&gt;
+        &lt;imagedata fileref=&quot;GimpImage-small.png&quot;/&gt;
+      &lt;/imageobject&gt;
+      &lt;textobject&gt;
+        &lt;phrase&gt;Drawables&lt;/phrase&gt;
+      &lt;/textobject&gt;
+    &lt;/mediaobject&gt;
+    Drawables
+  &lt;/ulink&gt;
+</code></pre>
+<h2 id="accessing-the-data">Accessing the data</h2>
+<pre><code>&lt;para&gt;
+  To get a GimpDrawable from its identifier, we need the
+  gimp_drawable_get() function:
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  GimpDrawable *gimp_drawable_get (gint32 drawable_id);
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  From this structure, one can access drawable data through a
+  GimpPixelRgn structure, and one can check the drawable type
+  (RGB, gray level). The full listing of functions available for a
+  GimpDrawable can be found &lt;ulink
+  url=&quot;http://developer.gimp.org/api/2.0/libgimp/libgimp-gimpdrawable.html&quot;&gt;in
+  the API&lt;/ulink&gt;.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Two very important functions for plug-ins are
+  gimp_drawable_mask_bounds() and gimp_pixel_rgn_init(). The first
+  gives the active selection limits on the drawable, and the
+  second initialises the GimpPixelRgn we will use to access the
+  data.
+&lt;/para&gt;
+
+&lt;para&gt;
+  As soon as we have a well initialised GimpPixelRgn, we can
+  access the image data in several different ways, by pixel, by
+  rectangle, by row or by column. The best method will depend on
+  the algorithm one plans to use. Moreover, The GIMP uses a
+  tile-based architecture, and loading or unloading data is
+  expensive, so we should not use it more than necessary.
+&lt;/para&gt;
+
+&lt;para role=&quot;images&quot;&gt;
+  &lt;ulink url=&quot;tiles.png&quot;&gt;
+    &lt;mediaobject&gt;
+      &lt;imageobject&gt;
+        &lt;imagedata fileref=&quot;tiles-small.png&quot;/&gt;
+      &lt;/imageobject&gt;
+      &lt;textobject&gt;
+        &lt;phrase&gt;Tiles&lt;/phrase&gt;
+      &lt;/textobject&gt;
+    &lt;/mediaobject&gt;
+    Tiles
+  &lt;/ulink&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  The main functions to get and set image data are:
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  void gimp_pixel_rgn_get_pixel (GimpPixelRgn *pr,
+                                 guchar       *buf,
+                                 gint          x,
+                                 gint          y);
+  void gimp_pixel_rgn_get_row   (GimpPixelRgn *pr,
+                                 guchar       *buf,
+                                 gint          x,
+                                 gint          y,
+                                 gint          width);
+  void gimp_pixel_rgn_get_col   (GimpPixelRgn *pr,
+                                 guchar       *buf,
+                                 gint          x,
+                                 gint          y,
+                                 gint          height);
+  void gimp_pixel_rgn_get_rect  (GimpPixelRgn *pr,
+                                 guchar       *buf,
+                                 gint          x,
+                                 gint          y,
+                                 gint          width,
+                                 gint          height);
+  void gimp_pixel_rgn_set_pixel (GimpPixelRgn *pr,
+                                 const guchar *buf,
+                                 gint          x,
+                                 gint          y);
+  void gimp_pixel_rgn_set_row   (GimpPixelRgn *pr,
+                                 const guchar *buf,
+                                 gint          x,
+                                 gint          y,
+                                 gint          width);
+  void gimp_pixel_rgn_set_col   (GimpPixelRgn *pr,
+                                 const guchar *buf,
+                                 gint          x,
+                                 gint          y,
+                                 gint          height);
+  void gimp_pixel_rgn_set_rect  (GimpPixelRgn *pr,
+                                 const guchar *buf,
+                                 gint          x,
+                                 gint          y,
+                                 gint          width,
+                                 gint          height);
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  There is also another way to access image data (it's even used
+  more often), that allows to manage data at the tile level. We
+  will look at it in detail later.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<h2 id="updating-the-image">Updating the image</h2>
+<p>At last, a plug-in that has modified a drawable data must flush
+it to send data to the core, and to tell the application that
+the display must be updated. This is done with the following
+function:</p>
+<pre tabindex="0"><code>  gimp_displays_flush ();
+  gimp_drawable_detach (drawable);
+</code></pre><h2 id="implementing-blur">Implementing blur()</h2>
+<p>To be able to try out several different processing methods, we
+will delegate the job to a blur() function. Our run() is below.</p>
+<pre tabindex="0"><code>      static void
+      run (const gchar      *name,
+           gint              nparams,
+           const GimpParam  *param,
+           gint             *nreturn_vals,
+           GimpParam       **return_vals)
+      {
+        static GimpParam  values[1];
+        GimpPDBStatusType status = GIMP_PDB_SUCCESS;
+        GimpRunMode       run_mode;
+        GimpDrawable     *drawable;
+
+        /* Setting mandatory output values */
+        *nreturn_vals = 1;
+        *return_vals  = values;
+
+        values[0].type = GIMP_PDB_STATUS;
+        values[0].data.d_status = status;
+
+        /* Getting run_mode - we won&#39;t display a dialog if 
+         * we are in NONINTERACTIVE mode */
+        run_mode = param[0].data.d_int32;
+
+        /*  Get the specified drawable  */
+        drawable = gimp_drawable_get (param[2].data.d_drawable);
+
+        gimp_progress_init (&#34;My Blur...&#34;);
+
+        /* Let&#39;s time blur
+         *
+         *   GTimer timer = g_timer_new time ();
+         */
+
+        blur (drawable);
+
+        /*   g_print (&#34;blur() took %g seconds.\n&#34;, g_timer_elapsed (timer));
+         *   g_timer_destroy (timer);
+         */
+
+        gimp_displays_flush ();
+        gimp_drawable_detach (drawable);
+      }
+</code></pre><p>There are a few lines here that need to be explained a bit more.
+The call to gimp_progress_init() initialises a progress
+measurement for our plug-in. Later, if we call
+gimp_progress_update(double percent), the percentage given as an
+input parameter will be shown graphically. The run_mode tells us
+whether the plug-in was launched in a way such as we can display
+a graphical interface or not. Possible values are
+GIMP_RUN_INTERACTIVE, GIMP_RUN_NONINTERACTIVE or
+GIMP_RUN_WITH_LAST_VALS, which mean the plug-in was executed
+from The GIMP, from a script, or from the &ldquo;Repeat last filter&rdquo;
+menu entry.</p>
+<p>Regarding the blur algorithm itself, the first version using
+gimp_pixel_rgn_(get|set)_pixel() is found below. Some functions
+in it have not been explained yet.</p>
+<p><code>gimp_drawable_mask_bounds()</code> allows calculation of the filter&rsquo;s
+effect limits, excluding any region that is not in the active
+selection. Limiting the processing this way allows an important
+performance improvement.</p>
+<p><code>gimp_pixel_rgn_init()</code> takes as input parameters the drawable,
+its limits for the processing, and two booleans that
+significantly modify the behaviour of the resulting GimpPixelRgn.
+The first one tells that &ldquo;set&rdquo; operations must be done on shadow
+tiles, in order to leave original data as is until
+gimp_drawable_merge_shadow() is called, when all modified data
+will be merged. The second one tells that modified tiles should
+be tagged &ldquo;dirty&rdquo; and sent to the core to be merged. Most of the
+time, to read data, one uses FALSE and FALSE for these two
+parameters, and to write data, one uses TRUE and TRUE. Other
+combinations are possible but seldom used.</p>
+<pre tabindex="0"><code>      static void
+      blur (GimpDrawable *drawable)
+      {
+        gint         i, j, k, channels;
+        gint         x1, y1, x2, y2;
+        GimpPixelRgn rgn_in, rgn_out;
+        guchar       output[4];
+
+        /* Gets upper left and lower right coordinates,
+         * and layers number in the image */
+        gimp_drawable_mask_bounds (drawable-&gt;drawable_id,
+                                   &amp;x1, &amp;y1,
+                                   &amp;x2, &amp;y2);
+        channels = gimp_drawable_bpp (drawable-&gt;drawable_id);
+
+        /* Initialises two PixelRgns, one to read original data,
+         * and the other to write output data. That second one will
+         * be merged at the end by the call to
+         * gimp_drawable_merge_shadow() */
+        gimp_pixel_rgn_init (&amp;rgn_in,
+                             drawable,
+                             x1, y1,
+                             x2 - x1, y2 - y1, 
+                             FALSE, FALSE);
+        gimp_pixel_rgn_init (&amp;rgn_out,
+                             drawable,
+                             x1, y1,
+                             x2 - x1, y2 - y1, 
+                             TRUE, TRUE);
+
+        for (i = x1; i &lt; x2; i++)
+          {
+            for (j = y1; j &lt; y2; j++)
+              {
+                guchar pixel[9][4];
+
+                /* Get nine pixels */
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[0],
+                                          MAX (i - 1, x1),
+                                          MAX (j - 1, y1));
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[1],
+                                          MAX (i - 1, x1),
+                                          j);
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[2],
+                                          MAX (i - 1, x1),
+                                          MIN (j + 1, y2 - 1));
+
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[3],
+                                          i,
+                                          MAX (j - 1, y1));
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[4],
+                                          i,
+                                          j);
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[5],
+                                          i,
+                                          MIN (j + 1, y2 - 1));
+
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[6],
+                                          MIN (i + 1, x2 - 1),
+                                          MAX (j - 1, y1));
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[7],
+                                          MIN (i + 1, x2 - 1),
+                                          j);
+                gimp_pixel_rgn_get_pixel (&amp;rgn_in,
+                                          pixel[8],
+                                          MIN (i + 1, x2 - 1),
+                                          MIN (j + 1, y2 - 1));
+
+                /* For each layer, compute the average of the
+                 * nine */
+                for (k = 0; k &lt; channels; k++)
+                  {
+                    int tmp, sum = 0;
+                    for (tmp = 0; tmp &lt; 9; tmp++)
+                      sum += pixel[tmp][k];
+                    output[k] = sum / 9;
+                  }
+
+                gimp_pixel_rgn_set_pixel (&amp;rgn_out,
+                                          output,
+                                          i, j);
+              }
+
+            if (i % 10 == 0)
+              gimp_progress_update ((gdouble) (i - x1) / (gdouble) (x2 - x1));
+          }
+
+        /*  Update the modified region */
+        gimp_drawable_flush (drawable);
+        gimp_drawable_merge_shadow (drawable-&gt;drawable_id, TRUE);
+        gimp_drawable_update (drawable-&gt;drawable_id,
+                              x1, y1,
+                              x2 - x1, y2 - y1);
+      }
+</code></pre><h2 id="row-processing">Row processing</h2>
+<p>Our function has a bug drawback: performance. On a 300x300
+selection, with the timing code uncommented, blur() took 12
+minutes on my K6-2 350MHz, well loaded with other stuff. To
+compare, on the same selection, Gaussian blur took 3 seconds.</p>
+<p>If we modify our function to rather use
+gimp_pixel_rgn_(get|set)_row() the result is far better. We
+reduce the timing for the 300x300 selection from 760 seconds to
+6 seconds. blur() V2 is below:</p>
+<pre><code>&lt;programlisting&gt;
+&lt;![CDATA[
+  static void
+  blur (GimpDrawable *drawable)
+  {
+    gint         i, j, k, channels;
+    gint         x1, y1, x2, y2;
+    GimpPixelRgn rgn_in, rgn_out;
+    guchar      *row1, *row2, *row3;
+    guchar      *outrow;
+
+    gimp_drawable_mask_bounds (drawable-&gt;drawable_id,
+                               &amp;x1, &amp;y1,
+                               &amp;x2, &amp;y2);
+    channels = gimp_drawable_bpp (drawable-&gt;drawable_id);
+
+    gimp_pixel_rgn_init (&amp;rgn_in,
+                         drawable,
+                         x1, y1,
+                         x2 - x1, y2 - y1, 
+                         FALSE, FALSE);
+    gimp_pixel_rgn_init (&amp;rgn_out,
+                         drawable,
+                         x1, y1,
+                         x2 - x1, y2 - y1,
+                         TRUE, TRUE);
+
+    /* Initialise enough memory for row1, row2, row3, outrow */
+    row1 = g_new (guchar, channels * (x2 - x1));
+    row2 = g_new (guchar, channels * (x2 - x1));
+    row3 = g_new (guchar, channels * (x2 - x1));
+    outrow = g_new (guchar, channels * (x2 - x1));
+
+    for (i = y1; i &lt; y2; i++)
+      {
+        /* Get row i-1, i, i+1 */
+        gimp_pixel_rgn_get_row (&amp;rgn_in,
+                                row1,
+                                x1, MAX (y1, i - 1),
+                                x2 - x1);
+        gimp_pixel_rgn_get_row (&amp;rgn_in,
+                                row2,
+                                x1, i,
+                                x2 - x1);
+        gimp_pixel_rgn_get_row (&amp;rgn_in,
+                                row3,
+                                x1, MIN (y2 - 1, i + 1),
+                                x2 - x1);
+
+        for (j = x1; j &lt; x2; j++)
+          {
+            /* For each layer, compute the average of the nine
+             * pixels */
+            for (k = 0; k &lt; channels; k++)
+              {
+                int sum = 0;
+                sum = row1[channels * MAX ((j - 1 - x1), 0) + k]           +
+                      row1[channels * (j - x1) + k]                        +
+                      row1[channels * MIN ((j + 1 - x1), x2 - x1 - 1) + k] +
+                      row2[channels * MAX ((j - 1 - x1), 0) + k]           +
+                      row2[channels * (j - x1) + k]                        +
+                      row2[channels * MIN ((j + 1 - x1), x2 - x1 - 1) + k] +
+                      row3[channels * MAX ((j - 1 - x1), 0) + k]           +
+                      row3[channels * (j - x1) + k]                        +
+                      row3[channels * MIN ((j + 1 - x1), x2 - x1 - 1) + k];
+                outrow[channels * (j - x1) + k] = sum / 9;
+              }
+
+         }
+
+         gimp_pixel_rgn_set_row (&amp;rgn_out,
+                                 outrow,
+                                 x1, i,
+                                 x2 - x1);
+
+         if (i % 10 == 0)
+              gimp_progress_update ((gdouble) (i - y1) / (gdouble) (y2 - y1));
+    }
+
+    g_free (row1);
+    g_free (row2);
+    g_free (row3);
+    g_free (outrow);
+
+    gimp_drawable_flush (drawable);
+    gimp_drawable_merge_shadow (drawable-&gt;drawable_id, TRUE);
+    gimp_drawable_update (drawable-&gt;drawable_id,
+                          x1, y1,
+                          x2 - x1, y2 - y1);
+  }
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  Have a look at the &lt;ulink url=&quot;myblur1.c&quot;&gt;slow&lt;/ulink&gt; or
+  &lt;ulink url=&quot;myblur2.c&quot;&gt;fast&lt;/ulink&gt; blur complete code.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  In &lt;olink targetdocent=&quot;writing-a-plug-in-3&quot;&gt;next part&lt;/olink&gt;,
+  we will see how to process the image tile by tile. We will also
+  have a look at preferences, by modifying our algorithm so it can
+  take an input parameter.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  This work is licensed under a &lt;ulink
+  url=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative
+  Commons Attribution-NonCommercial-ShareAlike 2.5
+  License&lt;/ulink&gt;.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/writing-a-plug-in/3/index.html b/public/writing-a-plug-in/3/index.html
new file mode 100644
index 0000000..3aa9aa6
--- /dev/null
+++ b/public/writing-a-plug-in/3/index.html
@@ -0,0 +1,1014 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>How to write a GIMP plug-in, part III &middot; GIMP Developer Resources</title>
+  <meta name="description" content="Write your own" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <div class="post">
+  <h1>How to write a GIMP plug-in, part III</h1>
+  <time datetime=0001-01-01T00:00:00Z class="post-date">Mon, Jan 1, 0001</time>
+  <p>Written By <!-- raw HTML omitted -->Dave Neary<!-- raw HTML omitted --></p>
+<pre><code>In the &lt;olink targetdocent=&quot;writing-a-plug-in-2&quot;&gt;second
+part&lt;/olink&gt;, I told you about manipulating image data by pixel or
+row. This time, I will go farther and process data by tile, which
+will improve our plug-in performance. I will also update our
+algorithm to take larger radius into account, and build a
+graphical interface to allow changing that parameter.
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  Let's have a look at our simple algorithm: for each pixel,
+  generate a (2r+1)x(2r+1) neighbourhood and for each layer,
+  replace the layer's pixel value with the average value in the
+  neighbourhood.
+&lt;/para&gt;
+
+&lt;para&gt;
+  It's a bit more complex than that - we have to be careful near
+  image borders for example, but this algorithm makes a blur
+  effect that is not so bad in general.
+&lt;/para&gt;
+
+&lt;para&gt;
+  But until now, we wrote the algorithm for a 3x3 neighbourhood.
+  Time has come to generalise this part and to introduce the
+  radius as a parameter.
+&lt;/para&gt;
+
+&lt;para&gt;
+  First, a word on tiles.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  A tile is an image data block with a 64x64 size. Usually, tiles
+  are sent to the plug-in on demand one by one, by shared memory.
+  Of course this process needs huge resources and should be
+  avoided.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Usually, one doesn't need any particular cache, each tile is
+  sent when one needs it and freed when one asks for another one.
+  Nevertheless, we can tell our plug-in to keep a tile cache to
+  avoid this constant round trip, by calling the function:
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  gimp_tile_cache_ntiles (gulong ntiles);
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  In the second part example, we called gimp_pixel_rgn_get_row()
+  and gimp_pixel_rgn_set_row() but without using any cache.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The number of tiles in a tile row will be the layer width
+  divided by the tile width, plus one. So, for a layer width of
+  65, we will cache two tiles. As we usually also process shadow
+  tiles, we can double that number to compute the ideal cache size
+  for our plug-in.
+&lt;/para&gt;
+
+&lt;programlisting&gt;
+&lt;![CDATA[
+  gimp_tile_cache_ntiles (2 * (drawable-&gt;width / 
+                          gimp_tile_width () + 1));
+ ]]&gt;
+&lt;/programlisting&gt;
+
+&lt;para&gt;
+  With the cache, our slow plug-in becomes fast. On a 300x300
+  selection, our last blur took 3 seconds, but on a 2000x1500
+  selection it was much slower - 142 seconds.
+&lt;/para&gt;
+
+&lt;para&gt;
+  Adding the above line of code, things are getting better: 11
+  seconds. We still lose transition time when we reach tile
+  borders, we can go down to 10 seconds when multiplying by 4
+  instead of 2 (meaning we cache two tiles rows), but the more
+  tiles we cache, the more hard disk access we make, which reduce
+  the time gain at a point.
+&lt;/para&gt;
+</code></pre>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<pre><code>&lt;para&gt;
+  We can modify the algorithm to take a parameter into account:
+  radius. With a radius of 3, the neighbourhood of a pixel will be
+  7x7, instead of 3x3 with a radius of 1. To achieve this I modify
+  the previous algorithm:
+  &lt;itemizedlist&gt;
+    &lt;listitem&gt;allocate space for 2r+1 tile rows&lt;/listitem&gt;
+    &lt;listitem&gt;initialise this rows array, taking care of
+    borders&lt;/listitem&gt;
+    &lt;listitem&gt;for each tile row
+      &lt;itemizedlist&gt;
+        &lt;listitem&gt;for each pixel in the tile row
+          &lt;itemizedlist&gt;
+            &lt;listitem&gt;compute the neighbourhood average, taking
+            care of borders&lt;/listitem&gt;
+          &lt;/itemizedlist&gt;
+        &lt;/listitem&gt;
+        &lt;listitem&gt;get a new tile row and cycle rows&lt;/listitem&gt;
+      &lt;/itemizedlist&gt;
+    &lt;/listitem&gt;
+  &lt;/itemizedlist&gt;
+&lt;/para&gt;
+
+&lt;para&gt;
+  This algorithm is more complex than the last one, because the
+  average computing will be a O(r²) algorithm.
+&lt;/para&gt;
+
+&lt;para&gt;
+  The modified code to get this behaviour is below. Most of the
+  work is done in the process_row function. init_mem and shuffle
+  are there to keep the blur code clean and small.
+&lt;/para&gt;
+</code></pre>
+<pre tabindex="0"><code>    &lt;![CDATA[    
+      static void blur        (GimpDrawable *drawable);
+
+      static void init_mem    (guchar     ***row,
+                               guchar      **outrow,
+                               gint          num_bytes);
+      static void process_row (guchar      **row,
+                               guchar       *outrow,
+                               gint          x1,
+                               gint          y1,
+                               gint          width,
+                               gint          height,
+                               gint          channels,
+                               gint          i);
+      static void shuffle     (GimpPixelRgn *rgn_in,
+                               guchar      **row,
+                               gint          x1,
+                               gint          y1,
+                               gint          width,
+                               gint          height,
+                               gint          ypos);
+
+      /* The radius is still a constant, we&#39;ll change that when the
+       * graphical interface will be built. */
+      static gint radius = 3;
+      ...
+
+      static void
+      blur (GimpDrawable *drawable)
+      {
+        gint         i, ii, channels;
+        gint         x1, y1, x2, y2;
+        GimpPixelRgn rgn_in, rgn_out;
+        guchar     **row;
+        guchar      *outrow;
+        gint         width, height;
+
+        gimp_progress_init (&#34;My Blur...&#34;);
+
+        /* Gets upper left and lower right coordinates,
+         * and layers number in the image */
+        gimp_drawable_mask_bounds (drawable-&gt;drawable_id,
+                                   &amp;x1, &amp;y1,
+                                   &amp;x2, &amp;y2);
+        width  = x2 - x1;
+        height = y2 - y1;
+
+        channels = gimp_drawable_bpp (drawable-&gt;drawable_id);
+
+        /* Allocate a big enough tile cache */
+        gimp_tile_cache_ntiles (2 * (drawable-&gt;width /
+                                     gimp_tile_width () + 1));
+
+        /* Initialises two PixelRgns, one to read original data,
+         * and the other to write output data. That second one will
+         * be merged at the end by the call to
+         * gimp_drawable_merge_shadow() */
+        gimp_pixel_rgn_init (&amp;rgn_in,
+                             drawable,
+                             x1, y1,
+                             width, height, 
+                             FALSE, FALSE);
+        gimp_pixel_rgn_init (&amp;rgn_out,
+                             drawable,
+                             x1, y1,
+                             width, height, 
+                             TRUE, TRUE);
+
+        /* Allocate memory for input and output tile rows */
+        init_mem (&amp;row, &amp;outrow, width * channels);
+
+        for (ii = -radius; ii &lt;= radius; ii++)
+          {
+            gimp_pixel_rgn_get_row (&amp;rgn_in,
+                                    row[radius + ii],
+                                    x1, y1 + CLAMP (ii, 0, height - 1), 
+                                    width);
+          }
+
+        for (i = 0; i &lt; height; i++)
+          {
+            /* To be done for each tile row */
+            process_row (row,
+                         outrow,
+                         x1, y1,
+                         width, height,
+                         channels,
+                         i);
+            gimp_pixel_rgn_set_row (&amp;rgn_out,
+                                    outrow,
+                                    x1, i + y1,
+                                    width);
+            /* shift tile rows to insert the new one at the end */
+            shuffle (&amp;rgn_in,
+                     row,
+                     x1, y1,
+                     width, height,
+                     i);
+            if (i % 10 == 0)
+              gimp_progress_update ((gdouble) i / (gdouble) height);
+          }
+
+        /* We could also put that in a separate function but it&#39;s
+         * rather simple */
+        for (ii = 0; ii &lt; 2 * radius + 1; ii++)
+          g_free (row[ii]);
+
+        g_free (row);
+        g_free (outrow);
+
+        /*  Update the modified region */
+        gimp_drawable_flush (drawable);
+        gimp_drawable_merge_shadow (drawable-&gt;drawable_id, TRUE);
+        gimp_drawable_update (drawable-&gt;drawable_id,
+                              x1, y1,
+                              width, height);
+      }
+
+      static void
+      init_mem (guchar ***row,
+                guchar  **outrow,
+                gint      num_bytes)
+      {
+        gint i;
+
+        /* Allocate enough memory for row and outrow */
+        *row = g_new (char *, (2 * radius + 1));
+
+        for (i = -radius; i &lt;= radius; i++)
+          (*row)[i + radius] = g_new (guchar, num_bytes);
+
+        *outrow = g_new (guchar, num_bytes);
+      }
+
+      static void
+      process_row (guchar **row,
+                   guchar  *outrow,
+                   gint     x1,
+                   gint     y1,
+                   gint     width,
+                   gint     height,
+                   gint     channels,
+                   gint     i)
+      {
+        gint j;
+
+        for (j = 0; j &lt; width; j++)
+          {
+            gint k, ii, jj;
+            gint left = (j - radius),
+                 right = (j + radius);
+
+            /* For each layer, compute the average of the
+             * (2r+1)x(2r+1) pixels */
+            for (k = 0; k &lt; channels; k++)
+              {
+                gint sum = 0;
+
+                for (ii = 0; ii &lt; 2 * radius + 1; ii++)
+                  for (jj = left; jj &lt;= right; jj++)
+                    sum += row[ii][channels * CLAMP (jj, 0, width - 1) + k];
+
+                outrow[channels * j + k] =
+                  sum / (4 * radius * radius + 4 * radius + 1);
+              }
+          }
+      }
+
+      static void
+      shuffle (GimpPixelRgn *rgn_in,
+               guchar      **row,
+               gint          x1,
+               gint          y1,
+               gint          width,
+               gint          height,
+               gint          ypos)
+      {
+        gint    i;
+        guchar *tmp_row;
+
+        /* Get tile row (i + radius + 1) into row[0] */
+        gimp_pixel_rgn_get_row (rgn_in,
+                                row[0],
+                                x1, MIN (ypos + radius + y1, y1 + height - 1),
+                                width);
+
+        /* Permute row[i] with row[i-1] and row[0] with row[2r] */
+        tmp_row = row[0];
+        for (i = 1; i &lt; 2 * radius + 1; i++)
+          row[i - 1] = row[i];
+        row[2 * radius] = tmp_row;
+      }
+     ]]&gt;
+    &lt;/programlisting&gt;
+  &lt;/section&gt;
+
+  &lt;section&gt;
+    &lt;title&gt;Adding a graphical interface and saving parameters&lt;/title&gt;
+
+    &lt;para&gt;
+      To let the user modify the radius, or let a non-interactive
+      script give it as a parameter, we now need to get back to our
+      run() function and settle some simple things.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      First we create a structure to allow saving and returning
+      options. Usually one does this even for plug-ins with only one
+      parameter.
+    &lt;/para&gt;
+
+    &lt;programlisting&gt;
+    &lt;![CDATA[
+      typedef struct
+      {
+        gint radius;
+      } MyBlurVals;
+
+
+      /* Set up default values for options */
+      static MyBlurVals bvals =
+      {
+        3  /* radius */
+      };
+     ]]&gt;
+    &lt;/programlisting&gt;
+
+    &lt;para&gt;
+      Next, we modify the run() function so that execution modes are
+      taken into account. In interactive mode and repeat last filter
+      mode, we try to get the last values used by the gimp_get_data()
+      function, which takes a unique data identifier as its first
+      input parameter. Usually, one uses the procedure&#39;s name.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      Finally, in interactive mode, we add a few lines that will build
+      the graphical interface allowing options modification.
+    &lt;/para&gt;
+
+    &lt;programlisting&gt;
+    &lt;![CDATA[
+      static void
+      run (const gchar      *name,
+           gint              nparams,
+           const GimpParam  *param,
+           gint             *nreturn_vals,
+           GimpParam       **return_vals)
+      {
+        static GimpParam  values[1];
+        GimpPDBStatusType status = GIMP_PDB_SUCCESS;
+        GimpRunMode       run_mode;
+        GimpDrawable     *drawable;
+
+        /* Setting mandatory output values */
+        *nreturn_vals = 1;
+        *return_vals  = values;
+
+        values[0].type = GIMP_PDB_STATUS;
+        values[0].data.d_status = status;
+
+        /* Getting run_mode - we won&#39;t display a dialog if 
+         * we are in NONINTERACTIVE mode */
+        run_mode = param[0].data.d_int32;
+
+        /*  Get the specified drawable  */
+        drawable = gimp_drawable_get (param[2].data.d_drawable);
+
+        switch (run_mode)
+          {
+          case GIMP_RUN_INTERACTIVE:
+            /* Get options last values if needed */
+            gimp_get_data (&#34;plug-in-myblur&#34;, &amp;bvals);
+
+            /* Display the dialog */
+            if (! blur_dialog (drawable))
+              return;
+            break;
+
+          case GIMP_RUN_NONINTERACTIVE:
+            if (nparams != 4)
+              status = GIMP_PDB_CALLING_ERROR;
+            if (status == GIMP_PDB_SUCCESS)
+              bvals.radius = param[3].data.d_int32;
+            break;
+
+          case GIMP_RUN_WITH_LAST_VALS:
+            /*  Get options last values if needed  */
+            gimp_get_data (&#34;plug-in-myblur&#34;, &amp;bvals);
+            break;
+
+          default:
+            break;
+          }
+
+        blur (drawable);
+
+        gimp_displays_flush ();
+        gimp_drawable_detach (drawable);
+
+        /*  Finally, set options in the core  */
+        if (run_mode == GIMP_RUN_INTERACTIVE)
+          gimp_set_data (&#34;plug-in-myblur&#34;, &amp;bvals, sizeof (MyBlurVals));
+
+        return;
+      }
+     ]]&gt;
+    &lt;/programlisting&gt;
+  &lt;/section&gt;
+
+  &lt;section&gt;
+    &lt;title&gt;The graphical interface&lt;/title&gt;
+
+    &lt;para&gt;
+      I won&#39;t detail GTK+ programming as this is done very well in
+      other places. Our first try will be very simple. We will use the
+      utility widget of GIMP, the GimpDialog, to create a window with
+      a header, a numeric control of type GtkSpinButton (associated
+      with a GtkAdjustment) and its label, nicely framed in a
+      GtkFrame.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      In the following parts, in order to show how easy one can do
+      such things, I will add a preview in the dialog to show real
+      time effects of the parameters.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      Our final dialog will look like this (tree generated with
+      Glade):
+    &lt;/para&gt;
+
+    &lt;para role=&#34;images&#34;&gt;
+      &lt;ulink url=&#34;glade-tree.png&#34;&gt;
+        &lt;mediaobject&gt;
+          &lt;imageobject&gt;
+            &lt;imagedata fileref=&#34;glade-tree-small.png&#34;/&gt;
+          &lt;/imageobject&gt;
+          &lt;textobject&gt;
+            &lt;phrase&gt;Glade tree&lt;/phrase&gt;
+          &lt;/textobject&gt;
+        &lt;/mediaobject&gt;
+        Glade tree
+      &lt;/ulink&gt;
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      In The GIMP 2.2, there is a number of widgets that come bundled
+      with parameters that allow a coherent behaviour, consistent with
+      GNOME Human Interface Guidelines. GimpPreview also appeared in
+      2.2. Let&#39;s make a first try without it:
+    &lt;/para&gt;
+
+    &lt;para role=&#34;images&#34;&gt;
+      &lt;mediaobject&gt;
+        &lt;imageobject&gt;
+          &lt;imagedata fileref=&#34;blur_dialog1.png&#34;/&gt;
+        &lt;/imageobject&gt;
+        &lt;textobject&gt;
+          &lt;phrase&gt;Blur dialog&lt;/phrase&gt;
+        &lt;/textobject&gt;
+      &lt;/mediaobject&gt;
+    &lt;/para&gt;
+
+    &lt;programlisting&gt;
+    &lt;![CDATA[
+      static gboolean
+      blur_dialog (GimpDrawable *drawable)
+      {
+        GtkWidget *dialog;
+        GtkWidget *main_vbox;
+        GtkWidget *main_hbox;
+        GtkWidget *frame;
+        GtkWidget *radius_label;
+        GtkWidget *alignment;
+        GtkWidget *spinbutton;
+        GtkObject *spinbutton_adj;
+        GtkWidget *frame_label;
+        gboolean   run;
+
+        gimp_ui_init (&#34;myblur&#34;, FALSE);
+
+        dialog = gimp_dialog_new (&#34;My blur&#34;, &#34;myblur&#34;,
+                                  NULL, 0,
+                                  gimp_standard_help_func, &#34;plug-in-myblur&#34;,
+
+                                  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                  GTK_STOCK_OK,     GTK_RESPONSE_OK,
+
+                                  NULL);
+
+        main_vbox = gtk_vbox_new (FALSE, 6);
+        gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)-&gt;vbox), main_vbox);
+        gtk_widget_show (main_vbox);
+
+        frame = gtk_frame_new (NULL);
+        gtk_widget_show (frame);
+        gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 0);
+        gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
+
+        alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+        gtk_widget_show (alignment);
+        gtk_container_add (GTK_CONTAINER (frame), alignment);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 6, 6, 6);
+
+        main_hbox = gtk_hbox_new (FALSE, 0);
+        gtk_widget_show (main_hbox);
+        gtk_container_add (GTK_CONTAINER (alignment), main_hbox);
+
+        radius_label = gtk_label_new_with_mnemonic (&#34;_Radius:&#34;);
+        gtk_widget_show (radius_label);
+        gtk_box_pack_start (GTK_BOX (main_hbox), radius_label, FALSE, FALSE, 6);
+        gtk_label_set_justify (GTK_LABEL (radius_label), GTK_JUSTIFY_RIGHT);
+
+        spinbutton_adj = gtk_adjustment_new (3, 1, 16, 1, 5, 5);
+        spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0);
+        gtk_widget_show (spinbutton);
+        gtk_box_pack_start (GTK_BOX (main_hbox), spinbutton, FALSE, FALSE, 6);
+        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
+
+        frame_label = gtk_label_new (&#34;&lt;b&gt;Modify radius&lt;/b&gt;&#34;);
+        gtk_widget_show (frame_label);
+        gtk_frame_set_label_widget (GTK_FRAME (frame), frame_label);
+        gtk_label_set_use_markup (GTK_LABEL (frame_label), TRUE);
+
+        g_signal_connect (spinbutton_adj, &#34;value_changed&#34;,
+                          G_CALLBACK (gimp_int_adjustment_update),
+                          &amp;bvals.radius);
+        gtk_widget_show (dialog);
+
+        run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);
+
+        gtk_widget_destroy (dialog);
+
+        return run;
+      }
+     ]]&gt;
+    &lt;/programlisting&gt;
+  &lt;/section&gt;
+
+  &lt;section&gt;
+    &lt;title&gt;Adding a GimpPreview&lt;/title&gt;
+
+    &lt;para&gt;
+      Adding a GimpPreview is quite easy. First we create a GtkWidget
+      with gimp_drawable_preview_new(), then we attach an invalidated
+      signal to it, which will call the blur function to update the
+      preview. We also add a second parameter to MyBlurVals to
+      remember the activation state of the preview.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      A method to update easily the preview is to add a preview
+      parameter in the blur function, and if preview is not NULL, to
+      take GimpPreview limits. So when we call blur from run(), we set
+      the preview parameter to NULL.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      To take GimpPreview limits, we use gimp_preview_get_position()
+      and gimp_preview_get_size(), so we can generate only what will
+      be displayed.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      To achieve this the right way we&#39;ll tune some of the code - we
+      don&#39;t need to update the progress bar while generating the
+      preview, and we should tell at GimpPixelRgn init time that the
+      tiles should not be sent back to the core.
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      Finally, we display the updated preview with the
+      gimp_drawable_preview_draw_region() function. We get a dialog
+      box that shows us in real time the plug-in effects. Moreover,
+      thanks to the GIMP core, our plug-in already takes selections
+      into account.
+    &lt;/para&gt;
+
+    &lt;para role=&#34;images&#34;&gt;
+      &lt;ulink url=&#34;blur_dialog2.png&#34;&gt;
+        &lt;mediaobject&gt;
+          &lt;imageobject&gt;
+            &lt;imagedata fileref=&#34;blur_dialog2-small.png&#34;/&gt;
+          &lt;/imageobject&gt;
+          &lt;textobject&gt;
+            &lt;phrase&gt;Blur dialog, improved&lt;/phrase&gt;
+          &lt;/textobject&gt;
+        &lt;/mediaobject&gt;
+        Blur dialog, improved
+      &lt;/ulink&gt;
+    &lt;/para&gt;
+
+    &lt;para role=&#34;images&#34;&gt;
+      &lt;ulink url=&#34;blur_select.png&#34;&gt;
+        &lt;mediaobject&gt;
+          &lt;imageobject&gt;
+            &lt;imagedata fileref=&#34;blur_select-small.png&#34;/&gt;
+          &lt;/imageobject&gt;
+          &lt;textobject&gt;
+            &lt;phrase&gt;Blur a selection&lt;/phrase&gt;
+          &lt;/textobject&gt;
+        &lt;/mediaobject&gt;
+        Blur a selection
+      &lt;/ulink&gt;
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      Here are the two functions in their last version:
+    &lt;/para&gt;
+
+    &lt;programlisting&gt;
+    &lt;![CDATA[
+      static void
+      blur (GimpDrawable *drawable,
+            GimpPreview  *preview)
+      {
+        gint         i, ii, channels;
+        gint         x1, y1, x2, y2;
+        GimpPixelRgn rgn_in, rgn_out;
+        guchar     **row;
+        guchar      *outrow;
+        gint         width, height;
+
+        if (!preview)
+          gimp_progress_init (&#34;My Blur...&#34;);
+
+        /* Gets upper left and lower right coordinates,
+         * and layers number in the image */
+        if (preview)
+        {
+          gimp_preview_get_position (preview, &amp;x1, &amp;y1);
+          gimp_preview_get_size (preview, &amp;width, &amp;height);
+          x2 = x1 + width;
+          y2 = y1 + height;
+        }
+        else
+        {
+          gimp_drawable_mask_bounds (drawable-&gt;drawable_id,
+                                     &amp;x1, &amp;y1,
+                                     &amp;x2, &amp;y2);
+          width = x2 - x1;
+          height = y2 - y1;
+        }
+
+        channels = gimp_drawable_bpp (drawable-&gt;drawable_id);
+
+        /* Allocate a big enough tile cache */
+        gimp_tile_cache_ntiles (2 * (drawable-&gt;width / 
+                                     gimp_tile_width () + 1));
+
+        /* Initialises two PixelRgns, one to read original data,
+         * and the other to write output data. That second one will
+         * be merged at the end by the call to
+         * gimp_drawable_merge_shadow() */
+        gimp_pixel_rgn_init (&amp;rgn_in,
+                             drawable,
+                             x1, y1,
+                             width, height, 
+                             FALSE, FALSE);
+        gimp_pixel_rgn_init (&amp;rgn_out,
+                             drawable,
+                             x1, y1,
+                             width, height, 
+                             preview == NULL, TRUE);
+
+        /* Allocate memory for input and output tile rows */
+        init_mem (&amp;row, &amp;outrow, width * channels);
+        
+        for (ii = -bvals.radius; ii &lt;= bvals.radius; ii++)
+          {
+            gimp_pixel_rgn_get_row (&amp;rgn_in,
+                                    row[bvals.radius + ii],
+                                    x1, y1 + CLAMP (ii, 0, height - 1), 
+                                    width);
+          }
+
+        for (i = 0; i &lt; height; i++)
+          {
+            /* To be done for each tile row */
+            process_row (row,
+                         outrow,
+                         x1, y1,
+                         width, height,
+                         channels,
+                         i);
+            gimp_pixel_rgn_set_row (&amp;rgn_out,
+                                    outrow,
+                                    x1, i + y1,
+                                    width);
+            /* shift tile rows to insert the new one at the end */
+            shuffle (&amp;rgn_in,
+                     row,
+                     x1, y1,
+                     width, height,
+                     i);
+            if (i % 10 == 0 &amp;&amp; !preview)
+              gimp_progress_update ((gdouble) i / (gdouble) height);
+          }
+
+        for (ii = 0; ii &lt; 2 * bvals.radius + 1; ii++)
+          g_free (row[ii]);
+
+        g_free (row);
+        g_free (outrow);
+
+        /*  Update the modified region  */
+        if (preview)
+          {
+            gimp_drawable_preview_draw_region (GIMP_DRAWABLE_PREVIEW (preview),
+                                               &amp;rgn_out);
+          }
+        else
+          {
+            gimp_drawable_flush (drawable);
+            gimp_drawable_merge_shadow (drawable-&gt;drawable_id, TRUE);
+            gimp_drawable_update (drawable-&gt;drawable_id,
+                                  x1, y1,
+                                  width, height);
+          }
+      }
+
+      static gboolean
+      blur_dialog (GimpDrawable *drawable)
+      {
+        GtkWidget *dialog;
+        GtkWidget *main_vbox;
+        GtkWidget *main_hbox;
+        GtkWidget *preview;
+        GtkWidget *frame;
+        GtkWidget *radius_label;
+        GtkWidget *alignment;
+        GtkWidget *spinbutton;
+        GtkObject *spinbutton_adj;
+        GtkWidget *frame_label;
+        gboolean   run;
+
+        gimp_ui_init (&#34;myblur&#34;, FALSE);
+
+        dialog = gimp_dialog_new (&#34;My blur&#34;, &#34;myblur&#34;,
+                                  NULL, 0,
+                                  gimp_standard_help_func, &#34;plug-in-myblur&#34;,
+
+                                  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                  GTK_STOCK_OK,     GTK_RESPONSE_OK,
+
+                                  NULL);
+
+        main_vbox = gtk_vbox_new (FALSE, 6);
+        gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)-&gt;vbox), main_vbox);
+        gtk_widget_show (main_vbox);
+
+        preview = gimp_drawable_preview_new (drawable, &amp;bvals.preview);
+        gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
+        gtk_widget_show (preview);
+
+        frame = gimp_frame_new (&#34;Blur radius&#34;);
+        gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
+        gtk_widget_show (frame);
+
+        alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+        gtk_widget_show (alignment);
+        gtk_container_add (GTK_CONTAINER (frame), alignment);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 6, 6, 6);
+
+        main_hbox = gtk_hbox_new (FALSE, 12);
+        gtk_container_set_border_width (GTK_CONTAINER (main_hbox), 12);
+        gtk_widget_show (main_hbox);
+        gtk_container_add (GTK_CONTAINER (alignment), main_hbox);
+
+        radius_label = gtk_label_new_with_mnemonic (&#34;_Radius:&#34;);
+        gtk_widget_show (radius_label);
+        gtk_box_pack_start (GTK_BOX (main_hbox), radius_label, FALSE, FALSE, 6);
+        gtk_label_set_justify (GTK_LABEL (radius_label), GTK_JUSTIFY_RIGHT);
+
+        spinbutton = gimp_spin_button_new (&amp;spinbutton_adj, bvals.radius, 
+                                           1, 32, 1, 1, 1, 5, 0);
+        gtk_box_pack_start (GTK_BOX (main_hbox), spinbutton, FALSE, FALSE, 0);
+        gtk_widget_show (spinbutton);
+
+        g_signal_connect_swapped (preview, &#34;invalidated&#34;,
+                                  G_CALLBACK (blur),
+                                  drawable);
+        g_signal_connect_swapped (spinbutton_adj, &#34;value_changed&#34;,
+                                  G_CALLBACK (gimp_preview_invalidate),
+                                  preview);
+
+        blur (drawable, GIMP_PREVIEW (preview));
+
+        g_signal_connect (spinbutton_adj, &#34;value_changed&#34;,
+                          G_CALLBACK (gimp_int_adjustment_update),
+                          &amp;bvals.radius);
+        gtk_widget_show (dialog);
+
+        run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);
+
+        gtk_widget_destroy (dialog);
+
+        return run;
+      }
+     ]]&gt;
+    &lt;/programlisting&gt;
+
+    &lt;para&gt;
+      Have a look at the &lt;ulink url=&#34;myblur3.c&#34;&gt;tiled&lt;/ulink&gt;,
+      &lt;ulink url=&#34;myblur4.c&#34;&gt;UI&lt;/ulink&gt; or
+      &lt;ulink url=&#34;myblur5.c&#34;&gt;preview&lt;/ulink&gt; blur complete code.
+    &lt;/para&gt;
+  &lt;/section&gt;
+
+  &lt;section&gt;
+    &lt;title&gt;Conclusion&lt;/title&gt;
+
+    &lt;para&gt;
+      In these articles, we saw basic concepts for several aspects of
+      a GIMP plug-in. We messed with image data treatment through a
+      simple algorithm, and followed a path that showed us how to
+      avoid performance problems. Finally, we generalised the
+      algorithm and added parameters to it, and we used some GIMP
+      widgets to make a nice user interface.
+    &lt;/para&gt;
+  &lt;/section&gt;
+
+  &lt;section&gt;
+    &lt;title&gt;Thanks&lt;/title&gt;
+
+    &lt;para&gt;
+      Thanks to my wife Anne and to David Odin (preview master) for
+      helping me while I was writing this article.
+    &lt;/para&gt;
+  &lt;/section&gt;
+
+  &lt;section&gt;
+    &lt;para role=&#34;images&#34;&gt;
+      &lt;ulink url=&#34;http://creativecommons.org/licenses/by-nc-sa/2.5/&#34;&gt;
+        &lt;mediaobject&gt;
+          &lt;imageobject&gt;
+            &lt;imagedata fileref=&#34;http://creativecommons.org/images/public/somerights20.gif&#34;/&gt;
+          &lt;/imageobject&gt;
+          &lt;textobject&gt;
+            &lt;phrase&gt;Creative Commons License&lt;/phrase&gt;
+          &lt;/textobject&gt;
+        &lt;/mediaobject&gt;
+      &lt;/ulink&gt;
+    &lt;/para&gt;
+
+    &lt;para&gt;
+      This work is licensed under a &lt;ulink
+      url=&#34;http://creativecommons.org/licenses/by-nc-sa/2.5/&#34;&gt;Creative
+      Commons Attribution-NonCommercial-ShareAlike 2.5
+      License&lt;/ulink&gt;.
+    &lt;/para&gt;
+  &lt;/section&gt;
+</code></pre>
+</div>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/writing-a-plug-in/index.html b/public/writing-a-plug-in/index.html
new file mode 100644
index 0000000..148c07b
--- /dev/null
+++ b/public/writing-a-plug-in/index.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta name="generator" content="Hugo 0.101.0" />
+
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Writing-a-plug-ins &middot; GIMP Developer Resources</title>
+  <meta name="description" content="" />
+
+  
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/print.css"; media="print">
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/poole.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/syntax.css";>
+  <link type="text/css" rel="stylesheet" href="https://developer.gimp.org/css/hyde.css";>
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
+
+
+  
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  
+  <link href="https://developer.gimp.org/writing-a-plug-in/index.xml"; rel="alternate" 
type="application/rss+xml" title="GIMP Developer Resources" />
+  </head>
+
+  <body class=" ">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          <td class="menu">
+  <span class="toplevel">
+      <a href="git.html"> Git </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://gitlab.gnome.org/browse/gimp/log/";> ChangeLog </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/NEWS";> News </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="https://developer.gimp.org/HACKING";> Hacking </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="bugs.html"> Gitlab </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="lists.html"> Mailing Lists </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="screenshots.html"> Screenshots </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-ins.html"> Plug-In Development </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="api/2.0/index.html"> API Reference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="writing-api-plug-in/1.html"> Writing A Plug-In </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="plug-in-template.html"> Plug-In Template </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/index.html"> Conference </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2000/index.html"> GIMPCon 2000 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2003/index.html"> GIMPCon 2003 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2004/index.html"> GIMPCon 2004 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="gimpcon/2006/index.html"> GIMPCon 2006 </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="faq.html"> Developer FAQ </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="standards.html"> Standards </a>
+      <br />
+    </span><span class="toplevel">
+      <a href="about.html"> About this Site </a>
+      <br />
+    </span>
+</td>
+
+          <td class="main">
+            <main class="content container">
+            <ul class="posts">
+<li>
+    <span><a href="https://developer.gimp.org/writing-a-plug-in/1/";>How to write a GIMP plug-in</a> <time 
class="pull-right post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/writing-a-plug-in/2/";>How to write a GIMP plug-in, part II</a> 
<time class="pull-right post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li><li>
+    <span><a href="https://developer.gimp.org/writing-a-plug-in/3/";>How to write a GIMP plug-in, part 
III</a> <time class="pull-right post-list" datetime="0001-01-01T00:00:00Z">Mon, Jan 1, 0001</time></span>
+  </li>
+</ul>
+            </main>
+
+            
+              
+            
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/public/writing-a-plug-in/index.xml b/public/writing-a-plug-in/index.xml
new file mode 100644
index 0000000..7254ad4
--- /dev/null
+++ b/public/writing-a-plug-in/index.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>Writing-a-plug-ins on GIMP Developer Resources</title>
+    <link>https://developer.gimp.org/writing-a-plug-in/</link>
+    <description>Recent content in Writing-a-plug-ins on GIMP Developer Resources</description>
+    <generator>Hugo -- gohugo.io</generator>
+    <language>en</language>
+    <copyright>Copyright 2003-2022 The GIMP Development Team</copyright><atom:link 
href="https://developer.gimp.org/writing-a-plug-in/index.xml"; rel="self" type="application/rss+xml" />
+    <item>
+      <title>How to write a GIMP plug-in</title>
+      <link>https://developer.gimp.org/writing-a-plug-in/1/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/writing-a-plug-in/1/</guid>
+      <description>Written By Dave Neary
+In this article, I present GIMP plug-ins basics and introduce the libgimp API. I will also show how to use 
the PDB to make our plug-in available to other script authors.
+In this part, I present a plug-in&amp;rsquo;s basic elements. We will see how to install a plug-in and how 
to get data from an image and directly manipulate it.
+Architecture &amp;lt;para role=&amp;quot;images&amp;quot;&amp;gt; &amp;lt;ulink 
url=&amp;quot;architecture.png&amp;quot;&amp;gt; &amp;lt;mediaobject&amp;gt; &amp;lt;imageobject&amp;gt; 
&amp;lt;imagedata fileref=&amp;quot;architecture-small.</description>
+    </item>
+    
+    <item>
+      <title>How to write a GIMP plug-in, part II</title>
+      <link>https://developer.gimp.org/writing-a-plug-in/2/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/writing-a-plug-in/2/</guid>
+      <description>Written By Dave Neary
+In the first part, I presented essential elements to build a plug-in interface with The GIMP. Now we will 
produce a simple but useful algorithm that we could use in our plug-in.
+Introduction The algorithm we are going to implement is a simple blur. It is included in The GIMP as 
&amp;ldquo;Filters-&amp;gt;Blur-&amp;gt;Blur&amp;rdquo; with default parameters.
+That algorithm is very simple. Each pixel in our image is replaced by a mean value of its 
neighbours.</description>
+    </item>
+    
+    <item>
+      <title>How to write a GIMP plug-in, part III</title>
+      <link>https://developer.gimp.org/writing-a-plug-in/3/</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://developer.gimp.org/writing-a-plug-in/3/</guid>
+      <description>Written By Dave Neary
+In the &amp;lt;olink targetdocent=&amp;quot;writing-a-plug-in-2&amp;quot;&amp;gt;second 
part&amp;lt;/olink&amp;gt;, I told you about manipulating image data by pixel or row. This time, I will go 
farther and process data by tile, which will improve our plug-in performance. I will also update our 
algorithm to take larger radius into account, and build a graphical interface to allow changing that 
parameter. &amp;lt;para&amp;gt; Let&#39;s have a look at our simple algorithm: for each pixel, generate a 
(2r+1)x(2r+1) neighbourhood and for each layer, replace the layer&#39;s pixel value with the average value in 
the neighbourhood.</description>
+    </item>
+    
+  </channel>
+</rss>
diff --git a/themes/hyde/CHANGELOG.md b/themes/hyde/CHANGELOG.md
new file mode 100644
index 0000000..891329a
--- /dev/null
+++ b/themes/hyde/CHANGELOG.md
@@ -0,0 +1,7 @@
+# Changelog
+
+## Version 1.0
+
+- Due to the switch to the base template feature the minimum required version of Hugo changed to v0.21
+- Support for Google Analytics have been added
+- Hugo's internal Disqus template replaced the custom one of this theme. The Disqus shortname now has to be 
defined outsite the `[params]` blog
diff --git a/themes/hyde/LICENSE.md b/themes/hyde/LICENSE.md
new file mode 100644
index 0000000..c344d14
--- /dev/null
+++ b/themes/hyde/LICENSE.md
@@ -0,0 +1,9 @@
+# Released under MIT License
+
+Copyright (c) 2013 Mark Otto.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
documentation files (the "Software"), to deal in the Software without restriction, including without 
limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 
Software, and to permit persons to whom the Software is furnished to do so, subject to the following 
conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial 
portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 
OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/themes/hyde/README.md b/themes/hyde/README.md
new file mode 100644
index 0000000..fa8c4b9
--- /dev/null
+++ b/themes/hyde/README.md
@@ -0,0 +1 @@
+# GIMP Developer theme based on Hyde
diff --git a/themes/hyde/archetypes/default.md b/themes/hyde/archetypes/default.md
new file mode 100644
index 0000000..74583a2
--- /dev/null
+++ b/themes/hyde/archetypes/default.md
@@ -0,0 +1,6 @@
++++
+Description = ""
+Tags = ["Development", "golang"]
+Categories = ["Development", "GoLang"]
+menu = "main"
++++
diff --git a/themes/hyde/go.mod b/themes/hyde/go.mod
new file mode 100644
index 0000000..3ee4de3
--- /dev/null
+++ b/themes/hyde/go.mod
@@ -0,0 +1,3 @@
+module github.com/spf13/hyde
+
+go 1.12
diff --git a/themes/hyde/images/screenshot.png b/themes/hyde/images/screenshot.png
new file mode 100644
index 0000000..8248097
Binary files /dev/null and b/themes/hyde/images/screenshot.png differ
diff --git a/themes/hyde/images/tn.png b/themes/hyde/images/tn.png
new file mode 100644
index 0000000..b6778fd
Binary files /dev/null and b/themes/hyde/images/tn.png differ
diff --git a/themes/hyde/layouts/404.html b/themes/hyde/layouts/404.html
new file mode 100644
index 0000000..a919514
--- /dev/null
+++ b/themes/hyde/layouts/404.html
@@ -0,0 +1,4 @@
+{{ define "main" -}}
+<h1>404: Page not found</h1>
+<p class="lead">Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. <a 
href="{{ .Site.BaseURL }}">Head back home</a> to try finding it again.</p>
+{{- end }}
\ No newline at end of file
diff --git a/themes/hyde/layouts/_default/baseof.html b/themes/hyde/layouts/_default/baseof.html
new file mode 100644
index 0000000..7f5133f
--- /dev/null
+++ b/themes/hyde/layouts/_default/baseof.html
@@ -0,0 +1,43 @@
+{{ partial "head.html" . }}
+  <body class="{{ .Site.Params.themeColor }} {{if .Site.Params.layoutReverse}}layout-reverse{{end}}">
+    <div class="titlebar">
+      <a href="index.html">
+        <img class="titlebarleft" src="images/developer-left.png" alt="" />
+      </a>
+      <img class="titlebarright" src="images/developer-right.png" alt="" />
+    </div>
+    <div class="webpage">
+      <a name="home" id="home"></a>
+      <table class="layout" summary="Navigation">
+        <tr>
+          {{ partial "sidebar.html" . }}
+          <td class="main">
+            <main class="content container">
+            {{ block "main" . -}}{{- end }}
+            </main>
+
+            {{ if not .Site.IsServer }}
+              {{ template "_internal/google_analytics.html" . }}
+            {{ end }}
+            <br />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="linkbar"><a href="http://developer.gimp.org/";>GIMP Developer Resources</a> | <a 
href="http://www.gimp.org/";>GIMP Website</a> | <a href="http://www.gegl.org/";>GEGL Website</a></div>
+    <div>
+      <span class="footerleft">
+        <span class="copyright">Copyright © 2003-2022 The GIMP Development Team. </span>
+      </span>
+      <span class="footerright">
+        <a href="mailto:webmaster gimp org">webmaster gimp org</a>
+      </span>
+    </div>
+    <div style="clear: both; margin: 0; width: 100%; "></div>
+    <div class="validator">
+      <span style="position: absolute; left: 0; font-size: xx-small;">
+        <a href="http://validator.w3.org/check/referer";>Validate XHTML</a>
+      </span>
+    </div>
+  </body>
+</html>
diff --git a/themes/hyde/layouts/_default/list.html b/themes/hyde/layouts/_default/list.html
new file mode 100644
index 0000000..47a6453
--- /dev/null
+++ b/themes/hyde/layouts/_default/list.html
@@ -0,0 +1,9 @@
+{{ define "main" -}}
+<ul class="posts">
+{{ range .Data.Pages -}}
+  <li>
+    <span><a href="{{ .Permalink }}">{{ .Title }}</a> <time class="pull-right post-list" datetime="{{ 
.Date.Format "2006-01-02T15:04:05Z0700" }}">{{ .Date.Format "Mon, Jan 2, 2006" }}</time></span>
+  </li>
+{{- end }}
+</ul>
+{{- end }}
diff --git a/themes/hyde/layouts/_default/single.html b/themes/hyde/layouts/_default/single.html
new file mode 100644
index 0000000..292e7ff
--- /dev/null
+++ b/themes/hyde/layouts/_default/single.html
@@ -0,0 +1,7 @@
+{{ define "main" -}}
+<div class="post">
+  <h1>{{ .Title }}</h1>
+  <time datetime={{ .Date.Format "2006-01-02T15:04:05Z0700" }} class="post-date">{{ .Date.Format "Mon, Jan 
2, 2006" }}</time>
+  {{ .Content }}
+</div>
+{{- end }}
diff --git a/themes/hyde/layouts/index.html b/themes/hyde/layouts/index.html
new file mode 100644
index 0000000..ec6d2eb
--- /dev/null
+++ b/themes/hyde/layouts/index.html
@@ -0,0 +1,18 @@
+{{ define "main" -}}
+<div class="posts">
+{{ range .Site.RegularPages -}}
+<article class="post">
+  <h1 class="post-title">
+    <a href="{{ .Permalink }}">{{ .Title }}</a>
+  </h1>
+  <time datetime="{{ .Date.Format "2006-01-02T15:04:05Z0700" }}" class="post-date">{{ .Date.Format "Mon, Jan 
2, 2006" }}</time>
+  {{ .Summary }}
+  {{ if .Truncated }}
+  <div class="read-more-link">
+    <a href="{{ .RelPermalink }}">Read More…</a>
+  </div>
+  {{ end }}
+</article>
+{{- end }}
+</div>
+{{- end }}
diff --git a/themes/hyde/layouts/partials/head.html b/themes/hyde/layouts/partials/head.html
new file mode 100644
index 0000000..7241110
--- /dev/null
+++ b/themes/hyde/layouts/partials/head.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"{{with .Site.LanguageCode}} xml:lang="{{.}}" lang="{{.}}"{{end}}>
+<head>
+  <link href="https://gmpg.org/xfn/11"; rel="profile">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  {{ hugo.Generator }}
+
+  <!-- Enable responsiveness on mobile devices-->
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  {{ if .IsHome -}}
+  <title>{{ .Site.Title }}</title>
+  {{- else -}}
+  <title>{{ .Title }} &middot; {{ .Site.Title }}</title>
+  {{- end }}
+  <meta name="description" content="{{if .IsHome}}{{ $.Site.Params.description 
}}{{else}}{{.Description}}{{end}}" />
+
+  <!-- CSS -->
+  <link type="text/css" rel="stylesheet" href="{{ .Site.BaseURL }}css/print.css" media="print">
+  <link type="text/css" rel="stylesheet" href="{{ .Site.BaseURL }}css/poole.css">
+  <link type="text/css" rel="stylesheet" href="{{ .Site.BaseURL }}css/syntax.css">
+  <link type="text/css" rel="stylesheet" href="{{ .Site.BaseURL }}css/hyde.css">
+  {{ partial "head_fonts.html" . }}
+
+  <!-- Icons -->
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
+  <link rel="shortcut icon" href="/favicon.png">
+
+  <!-- RSS etc -->
+  {{ range .AlternativeOutputFormats -}}
+    {{ printf `<link href="%s" rel="%s" type="%s" title="%s" />` .Permalink .Rel .MediaType.Type 
$.Site.Title | safeHTML }}
+  {{ end -}}
+</head>
diff --git a/themes/hyde/layouts/partials/head_fonts.html b/themes/hyde/layouts/partials/head_fonts.html
new file mode 100644
index 0000000..4729eb2
--- /dev/null
+++ b/themes/hyde/layouts/partials/head_fonts.html
@@ -0,0 +1 @@
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">
diff --git a/themes/hyde/layouts/partials/hook_head_end.html b/themes/hyde/layouts/partials/hook_head_end.html
new file mode 100644
index 0000000..e69de29
diff --git a/themes/hyde/layouts/partials/sidebar.html b/themes/hyde/layouts/partials/sidebar.html
new file mode 100644
index 0000000..766f72a
--- /dev/null
+++ b/themes/hyde/layouts/partials/sidebar.html
@@ -0,0 +1,8 @@
+<td class="menu">
+  {{ range .Site.Menus.main -}}
+    <span class="toplevel">
+      <a href="{{.URL}}"> {{ .Name }} </a>
+      <br />
+    </span>
+  {{- end }}
+</td>
diff --git a/themes/hyde/static/apple-touch-icon-144-precomposed.png 
b/themes/hyde/static/apple-touch-icon-144-precomposed.png
new file mode 100644
index 0000000..19323de
Binary files /dev/null and b/themes/hyde/static/apple-touch-icon-144-precomposed.png differ
diff --git a/themes/hyde/static/css/hyde.css b/themes/hyde/static/css/hyde.css
new file mode 100644
index 0000000..597c8cd
--- /dev/null
+++ b/themes/hyde/static/css/hyde.css
@@ -0,0 +1,300 @@
+/* This is the stylesheet of http://developer.gimp.org/ and should
+ * only be changed by the designer or the website maintainer. Remember
+ * that changes done here will change the appearance on the whole site
+ * so keep a backup of this file while working with it. Niklas */
+
+/* Copyright (C) 2002-2006 by The GIMP Web Team - Contributions by:
+ * Ville Pätsi (drc), Henrik Brix Andersen (brix), Carol Spears
+ * (carol), Niklas Mattisson (scizzo), Raphaël Quinet (raphael),
+ * Branko Collin (branko), Sven Neumann (neo) and Øyvind Kolås
+ * (pippin)
+ *
+ * This style sheet and corresponding site layout are designed to be
+ * used on official GIMP web sites only.  You may copy some parts of
+ * this file into your own style sheet as long as you create your own
+ * design that is significantly different from the one used on GIMP
+ * web sites (layout, colors, etc.) and you give appropriate credit if
+ * you copy more than a few lines from this file (do not claim that
+ * you wrote everything yourself).
+ */
+
+body {
+  background: white;
+  color: black;
+  font-family: arial,helvetica,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+
+a {
+  background: transparent;
+  color: #566e41;
+  text-decoration: none;
+  font-weight: bold;
+}
+
+a:hover        {
+  background: transparent;
+  color: #991e1e;
+  text-decoration: underline;
+  font-weight: bold;
+}
+
+img {
+  border: none;
+}
+
+img.map {
+  margin: 0px;
+  padding: 0px;
+}
+
+p {
+  margin-top: 1.33em;
+  margin-right: 1.33em;
+  text-align: justify;
+}
+
+p.title {
+  font-size: 110%;
+}
+
+p.images img {
+  border: solid black 2px;
+}
+
+p.framelessimages,
+p.images {
+  text-align: center;
+}
+
+p.screenshot {
+  clear:both;
+  padding: 1em;
+}
+
+p.screenshot .mediaobject {
+  float: left;
+  background: url(/images/shadow.png) no-repeat bottom right !important;
+  background: url(/images/shadow.gif) no-repeat bottom right;
+  margin: 0 0 6px 6px;
+  padding: 4px;
+}
+
+p.screenshot .mediaobject img {
+  border: none;
+  margin: -6px 2px -2px -6px;
+}
+
+li {
+  text-align: justify;
+}
+
+td {
+  padding: 5px 5px 0px 0px;
+}
+
+td.main {
+  padding: 10px;
+  padding-left: 40px;
+  padding-right: 40px;
+  vertical-align: top;
+  width: 100%;
+}
+
+td.map {
+  margin: 0px;
+  padding: 0px;
+}
+
+h1 {
+  background-color: #dce5d4;
+  color: black;
+  border: thin solid #a9b3a1;
+  padding: 5px;
+  margin-bottom: 30px;
+  margin-left: -30px;
+  margin-right: -30px;
+  font-weight: bold;
+  font-size: 110%;
+  text-align: center;
+}
+
+h2 {
+  font-weight: bold;
+  clear: both;
+  font-size: 110%;
+}
+
+h3 {
+  font-weight: bold;
+  clear: both;
+  font-size: 105%;
+}
+
+td.menu {
+  background: #dce5d4;
+  color: black;
+  border-style: solid;
+  border-color: #a9b3a1;
+  border-top-width: 0px;
+  border-bottom-width: 0px;
+  border-left-width: 0px;
+  border-right-width: 1px;
+  padding: 10px;
+  font-weight: bold;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+table.layout {
+  clear: both;
+  margin: 0px;
+  border: none;
+  padding: 0px;
+  border-collapse: collapse;
+  width: 100%;
+}
+
+div.titlebar {
+  background-image: url("../images/developer-barbg.png");
+  background-repeat: repeat-x;
+  height: 100px;
+}
+
+div.informaltable table {
+  border-collapse: collapse;
+}
+
+div.informaltable table tr td, div.informaltable table tr th {
+  padding: 5px;
+}
+
+img.titlebarleft {
+  float: left;
+}
+
+img.titlebarright {
+  float: right;
+}
+
+div.linkbar, div.navbar {
+  clear: both;
+  background: #dce5d4;
+  color: black;
+  border: solid #a9b3a1;
+  border-width: 1px 0px 1px 0px;
+  padding: 5px 5px 5px 5px;
+  font-weight: bold;
+  text-align: center;
+}
+
+span.footerleft {
+  float: left;
+  padding: 20px;
+}
+
+span.footerright {
+  float: right;
+  padding: 20px;
+}
+
+span.shrink1 {
+  padding-left: 10px;
+  font-size: 95%;
+}
+
+span.shrink2 {
+  padding-left: 20px;
+  font-size: 90%;
+}
+
+span.shrink3 {
+  padding-left: 30px;
+  font-size: 85%;
+}
+
+div.rss {
+  margin-top: 1em;
+  margin-bottom: 2em;
+}
+
+div.rss dd p {
+  white-space: pre;
+  border-width: 0px;
+  padding: 0px;
+  border: 2px solid red;
+}
+
+div.rss img {
+  border: none;
+  float: right;
+  border: 2px solid red;
+}
+
+div.rss p {
+  background-color: green;
+  display: inline;
+}
+
+span.date {
+  display: block;
+  font-size: 75%;
+  padding-right: 1em;
+  font-style: italic;
+  background-color: #ddd;
+  text-align: right;
+  border-left: 1px solid #888;
+  border-top: 1px solid #888;
+  border-right: 1px solid #888;
+}
+
+div.rss ul {
+  padding-right: 1em;
+  margin-top: -0.1em;
+  padding-left: 2.0em;
+}
+
+div.rss strong {
+  font-weight: bold;
+  font-style: italic;
+  color: #566e41;
+}
+div.rss b {
+  font-weight : normal;
+  color: #000:
+}
+
+
+div.rss b {
+  font-weight: normal;
+}
+
+div.rss ul li {
+  text-align: left;
+}
+
+div.rss_entry {
+  margin-bottom: 1em;
+}
+
+div.qandaset tr.question td {
+  padding-top: 15px;
+}
+
+div.qandaset tr.question p {
+  margin: 0px;
+}
+
+@media print {
+
+div.navbar, div.linkbar, td.menu {
+  display: none
+}
+
+td.main {
+  padding-right: 0px;
+  padding-left: 0px;
+}
+
+}
diff --git a/themes/hyde/static/favicon.png b/themes/hyde/static/favicon.png
new file mode 100644
index 0000000..84cce4d
Binary files /dev/null and b/themes/hyde/static/favicon.png differ
diff --git a/themes/hyde/theme.toml b/themes/hyde/theme.toml
new file mode 100644
index 0000000..977fc14
--- /dev/null
+++ b/themes/hyde/theme.toml
@@ -0,0 +1,17 @@
+name = "GIMP Developer Theme"
+license = "MIT"
+licenselink = "https://github.com/spf13/hyde/blob/master/LICENSE.md";
+description = "A fork of the Hyde theme."
+tags = ["blog", "company"]
+features = ["blog", "themes", "disqus"]
+min_version = 0.53
+
+[author]
+    name = "spf13"
+    homepage = "http://spf13.com";
+
+# If Porting existing theme
+[original]
+    author =  "mdo"
+    homepage = "http://markdotto.com/";
+    repo = "https://www.github.com/mdo/hyde";


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