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, June 12, 2010

Automatic tab style and removed tab title bar

Illustration

I currently have less time over for GIMP development than I used to have. Puss på dig Emma! ♡ :) Nevertheless, I've just landed two changes to the UI. The first one adds a new tab style to docks, the second one removes the rather space inefficient tab title bar.

The new tab style is called 'Automatic' and makes the tabs in docks as big as possible given the available space. If you have one dockable dialog in a wide dock, the tab will be an icon and a title. If you have many dockables in a narrow dock, the tabs will be just icons. The Automatic tab mode is dynamic, resizing a dock will update the tabs in a dock live. This tab style is also the new default tab style.

Following the Automatic tab style I could remove the tab title bars. The removed tab title bar had two purposes. Hosting the tab menu button and acting as a drag-and-drop handle when no tabs were present. The first has been addressed by moving the tab menu button up to the tabs and the second has been addressed by always showing tabs.

Along with the removal of the docking bars a while back, the result is that GIMP has gotten a cleaner and more space efficient UI. There's a lot of things that could be further improved of course, but this is what I wanted to do for 2.8. And the single-window mode. Speaking of, I haven't had much time for that lately either, but I'm sure it'll all be fine eventually.

Saturday, March 20, 2010

GIMP 2.8 development still under control

Hide docks image

A while back I announced the creation of a schedule for GIMP 2.8 development. I've made sure to keep this schedule up to date, and after a bunch of initial adjustments such as postponing some feature and adding others, the schedule has now stabilized a bit. The estimated date for a release candidate is still in December 2010. Tracking progress with a schedule really helps you to feel in control of development. The 2.4 development cycle which I were around in the end of, and the 2.6 development cycle which I were fully part of, were more chaotic with no commitment to a delivery date. This is perfectly fine for many, but I prefer structured development.

As far as development goes I have continued working on the UI in general and single-window mode in particular. There is now only one major thing missing before single-window mode is ready for some real usage, which is proper session management of the single-window mode. That is, it of course needs to be made possible to start up in single-window mode and the UI layout in single-window mode needs to be preserved. There are some quite big details to sort out here, so I'm basically waiting for Peter Sikking to find time to write a UI specification on how it should work.

In terms of more concrete changes I have for example added a new menu item under the Windows menu labelled Hide docks. This makes the crucial feature to hide dock windows and docks with Tab discoverable, a feature most people don't know about but wish they knew sooner when you tell them about it. I've also made the setting preserved across GIMP sessions, so if you close GIMP with the docks hidden, they will remain hidden when you start GIMP the next time. Another change is that dock windows now only have the active dockables in the title, instead of all tabs, to avoid hugely long window titles. I would also like to take the opportunity to point out that there is a Recently Closed Docks sub menu under the Windows menu, even in 2.6, which contains dock windows you have closed, something many people don't seem to be aware of.

I'll let that be the end of this general update. And sorry Fredrik for not making a post in February ;)

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 (note you can use the method I describe for the key dependencies, including babl, GLib, GEGL and GTK+), 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 -xdf which removes all non-version-controlled files so that you can start over from autogen.sh.

The above approach works for as good as all GNOME projects, including GLib, babl, GEGL 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!