Migrating a desktop image processing app to a web application
===

We are planning to develop an image processing web application based on an existing Mac OS application. This is an <a href="http://veprit.com/photosense/index.php">automatic photo enhancement and editing software</a>. Coming from the desktop app development world, I just found out that my web design skills are outdated by a dozen of years… I would love to do everything with a pure HTML/PHP, but my research suggests I would probably need to learn something new… Thus, the question is what technologies to utilize (and thus first to learn) to accomplish this task.

The image processing engine is written in C/C++, and it extensively utilizes the Apple-specific SIMD acceleration library. Thus, we need a Mac OS-based server running the engine application. Here the questions start rising. The first solution coming into my mind is a command-line application accepting certain arguments and image data in files. The server-side script runs this application and retrieves the results (processed image files). But here we will probably get into the concurrency problem: what if multiple requests appear simultaneously, and we try to read/write the same input/output files simultaneously etc.? Probably there is a better way, to run the C++ engine as a web service or whatever. Any hints on what technologies to look at to solve this properly? Also the scalability question arises here: it can be that we need to distribute the workload between multiple servers running the engine processes.

Then, there is the server-side script which communicates with the client, and the client part (user interface). The GUI shows the image and presents a number of controls, such as checkboxes and sliders.  The image updates when the user changes something. There is a large choice here. I have spent quite some time trying to classify the available solutions to choose one, but am quite overwhelmed… The only thing I am more or less sure about is we need AJAX to provide a modern responsive user interface. But what exactly framework to use?.. Is pure PHP/HTML/JavaScript feasible (I often prefer to code more, at lower level, to avoid learning extra libraries etc.)? Out of higher-level frameworks, I look towards Google Web Toolkit (although I am not a Java guy, but if it really helps…). jQuery? My problem is I don't realize what is good, or even sufficient, for this purpose. Any advice from experienced web developers for somebody who in general prefers to stay low-level, use fewer libraries etc.? Is it reasonable to use only jQuery without higher level things, for example?