PhotoFlare Conversation with PhotoFlare developer Dylan Coakley

There are many reasons one could wish for a simple general image editor on Linux. Maybe you just want to crop a photo, and GIMP is a bit too much. Or you want to scribble over an image, and Krita is an overkill. Whatever your reason is, with Pinta gone (or dormant) there haven't been too many options left around. PhotoFlare is one of them.

The project has been around for ca. 10 years (most of them, under the name of PhotoFiltre LX), but never got as much mainstream interest as some of the more complex projects.

Since releasing version 1.5 a year ago, Dylan Coakley has been focusing on the next big update for which he has some serious plans: layers support, shape tool, MyPaint brush tool, text effects, and more.

PhotoFlare 1.5.x main window

(PhotoFlare 1.5.x main window)

It's time we talked to Dylan about project's background and future plans.

We first spoke in early 2010, just few days after the new year. What kind of person does it take to be working on your own thing while most everybody else is chilling out, and then continue doing that while not getting as much attention as some bigger projects do? :)

It takes a very passionate person, someone who finds enjoyment in seeing what can they create. I give everything 100 percent in life and my personal projects are no different. I want to push the boundaries to see the levels my own programming and creativity can reach.

When I'm not working on PhotoFlare, I'm working a full time job as a web developer. In my personal life I also work on other smaller hobby projects like 2D games in Love2D or PhaserJS. Recently I started helping out with the Openshot project to give back to the community, since I did use it to create all of my own project videos.

I do a bit of graphic design, video creation and I play games on my PS4 during my downtime. I enjoy running outdoors for training during the week and I participate in races around all of Ireland. Running is a great way to keep fit, de-stress and allows me to unleash my competitive side in races.

You started this project as PhotoFiltre LX, with permission from original PhotoFiltre developer(s). How did that happen?

This project started by an initial effort to port the PhotoFiltre Delphi code to Linux. This port was not going to be possible, it was recommended by Lazarus developers that I start from scratch instead. I had already been in contact with the original PhotoFiltre author, so I simply asked the original author for permission to use the PhotoFiltre LX name.

What made you change the project's name in 2017?

There were two main reasons.

First of all, I got tired of people making a straight 1:1 comparison of features between PhotoFiltre LX v1 to PhotoFiltre v7.x.x. People expected my project to be a straight clone and when anything was implemented differently to PhotoFiltre I was getting complaints. PhotoFiltre LX v1 didn't have as much features either but it also did not have more than 10 years of development behind it.

Secondly, I wanted the project to have its own identity. I didn't like being so bound to another name, feeling like I couldn't do anything different in my project. Apart from that I also didn't feel PhotoFiltre LX sounded like a good name at all from a branding point of view.

PhotoFlare 1.5.x scale image dialog

(Scale Image dialog)

The project appears to be funded by Blue System Ltd. and in partnership with ICS, and you also spent your own savings on development of PhotoFlare. What's the story?

This started back when I was in college studying Software Development. I would have been working on the Gtkmm version of PhotoFiltre LX back then. Initially I was getting small donations but one person in particular was giving me a regular donation of €50 which to me as a young student was mind blowing. I got in touch with him via e-mail to thank him and we got talking about the project. He claimed to be from a company called Blue Systems and wanted to help the project succeed in a financial manner.

He recommended to develop the software in Qt rather than Gtkmm. At around the same time I had multiple recommendations from Ubuntu forum contributors who declared my project would be much more successful written in Qt. I started working on my very first prototype of PhotoFiltre LX in Qt5.

After some months I had a working prototype but I felt I was only just beginning to catch up to the features of my Gtkmm version, so I needed to ramp up development to implement features faster. I began my research on Qt development companies online. Soon I discovered ICS, who seemed to be right at the helm of Qt development and on top of the frameworks latest developments after every new Qt release. I was convinced this was the best company to partner with at the time.

The development with a company of this nature would not be cheap, so I did have to combine some personal savings with the sponsorship money to cover the overall development fee. This development would only get me to the initial Demo release (v0.3). I needed this demo to have something for users to try and at the same time I could gauge the level of public interest in the project.

PhotoFlare 1.5.x batch processing options

(Batch processing options)

In other words, your work on PhotoFlare is a part-time job?

Yes, I work on it part-time currently. I have always worked on PhotoFlare part-time throughout my college education and since I got my first career job. Working on a project in this way means hours spent on the project vary to a large degree week to week.

Around version 1.0, you had PhotoFlare (well, PhotoFiltre LX) Studio, a commercial version with latest features. But you don't seem to be doing this anymore. Why didn't it fly?

Studio did work really well for me as a source of funding. I just didn't see the point of selling it anymore when I had merged almost everything from Studio into GitHub for the Community Edition. I decided it would be more worth my while to engage with the community and improve the community edition first.

What's your plan for funding your work on PhotoFlare in the future?

My current plan is to release PhotoFlare v2.0 as the new Studio version initially. I have been thinking about ideas around regular income for the project and feel maybe selling a support/subscription package may be the best way forward.

The software industry as a whole seems to be moving away from the idea of registering a serial key for a version of software and instead most people prefer to sign up to an online portal which allows access to the latest versions of that application.

PhotoFlare 1.5.x Hue Variation dialog

(Hue Variation dialog)

So there could be paid subscription with access to latest features and the existing community (GPLv3+) version at the same time?

Yes, that is the current plan, but I'm open-minded about my funding model going forward. Whatever I find works best for the project, I will stick with it.

Hopefully I could be funded enough regularly to work on the project at least one day a week. This could be a dedicated development day without any distractions.

At some point, projects like PhotoFiltre started sacrificing their simplicity in favor of power that comes with layers support. What is your drive to implement this for 2.0?

It feels a little bare to not have it yet and I think its a feature expected almost by default these days. I have been getting dozens of feature requests for Layer support. It would be a natural progression for the project right now.

Although looking back I do wish I had implemented layer support right from the start. Layer support will have a big impact on current PhotoFlare features.

Layers and OpenRaster support in the v2.0 roadmap — that makes sense. Will you go as far as layer groups, masks, blending modes, re-editable text layers etc.?

I'm still exploring what OpenRaster has to offer. I did consider rolling my own special JSON style file format but if OpenRaster supports everything I want implemented I will use that file format as the default.

Layer groups are planned and masks. PhotoFlare already supports editing text (before you anchor it), so it would make sense to support editing text with layers too. Initially Layer support will be quite basic but as soon as I have a foundation in place I intend to build upon it.

Once you add layers support, do you expect to make effects non-destructive, e.g. as layer filters or adjustment layers, if that's possible with GraphicsMagick at all?

I do like the idea of non-destructive editing, it just depends on how our tech stack could handle it. Much like any software development, I need to have the time and resources to implement it. However, I need to take into account that this is a relatively simple editor and I should try to walk that thin line between simplicity and powerful features. It should always keep that balance intact as a core principle of the project.

PhotoFlare 2 alpha MyPaint brushes

(MyPaint brushes support preview in v2 alpha)

Let's talk about technology. One of the most interesting topics lately is editing in the linear scene-referred space in general and the use of OCIO in particular (e.g. see this discussion on Pixls). This has already resulted in OCIO support in Krita and "filmic" transforms in darktable and PhotoFlow, as well as in the ACES RRT diplay filter in GIMP's master branch. What's your take on that?

I'm not always up to date on the happenings in the graphics world. I'm a developer first and graphics designer/editor second. Reading up on OCIO, it does sound like a great technology. It gets me thinking should PhotoFlare support such a framework in future revisions. I will put the question out to PhotoFlare users and see what the level of interest is like.

What is the image processing pipeline in 2.0 going to look like, deep inside? How much of GraphicsMagick will you continue using?

In 2.0, much of the main project structure will be the same for the pipeline. I hope to get rid of certain processing aspects such as the conversion between QImage and MagickImage. This used to be a very big burden to the project and I feel even though the performance is much improved I wish to only use one data type to store the image.

Also needed will be the optimization of filters to use multiple cores and send those resources into libgraphicsmagick too. Mostly I used Graphicsmagick for the filters, although later on I started swapping out some graphicsmagick filters in favour of the faster Qt methods to achieve the same result.

For now I think GraphicsMagick will stay for just the filters, but I hope to further improve the performance to use many more cores available on your system. I will need to reintroduce certain features like RAW support at some point. PhotoFlare supported RAW on Linux previously but users will need this feature implemented in a cross platform manner.