Friday, 13 July 2018

Is PSF for me?

MSIX's Package Support Framework was released yesterday. As this is an initial blog, I am penning down some points to touch base on basic questions around PSF

1) Who is PSF for?
2) Who can create PSF fixups?
3) What skills are needed for developing compatibility fixups?
4) Where is this technology likely to lead few years down the line?

I am sure many of you must be having these questions in mind. Having worked on a very similar product at Cloudhouse, I'll try to answer some of the basic questions to give you a quick start on the skills needed to try your hands at this new framework. I am sorry for disappointing those of you who were expecting a technical blog. We will dig into the tech details in subsequent posts.

As always, a disclaimer first. These are my personal views based on my experience and don't reflect the opinion held by Cloudhouse or Microsoft.

John Vintzel's post gives a good summary of PFS and here is the link to the git repo. I really liked the step by step guide by Norm Estabrook (here) explaining the whole process in detail. Yeah, it's slightly lengthy (23 pages) but worth it! Let's get to the questions now.

Who will benefit from PSF?

PSF is for the apps which have compatibility issues with the latest operating systems. As I've said in my earlier posts, I think this was the missing piece of the puzzle in earlier products (like App-V, ThinApp, AppX). Most of the virtualization/layering products fail to run applications which are incompatible with target OS (where the app would be deployed). This is where Cloudhouse's virtualization engine has been a pioneer which I've been working on. With the introduction of PFS, Microsoft is trying to break the barrier for migration of incompatible legacy apps onto latest platforms (mainly Windows 10 right now).

Who can create PSF fixups?

PSF Fixups are written in C++. So, that's a skillset you will need. Also, as this framework is for hooking into Windows APIs, debugging it will need some knowledge of Windows internals. But even if you don't have these skills, please don't get demotivated. I came from a Linux world. Cloudhouse is my first job on a pure windows product (before that, I didn't even know what windows registry is). If I can learn it, then so can you. Its never too late to learn something new! Wow, that rhymes :)

What skills are needed for developing compatibility fixups?

Based on my experience; identifying and fixing compatibility issues need intensive debugging, coding skills and little knowledge of Windows internals is definitely a big plus (especially with Line of Business apps which heavily depend on COM, kernel objects etc.).

With debugging I don't mean normal program debugging. Its a totally different level of debugging when you just have an executable (without the source code). You will need to be familiar with windows debugging tools like Process Monitor, WinDbg, APIMonitor etc. Most of the times, you will get red-herrings where an event seems to be causing the issue but isn't the root cause. Sometimes it might be a simple path which causes the incompatibility (in which case you are very lucky). But I've seen many legacy apps where it's like finding a needle in a huge haystack. Well, the hard work pays off. After fixing the issue, it's a delight to see the app running on Win10 :)

Where is it likely to lead few years down the line?

In this initial release of PSF, I've noticed around 25 fixups in the Git repo. This will come handy to fix basic file incompatibilities. I am guessing that registry fixups might be released very soon. However, most of the legacy line of business apps depend on old and deprecated runtimes. Such cases involve heavy debugging. So, I assume that it will take a couple of years to build up a full suite of fixups covering various Windows APIs used in enterprise applications. But as the saying goes - "A journey of a thousand miles begins with a single step!"

That's all for now. Stay tuned for more detailed posts on PSF.

Priya Saxena.

No comments:

Post a Comment