Sketch's author interview : Bernhard Herzog
by
I n t e r v i e w 

If you've never seen sketch, it's a free drawing software wich ever provides interresting features. You' ll  find an complete documentation about this software here : :http://www.linuxgraphic.org/section2d/sketch/documentation.html
You'll also find cliparts that you can use for your personal work. The official website of Sketch is here : http://sketch.sourceforge.net/
Linuxgraphic.org is a French web site designed to help artists , some parts are provided in English like http://www.blender-cafe.org (integrated in Linuxgraphic.org)

Linuxgraphic.org:
Hello Bernhard, you are the main author and the current maintener of Sketch, a vector drawing program for Unix. Could you explain why did you choose to start this project ?

Bernhard Herzog :

I first contemplated writing a vector drawing program when I was writing my diploma thesis. I was doing that in LaTeX mostly on a Sun workstation
and a little on my Linux PC at home. I used XFig for some illustrations, but I was very dissatisfied with it, mainly because of its user interface which I never quite got used to but I also found the splines hard to use (I never got them into the shapes I wanted) and I'd also have liked to have gradients. I had also found Tgif, but even though it had a much better user interface, it's graphics capabilities were actually very much the same as XFig's.

I thought that I could do it better and that writing a drawing program would be a very interesting project, but I didn't have the time for it then. It was obvious to me that it would take a lot of work to write such a program.
Bernhard's picture

Around that time, spring 1996, I discovered Python and it occurred to me that it would be the ideal language for a vector drawing program. Object oriented languages are a pretty natural fit for vector drawing programs and GUI programming and Python's flexibility would also make it easier than, say C or C++, to experiment with different designs. Finally, it would make an easy to learn language for user defined scripts that automatically had access to all of Sketch.

Even so, I wasn't sure yet whether Python was fast enough and I didn't really know enough about X programming. So, later that year, I started learning about X-programming with the Python X-extension, an interface to Xlib and Xt based widget sets like Athena and Motif and wrote what amounts to the very first version of Sketch. It was relatively simple but fast enough even on the 486 I was using at that time to convince me that it could be done.

Development on Sketch continued only slowly until mid 1997 when I decided to concentrate my free software development on Sketch and I ported it from the X-extension to Tkinter and started to add more features like bézier curves and raster image objects.
 

Linuxgraphic.org :
You've done a lot of work since the fisrt stage of the project, did you find some help by foreign developers to improve and contribute in Sketch ? and why did you choose TCL/tk for the interface ?

Bernhard Herzog :
I'm still the only developer, but sometimes I get patches or scripts. The situation has improved a bit in recent months, though. The number of patches I get has increased a little and there are now several people who seem serious about implementing new features for Sketch. However, I'd be happy if more developers joined the project.
To answer the second part of your question, I chose Tk for the interface because it was the most sensible thing to do at that stage.

The Athena widget set I was using before that was very primitive and hard to use, both from the user's and the programmer's point of view. This is understandable to a certain extent because it was intended as an example implementation of an Xt based widget set. However, that didn't stop it becoming the widget set of choice for free software for some time because it was the only one that was free and widely available.

Click to enlarge
Sketch in TCL/TK
It was clear that I needed something better and, compared to the other widget sets available, Tk had a lot of advantages. The python bindings for Tk which are called Tkinter are included in the standard Python distribution which makes them the de facto GUI toolkit for Python. Tk was also already very stable and mature. The main disadvantage of Tk was and is its close integration with tcl. Tkinter embeds a complete tcl interpreter, which seems wasteful but is the easiest way to interface Tk.

Back then, Gimp was near the beginning of the 0.9.x series and GTK was in its early stages. They seemed quite instable to me, although I wasn't sure whether the crashes were due to Gimp or GTK or, more likely, both. If I recall correctly, there also weren't Python bindings yet.

Well, I wanted to concentrate on Sketch and not on debugging the widget set, so I chose Tkinter.

Linuxgraphic.org
So, your project started before the Gimp Project; how can we explain that sketch didn't find the same enthousiasm among developers than Gimp, yet Sketch uses an easier language (Python) and there are no troubles with the widget library ?

Bernhard Herzog :
Oh, Gimp is actually older than Sketch. The first version of Gimp was published in early 1996, at least half a year before I even started to write Sketch.

I think the lack of developer enthusiasm for Sketch is to a certain extent precisely due to it using Python and Tk. Practically everybody who programs in under Linux and similar systems knows at least some C.
That makes it easy for programmers to contribute to projects like Gimp that are mostly implemented in C.  The number of Python programmers is a lot smaller, so many people who might consider contributing code to Sketch have to leary Python first and that means many won't contribute at all.  Luckily, python is becoming more and more popular.

The toolkit situation has changed a lot since the decision for Tk. By the time I released the first public version at the end of October 1998, GTK had already become a stable and more advanced toolkit than Tk.
Today, Tk probably doesn't help attracting developers.

I can think of other reasons as well, such as a still relatively small user base. On the whole I can only speculate, but I think that there are several factors that contribute and not a single simple reason.
 

Linuxgraphic.org
Today, it seems that the sketch's development took a new turning using GTK Python and libArt; what are the benefits from changing Tk to GTK and why Sketch is not integrated with Gnome Office Project ? (note : since this interview Sketch is now in Gnome Office with Sodipodi)

Bernhard Herzog :
There are several reasons why I switched from Tk to GTK.  GTK offers more advanced widgets than Tk such as tree views and multi-column lists or, particularly useful for the anti-aliased view, a widget that can
display RGB buffers on a large variety of visuals, so that I don't have to have that kind of code in Sketch itself. GTK 2.0 will also be very interesting for Sketch because Pango will make it easier to get high quality fully internationalized text support in Sketch.
 
Click to enlarge
Sketch in GTK
The GTK based version of Sketch will also be easier to integrate with GNOME.  GNOME offers some very useful infrastructure. Particularly interesting for a graphics program is gnome-print. Gnome-print's imaging model is an extension of what PostScript can do because it offers for instance translucency features which are awkward to do if you rely only on PostScript for printing as Sketch does now.

I also hope that there will be some cooperation between Sketch and GIMP for some of the user interface elements, such as color selector
dialogs. That's one area where Sketch and GIMP both have more advanced needs than most other GTK or GNOME applications.

Last not least, it was user feedback that made me consider a switch to GTK for 0.8. Quite a few users asked why I had chosen Tk and suggested a port to GTK.

As for GNOME Office, I think the fact that Sketch is not a part of GNOME Office is simply due to lack of advocacy on my part. At least I don't know any technical reasons why Sketch couldn't be part of it. I think Sketch would be a good addition to GNOME Office and it would certainly help Sketch in that it would become more visible.

Linuxgraphic.org
Recently, Sun opened the source of staroffice and they planed to use GPL licence, they also opened Openofice.org and planned to port Staroffice to GTK/gnome.
Can we hope for a merger between Sketch and StarDraw ? If not what are next features planned to be implemented in SKetch ?

Bernhard Herzog :
Well, it's a bit too early to speculate about the impact of StarDraw on Sketch. However, there are some reasons why a merger is unlikely.

First of all, 'merge' is probably not the right word. Given StarDraw's size and the fact that it's backed by Sun, any merge would mean that some parts of Sketch became part of StarDraw and that Sketch would cease to exist as a separate project. That's not something I want to happen.

There's also a technical reason. Sketch is primarily implemented in Python while StarDraw is written in C++, as far as I know. That means that it would be possible to use algorithms or data structures of one of the programs in the other, but any actual code sharing or reuse would be difficult.

Nevertheless, once the code is actually released, it will be very interesting to see how StarDraw solves some of the design problems of a vector drawing program.

As for the development of Sketch, the main goal of the near future is to complete the port to GTK, extend the text-support, and eventually to release version 0.8. Really new graphics feature like transparency willcome in the 0.9 development series.

Linuxgraphic.org
Ok, i'm a developer and i learned Python's basic. Is it enough to join your project and help Sketch project or do I need to learn something else ?

Bernhard Herzog :
Well, since you know Python, the biggest hurdle to overcome is to get familiar with Sketch's internals.

The Developer's Guide, which is included in the source archive and the binary RPMs contains quite a bit of information to get you started. For instance, it explains the source code organization, the basic Sketch-specific data types and how plugins work. The Developer's Guide is not complete, though, so you'll often have to read the code to learn more or ask me.

To get some practical experience in programming for Sketch, the next step could be writing user scripts. Since both the user scripts and Sketch itself use Python, the scripts have access to all internals of Sketch and they use the exact same objects and interfaces as Sketch's internal code. That way you can start small without having to modify Sketch's code directly and grow from there.

Linuxgraphic.org
We are towards the end of this interview, could we know in wich company  you are currently working and if it concerns the developement of  graphic tools ? Did Sketch bring to you some benefits in your professional life ?

Bernhard Herzog :
I'm working for Intevation , a young and small but growing Free Software consulting company here in Germany. I started working for them in October.

I'm not directly working on graphics tools, but one of Intevation's areas of expertise is GIS, geographic information systems, which do have a relation to computer graphics. Among other things, Intevation runs Free GIS , a collection of free GIS software. The first project I've been working on at Intevation is also GIS-related. It's a simple webserver component for raster maps called MapIt! http://www.mapit.de.

Sketch did bring some benefits for me because I got this job because of it and now I get paid to work fulltime on free software and even though I'm not getting paid to work on Sketch there's no problem in using company equipment and other resources to work on Sketch or other free software. Occasionally even my bosses contribute to Sketch, like Bernhard Reiter -- one of the co-founders of the FSF Europe  by the way -- who recently posted a script to export raster graphics to the Sketch mailing list.

Linuxgraphic.org
Many thanks for this interview Bernhard, we wish you a good continuation in your works.