AlanHorkan is currently certified at Master level.

Name: Alan Horkan
Member since: 2002-09-14 15:39:05
Last Login: 2011-07-18 01:29:52

FOAF RDF Share This



Code may not be my main contribution to Open Source but I make myself useful with a little bit of everything (usability, bugfinding, general helpful encouragement).
Alan particularly likes cross platform software like AbiWord, Mozilla, OpenOffice, and projects like Inkscape, Dia> and the GNU Image Manipulation Program.

Alan is moderator of the Gnome Usability Mailing list.
Alan can often be found on usually on the channel #abiword.
Alan's email address is horkan a at maths dot tcd dot ie
Alternatively you can try contacting alanhorkan at Gmail or Yahoo! although these addresses get checked far less often.

LiveJournal for Alan Horkan
Technorati Profile for Alan Horkan


Articles Posted by AlanHorkan

Recent blog entries by AlanHorkan

Syndication: RSS 2.0

OpenRaster with JPEG and SVG

OpenRaster is a file format for layered images, essentially each layer is a PNG file, there is some XML glue and it is all contained in a Zip file.

In addition to PNG some programs allow layers in other formats. MyPaint is able to import JPG and SVG layers. Drawpile has also added SVG import.

After a small change to the OpenRaster plugin for The GNU Image Manipulation Program, it will also allow non-PNG layers. The code had to be changed in any case, it needed to at least give a warning that non-PNG layers were not being loaded, instead of quietly dropping them. Allowing other layer types was more useful and easier too.
(This change only means that other file types with be imported, they will not be passed through and will be stored as PNG when the file is exported.)

Syndicated 2015-04-12 18:08:16 from Alan Horkan

OpenRaster Paths (or Vectors)

Summary: plugin updated to allow round-trip of paths.

The MyPaint team are doing great work, making progress towards MyPaint 1.2, I encourage you to give it a try, build it from source or check out the nightly builds. (Recent windows build Note: the filename mypaint-1.1.1a.7z may stay the same but the date of build does change.)
The Vector Layers feature in MyPaint is particularly interesting. One downside though is that the resulting OpenRaster files with vector layers are incompatible with most existing programs. MyPaint 1.0 was one of the few programs that managed to open the file at all, presenting an error message only for the layer it was not able to import. The other programs I tested, failed to import the file at all. It would be great if OpenRaster could be extended to include vector layers and more features but it will take some careful thought and planning.

It can be challenging enough to create a new and useful feature, planning ahead or trying to keep backwards compatibility makes matters even more complicated. With that in mind I wanted to add some support for vectors to the OpenRaster plugin. Similar to my previous work to round-trip metadata in OpenRaster I found a way to round-trip Paths/Vectors that is "good enough" and that I hope will benefit users. The GNU Image Manipulation Program already allows paths to be exported in Scalable Vector Graphics (SVG) format. All paths are exported to a single file, paths.svg and are imported back from that same file. It is not ideal, but it is simple and it works.

Users can get the updated plugin immediately from the OpenRaster plugin gitorious project page. There is lots more that could be done behind the scenes, but for ordinary users I do expect any changes as noticeable as these for a while.

Back to the code. I considered (and implemented) a more complicated approach that included changes to stack.xml, where raster layers were stored as one group, and
paths (vectors layers) as another group. This approach was better for exporting information that was compatible with MyPaint but as previously mentioned, the files were not compatible with any other existing programs.

To ensure OpenRaster files that are back compatibility it might be better to always include a PNG file as the source for every layer, and to find another way to link to other types of content, such as text or vectors, or at some distant point in the future even video. A more complicated fallback system might be useful in the long run. For example the EPUB format reuses the Open Packaging Framework (OPF) standard, any pages can be stored in multiple formats, so long as it includes a fallback to another format, ending with a fallback to a few standard baseline formats (i.e. XHTML). The OpenRaster standard has an elegant simplicity, but there is so much more it could do.

Syndicated 2015-04-06 22:00:30 from Alan Horkan

OpenRaster Metadata

Summary: plugin updated to allow round-trip of metadata.

OpenRaster does not yet make any suggestions on how to store metadata. My preference is for OpenRaster to continue to borrow from OpenDocument and use the same format meta.xml file, but that can be complicated. Rather than taking the time to write a whole lot of code and waiting do metadata the best way, I found another way that is good enough, and expedient. I think ordinary users will find it useful -- which is the most important thing -- to be able to round-trip metadata in the OpenRaster format, so despite my reservations about creating code that might discourage developers (myself included) from doing things a better way in future I am choosing the easy option. (In my previous post I mentioned my concern about maintainability, this is what I was alluding to.)

A lot of work has been done over the years to make the The GNU Image Manupilation Program (GIMP) work with existing standards. One of those standards is XMP, the eXtensible Metadata Platform originally created by Adobe Systems, which used the existing Dublin Core metadata standard to create XML packets that can be inserted inside (or alongside) an image file. The existing code creates an XMP packet, let's call it packet.xmp and include it in the OpenRaster file. There's a little more code to the load the information back in and users should be able to go to menu File, Properties and in Properties dialog go to the tab labelled Advanced to view (or set) metadata.

This approach may not be particularly useful to users who want to get their information out into other applications such as MyPaint or Krita (or Drawpile or Lazpaint) but it at least allows them not to lose metadata information when they use OpenRaster. (In the long run other programs will probably want to implement code to read XMP anyway, so I think this is a reasonable compromise, even though I want OpenRaster to stay close to OpenDocument and benefit from being part of that very large community.)

You can get the updated plugin immediately from the OpenRaster plugin gitorious project page.

If you are a developer and want to modify or reuse the code, it is published under the ISC License.

Syndicated 2015-04-06 20:36:09 from Alan Horkan

OpenRaster Python Plugin

Thanks to developers Martin Renold and Jon Nordby who generously agreed to relicense the OpenRaster plugin under the Internet Software Consortium (ISC) license (it is a permissive license, it is the license preferred by the OpenBSD project, and also the license used by brushlib from MyPaint). Hopefully other applications will be encouraged to take another look at implementing OpenRaster.

The code has been tidied to conform to the PEP8 style guide, with only 4 warnings remaining, and they are all concerning long lines of more than 80 characters (E501).

The OpenRaster files are also far tidier. For some bizarre reason the Python developers choose to make things ugly by default, and neglected to include any line breaks in the XML. Thanks to Fredrik Lundh and for the very helpful pretty-printing code. The code has also been changed so that many optional tags are included if and only if they are needed, so if you ever do need to read the raw XML it should be a lot easier.

There isn't much for normal users unfortunately. The currently selected layer is marked to the OpenRaster file, and also if a layer is edit locked. If you are sending files to MyPaint it will correctly select the active layer, and recognize which layers were locked. (No import back yet though.) Unfortunately edit locking (or "Lock pixels") does require version 2.8 so if there is anyone out there stuck on version 2.6 or earlier I'd be interested to learn more and I will try to adjust the code if I get any feedback.
I've a few other changes that are almost ready but I'm concerned about compatibility and maintainability so I'm going to take a bit more time before releasing those changes.

The latest code is available from the OpenRaster plugin gitorious project page.

Syndicated 2015-03-23 18:35:16 from Alan Horkan

Krita 2.9

Congratulations to Krita on releasing version 2.9 and a very positive write-up for Krita by Bruce Byfield writing for Linux Pro Magazine.

I'm amused by his comment comparing Krita to "the cockpit of a fighter jet" and although there are some things I'd like to see done differently* I think Krita is remarkably clear for a program as complex as it is and does a good job of balancing depth and breadth. (* As just one example: I'm never going to use "File, Mail..." so it's just there waiting for me to hit it accidentally, but far as I know I cannot disable or hide it.)

Unfortunately Byfield writes about Krita "versus" other software. I do not accept that premise. Different software does different things, users can mix and match (and if they can't that is a different and bigger problem). Krita is another weapon in the arsenal. Enjoy Krita 2.9.

Syndicated 2015-02-25 23:42:50 from Alan Horkan

369 older entries...


AlanHorkan certified others as follows:

  • AlanHorkan certified cinamod as Master
  • AlanHorkan certified alan as Master
  • AlanHorkan certified AlanHorkan as Master
  • AlanHorkan certified hub as Master
  • AlanHorkan certified larsrc as Journeyer
  • AlanHorkan certified Uraeus as Master
  • AlanHorkan certified gman as Master
  • AlanHorkan certified bradyn as Apprentice
  • AlanHorkan certified sisob as Master
  • AlanHorkan certified wlach as Master
  • AlanHorkan certified caolan as Master
  • AlanHorkan certified Telsa as Master
  • AlanHorkan certified jdub as Master
  • AlanHorkan certified glasseyes as Master
  • AlanHorkan certified Adrian as Journeyer
  • AlanHorkan certified tml as Master
  • AlanHorkan certified RyanPavlik as Master
  • AlanHorkan certified joncruz as Apprentice
  • AlanHorkan certified louie as Master
  • AlanHorkan certified miguel as Master
  • AlanHorkan certified robsta as Journeyer
  • AlanHorkan certified msevior as Master
  • AlanHorkan certified bwh as Master
  • AlanHorkan certified Spooky as Master

Others have certified AlanHorkan as follows:

  • AlanHorkan certified AlanHorkan as Master
  • hub certified AlanHorkan as Journeyer
  • larsrc certified AlanHorkan as Apprentice
  • mhatta certified AlanHorkan as Apprentice
  • sisob certified AlanHorkan as Journeyer
  • voltron certified AlanHorkan as Apprentice
  • Uraeus certified AlanHorkan as Journeyer
  • ariya certified AlanHorkan as Journeyer
  • Perrin certified AlanHorkan as Journeyer
  • wlach certified AlanHorkan as Apprentice
  • strider certified AlanHorkan as Journeyer
  • fxn certified AlanHorkan as Journeyer
  • ladis certified AlanHorkan as Journeyer
  • mdupont certified AlanHorkan as Apprentice
  • byte certified AlanHorkan as Journeyer
  • glasseyes certified AlanHorkan as Apprentice
  • RyanPavlik certified AlanHorkan as Journeyer
  • bolsh certified AlanHorkan as Apprentice
  • mikeycooper certified AlanHorkan as Journeyer
  • chrisime certified AlanHorkan as Journeyer
  • Lobster certified AlanHorkan as Journeyer
  • mirwin certified AlanHorkan as Apprentice
  • wspace certified AlanHorkan as Journeyer
  • zbowling certified AlanHorkan as Journeyer
  • pvanhoof certified AlanHorkan as Master
  • superant certified AlanHorkan as Journeyer
  • dragotown certified AlanHorkan as Journeyer
  • lucasr certified AlanHorkan as Journeyer
  • shlomif certified AlanHorkan as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page