I have finalized the negotiation with the professor I preferred to cooperate with and she agreed to green-light my proposal as my graduation thesis project, Subtitler Pro, the computer assisted translation software based on an old project of mine called DST which was built for the translation community I still am part of, and my pending patent CN 201410215960.X, with an optional special request that I can make the final product an app that she can use. This special request made my life a little bit more difficult.
Long sentences and crazy brackets ahead. Read with care and maybe a piece of paper to assist parsing and understanding.
My original plan was writing this plan in Objective-C, leveraging the frameworks and foundations I have already laid down in the years, including a library built on top of a Foundation class called NSScanner that can be used to build an efficient yet powerful lexical analyser (for handling the various subtitle formats that can be encountered in the workflow of a TV show translating community,) an existing natural language analyser that existed in Apple’s CoreFoundation that was intended to be used in the automatic detection of certain information from a stream of plain text, an easy-to-code multimedia framework which kept Apple afloat for all the years before iPhone was released and made iPods amazing, and my membership of iOS and OS X Developer Program which gave me an easy access to some market that is called App Store.
I looked into the possibilities of using a shared core coding written in pure C and design separate user interfaces around it, but it turned out to be difficult for Windows platform: P/Invoke is just too complicated to use and too fragile to be practical, especially when the C side of things are compiled using some version of GCC (or clang/LLVM) instead of MSVC, neither MSVC nor C++/IL will parse my core coding as it will surely got littered with C99 (even C11) syntax and functionalities that is not available on Windows platform’s native compiler MSVC (which is notorious being very ignorant of the international standards of programming languages, no matter it is C or C++,) and I cannot compromise the core programming into using only C89 which will cause loss of productivity on other platforms, namely OS X and Linux which are the two OS I work on. C++ is also not an option as it is a language I have sworn never to use due to its excessive complexity and it will (and did) cause me to lose hair handling it.
My old way of designing that subtitle handling tool seemed wrong in each and every aspect. In the old DST project which was suitable for Windows platform (that I am no longer working on) and was written in Visual Basic (which is considered a beginner’s language although I did constructed some fairly elaborate and complicated projects with it, including a very early prototype of what we know as cloud computing now) when I was in highschool, I used an ad hoc pattern matching mechanism to parse the subtitle format files (which is definitely not a good idea as my curriculum did include Principles of Compilers, which introduced a better way of constructing the parsers that is more organized and structured) and code generation code for emitting subtitle files (which is not a good idea as well, as object serialization and deserialization is taught in Object-Oriented Programming lesson, and I do have a fairly well-designed object model for subtitle files,) the user experience is fragmented as it looked like a collection of apps packed into one binary bundle and are used separately, let alone it was even not feature complete although it did automate most of the subtitle pre-translation preparing procedure and post-translation processing. Also the hard dubbing automation tool should also be combined into this tool.
The new design should cover all existing features as well as provide an actual interface for translators, a unified user experience that can perform all operations in one subtitle editing window, a better subtitle file cutting tool as experiences told me that by-line cutting is way less efficient than by-scene cutting in the actually translating part as it breaks the scenes and causes glitches in the results when the translation is done in a team as different member have different way of translating and a broken scene reduces the quality the translator grasps the idea of the scene, a machine-enforced automated QA system that can guarantee certain aspects of the translation and allow a better result quality, a better material distribution and collection system that allows easier team cooperation, organizing and management, a distributed subtitle versioning system that allows the proofreader to see the entire history of translating and have a better chance in finding issues, the integrated dubbing automation system that is also detachable as a bot that can be left on in the background or controlled over network (for the ones that have a rendering farm.)
If I were to program the entire thing under Windows, I would have to use a third-party NLA library that may require months of model training, a wheel reinvention to introduce certain Cocoa features I was working on top of to the .Net ecosystem as well as port my existing frameworks and foundations over (which itself is not easy as well) and also leave that vast market of App Store behind.
If you have any idea on how to make such a big project in a portable fashion, please tell me. Or, maybe I will have to stick to OS X as it is what I have.