Small picture of Enselic

This is the personal website of Martin Nordholts a.k.a. Enselic. It contains my blog and some other information related to me and what I do. In my spare time I contribute to GIMP and GEGL development and occasionally to other open source projects as well.

Saturday, January 23, 2010

Multi-column dock windows and 2.8 schedule

Illustration

The code refactorings and clean ups that have been made to enable single-window mode to be implemented has also resulted in improvements to multi-window mode. The most significant is the support for multi-column dock windows, as you can see used in the screenshot above. People having dockables on one screen and an image in full screen on another will probably find this useful, for example. Before this, you could only have one column of dockables inside a dock window.

I also have a fundamentally different but arguably a more important announcement. There now is a schedule for GIMP 2.8 development and thus also an estimated release date, which right now is 2010-12-27. Creating a schedule was not completely uncontroversial. People pointed out that if we have an estimated release date it will surely be misinterpreted as a definite release date, and if we don't meet it, people will be annoyed. People will probably misinterpret, but that is less worse than the current situation where people speculate about dates that are way too optimistic, giving the impression that we are constantly delayed. Besides, without a schedule it is very hard for us to take decisions on what features to include and what features to not include in each release. I think that in the end having a schedule will only have a positive impact on development.

And finally, thanks to Alexia Death for letting me use her graphic in the screenshot above.

Saturday, December 26, 2009

Best way to keep up with GIMP from git

The more people that use the latest GIMP code from git the better. It keeps the required effort to contribute code upstreams small, which in turn increases the likelihood of upstream contributions, and it makes bugs more vulnerable to early discovery which minimizes their impact.

However, keeping up with GIMP from git means extra work compared to using prebuilt packages. Unless you know of an easy way you might not withstand it. What follows is a description of how I do it, which is almost effortless once setup. I assume you know how to install necessary dependencies, what "the install prefix" means, and that you run Linux. The approach I use differs in two principal way compared to the many guides found on the net:
  1. I use autoconf's config.site feature instead of setting up environment variables manually
  2. I install in my home directory
Making use of config.site nullifies the need to manually manage environment variables, and installing in the home directory makes it easy to tinker with an installation since you don't need to be root. So, put this in $PREFIX/share/config.site where $PREFIX is in your home directory such as PREFIX=/home/martin/gimp-git, either manually or using this script:
export PATH="$PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
export ACLOCAL_FLAGS="-I $PREFIX/share/aclocal $ACLOCAL_FLAGS"
Then, assuming you have all the dependencies, you build GIMP the first time with:
git clone git://git.gnome.org/gimp
cd gimp
./autogen.sh --prefix=$PREFIX
make
make install
and then to get updated with the latest changes from the constantly moving code base you regularly do
git pull --rebase
make
make install
Note that the latter works without requiring any environment variables to be set since configure will source config.site. And because autogen.sh passes --enable-maintainer-mode to configure, it will also work when Makefile.am's or configure.ac are changed. In those rare occasions where things break, just run git clean -x -d -f which removes all non-version-controlled files so that you can start over.

The above approach works for as good as all GNOME projects, including GLib and GTK+. This makes it easy to adapt to GIMP's build requirements of these and other libraries even if your distro doesn't meet them. Let me know if you have problems!

Sunday, November 29, 2009

Reducing UI clutter, docking bars removed



GIMP has a UI that feels rather cluttered. Not only because of the many windows, but also because of the contents of each window. It is not hard to point out areas for improvement. The last few weeks I have worked on getting rid of one thing that contributes a lot to the clutter in docks: the docking bars.

The docking bars were used as drop targets when moving around dockable dialogs with drag-and-drop. They had many problems:
  1. They took up space, even when no drag-and-drop was going on
  2. They were not pretty
  3. They were only at the top and bottom of a dock, preventing dockable dialogs from being dropped in the middle of docks
Instead of having dedicated widgets acting as drop targets, I have now made certain areas within the existing widget hierarchy drop targets. These areas are highlighted when hovered. The new drag-and-drop system still has some rough edges, but it is already infinitely better than the docking bars.

Sunday, October 4, 2009

Single-window mode progress report



When the news of the introduction of a single-window mode in GIMP 2.8 hit the net it became clear what an incredible desire for something like this there was. The reactions have been overwhelmingly positive, and this really helps to motivate you to hack on it. The news also revealed an interesting but previously rather anonymous group of people: multi-window zealots despising the idea of a single-window mode in their beloved multi-window application. I suspect they don't realize that single-window mode is going to be optional...

I am happy to tell that the implementation of the single-window mode is progressing well. I have refactored the code to allow docks to be put inside an image window and Michael Natterer have refactored the code to allow many images to be shown in a single image window. The code is already combined and pushed to git master and you can get a very good feeling for how awesome the single-window mode is going to be by trying out the current code. Above is a screenshot of a live GIMP built from git master with 'Windows→Single-window mode' enabled. You can see the toolbox and dockable dialogs docked to the image window and the tabs for images in the image window at the top. Still a lot of things left to do though.

Friday, September 4, 2009

Reactions on GIMP 2.7.0

A couple of weeks back we took one important step closer to a GIMP 2.8 release by releasing GIMP 2.7.0. One of the enjoyments of contributing to a project like GIMP is that a lot of people is affected by your work and you get immediate feedback on what you do.

GIMP 2.7.0 was mildly received, which is understandable since none of they highly requested features were implemented. A lot of people over at Digg are disappointed about us not doing a single-window mode for 2.8. But again, that will come in 2.10. Then there's the usual stuff about requests for non-destructiveness and higher bit depths, which is also scheduled for 2.10. And as usual, most people are pretty clueless. I was happy to found one guy that knew what he was talking about, drag.
Update: Just to avoid confusion: after this post was made there was a change in plans and the addition of a single-window mode is now planned and in progress for 2.8.

A lot of people over at GIMPUSERS.com want the old save and "export" mechanism back. The conclusion to draw from that is that they are not part of the user group we are targeting. We are not trying to make GIMP into an excellent JPEG touchup application, we are making GIMP into a high-end photo manipulation application where most of the work is done in XCF.
Update: Based on this poll it seems this was just a matter of a vocal minority. I would also like to clarify that "they" were referring to this vocal minority, not GIMPUSERS.com as a site which I really like.

The reactions over at GimpTalk are much nicer. Not any complaints, just comments on the release. GimpTalk just became my favourite GIMP community!

Sunday, August 2, 2009

Continuing towards GIMP 2.8

I have promised myself to write at least one post per month in this blog. In this post, I will give a general update. In essence, we are simply working our way through the important items on the 2.8 milestone list. Once those are taken care of, and once the successful GSoC 2009 projects have been merged, GIMP 2.8 will be released.

With the release of GIMP 2.8 we have some really interesting times ahead because it has been agreed that the version after that will not be released until we have completely ported GIMP to GEGL and introduced long sought for features such as a single-window mode (which I will personally ensure happens), layer groups (currently hacked on by mitch), and constructs similar to adjustment layers found in PS.

Hopefully, we will also manage to release the first development version of GIMP 2.8 as soon as possible, GIMP 2.7.0. We're just waiting for a GIMP 2.6.7 release first that the currently very busy Sven is trying to get out.

Thursday, July 2, 2009

What this blog will be about

A lot of things has happened since my first patch for GIMP was commited almost three years ago. GIMP has undergone two stable releases, used three version control systems, improved a whole lot, and my involvement in the project has increased significantly. There is however a lot of work that still needs to be done, the two most important being improving the user interface and finish the integration of GEGL.

In this blog I intend to describe my continued involvement in creating the best free, open source image editor in existence together with people like Sven Neumann, Michael Natterer, Øyvind Kolås and Peter Sikking.