Hi, your local devthread hobo here again with some new stuff about the patcher.
The patcher was added late in the 0.14.x development series in order to simplify updating and reduce update download sizes, and unfortunately, it has had a bunch of problems. The main concerns are that the entire patching system is huge (about 120MB), uses mostly third-party code, is unreliable, and it is incapable of downloading itself when it's updated. In essence, it's been a huge pain and hasn't really been as useful as we originally intended. We've made a few quick fixes here and there to it, but it still needs a lot of work. In this light, we've made it one of the higher priorities to fix, and after a few false starts and distractions (including University, yay summer), I finally have an open schedule for working on it.
Many problems stem from how the patcher was originally structured. Right now, it uses Unity to draw the UI and handle events, which makes it simply enormous and adds thousands of useless dependencies and inefficiencies, contributing to the astronomical size of the current patcher. I've rewritten the UI in Windows.Forms (don't worry, Mac/Linux users; Mono can handle Winforms on your platforms) and ditched Unity, so beyond a few compression libraries, it's now completely standalone and is down to about 500KB in size. The UI isn't particularly pretty, but complex UIs can mess up the Mono compatibility, and the UI isn't really a focus right now anyway; The most important part is the functionality and reliability of the system.
The current system just blindly attempts to apply patches to files, and if something breaks, you're left with a big, fat pile of corrupted files, and further attempts to "redo" the patch will just make them even more messed up. To correct this, I'm planning to add a checksum manifest to the patches that tells the patcher what the "old" files MUST look like before it'll even try a patching operation. In addition, the patcher will generate the finished file in a temporary folder while patching and will only copy the file over if nothing goes wrong. This way if something does go wrong, the corruption will just be in that temporary folder, and not in your KSP installation. If the files on your computer don't match up with what the patcher is expecting to see, it'll ask if you want to redownload KSP and then start downloading that huge ZIP file from the website for you and will overwrite your install with the correct files. No more digging through the website to fix your install. I might also have it ask what to do about any stock parts you overwrite (for those horrible people doing terrible things to C7's engines and stuff).
In the past, we were also using a third-party binary patching program that we crammed into the installation, which allows us to just send you the parts of KSP that have changed between versions. Executing this little program could be troublesome with some types of environments, and we could not directly change it due to licensing, on top of the juggling of the different editions of the program for each OS we support. To solve these problems, I've managed to find some code that replicates that program that we can legally include in our patcher, and we can modify it as we see fit. Since it's built-in, we don't have to worry as much about cross-platform support, and it's also a bit more memory-efficient. It's also free, which is always cool. I plan to instrument the heck out of the patcher and throw together some unit tests for it so we can be sure that it works properly before we dump it on your laps.
I'm not sure whether the patcher will be completed for 0.16 due to the sheer immensity of the problems it has manifested and the amount of code that I have to fix and refactor, plus the links with our web infrastructure that need some TLC. However, it is definitely my main project for the foreseeable future (unless the plugin stuff breaks or needs more features), and I'm making steady progress in getting it ready for primetime. Hopefully, it'll fit all your needs and won't be such a pain in the rear to use.
A screenie (already out of date, but shows the new UI in general):
More updates to come.