microsoft / VisualTrueType

Microsoft Visual TrueType(VTT) command line compile tool and Python interface.
MIT License
48 stars 16 forks source link

Consider open-sourcing VOLT as well #42

Open rimas-kudelis opened 1 month ago

rimas-kudelis commented 1 month ago

In addition to VTT, Microsoft also has a font development tool called VOLT (Visual OpenType Layout Tool). Its last release was in 2015, and for whatever reason it doesn't work on Linux+Wine after installation (the app starts, but fails to open fonts). Please consider open-sourcing VOLT as well.

I know this is not the right place to ask, but I couldn't find a more suitable place. Sorry.

HinTak commented 1 month ago

FWIW, I seems to remember on the MS font tool family was written in VB and requires the VB runtime, probably this one. You need to use winetricks to install the vb runtime.

https://appdb.winehq.org/objectManager.php?sClass=application&iId=11772 is massively outdated , and also filed by people who don't know wine well - wine 1.2-rc6 was released Jul 2010, 14 years ago. I just looked it up.

HinTak commented 1 month ago

That said, I am for VOLT being opened too.

rimas-kudelis commented 1 month ago

I've already installed the runtime which was necessary to launch VOLT, but it still fails to open a font with the same symptom as stated on Wine DB: image

Interestingly, nothing at all is reported to the terminal I start VOLT from. Only when I close it do I get a single output line from Wine, which I guess is irrelevant to the font opening issue:

0024:err:ole:CoReleaseMarshalData StdMarshal ReleaseMarshalData failed with error 0x8001011d

HinTak commented 1 month ago

Ole and MarshallData errors indicates that it is trying to talk to another (possibly genuine windows) component and getting unexpected answers, not surprisingly. Ole communications are asynchronous so any kind of delay can happen. I doubt it is associated with close. That said, this should file with wine's bugzilla or go to wine-devel mailing list - if nobody is aware there is a problem, there is nothing to fix... I have had VOLT installed in wine for years and I am not aware of any problems, though I don't actually use it the way font designer's do...

rimas-kudelis commented 1 month ago

I have had VOLT installed in wine for years and I am not aware of any problems, though I don't actually use it the way font designer's do...

Does it open fonts successfully for you?

HinTak commented 1 month ago

I have had VOLT installed in wine for years and I am not aware of any problems, though I don't actually use it the way font designer's do...

Does it open fonts successfully for you?

I haven't tried - haven't used wine for a while.

rimas-kudelis commented 1 month ago

Regarding the VB6 issue: there are currently at least two projects in the works, which both aim for 100% compatibility with existing VB6 code: twinBASIC and RAD Basic. Both of them also promise free compilers for x86 and paid ones for x64.

Thus, even VB6 code in this project might be useful/usable if open-sourced (plus, one can still download the last version of VB6 IDE from the Web). And even if that weren't the case, I would think that porting existing code to another language should be easier than writing it from scratch.

And even if I'm wrong about both things, I don't think it would hurt Microsoft to open this code. I can't see much to lose by doing so, other than (supposedly) a few hours spent.

HinTak commented 1 month ago

While I am all for VOLT being opened, "a few hours spent" is a very naive comment. FontVal took more than two years, from intensive discussion to code out in open. Before the "partially open" stage (private selective viewing), there were internal audits within Microsoft, much more than "a few hours" (both on the tech side and the legal/ip side) about what can go out and what must stay internal, and in the "private selective viewing" stage, there were substantial work in fixing up the code to make it buildable after the removal of "not opening" bits.

That said, I am for VOLT to be opened, and if it is too broken after the removal of certain bits, I would still like to see the broken pieces (in the open capacity, or just the "private selective viewing" - in the hope of some fix-ups before going fully public).

HinTak commented 1 month ago

FWIW, I seem to have an older VOLT under my wine installation from 2015/2016, but it is still 1.4.x (just as current, which was 2021). And I can confirm that the 2015 version of VOLT depends on VB6 runtime, and I have that under wine too. And I don't remember having any problem with it, though obviously I haven't used it much.

I don't currently have a wine runtime on my system (just running out of disk space, and took off stuff I don't use often enough). Otherwise I'd give it a try.

HinTak commented 1 month ago

And in fact I have VOLT 1.3 too.

paullinnerud commented 1 month ago

I don't personally have very much experience with VOLT but I do know that VOLT is written in VB but has dependencies on some native components that manage the font file format and compile the OTL data. I don't know if we will be ever able to open-source VOLT but if we did it would likely be reference only not accepting contributions or providing releases.

We are counting on other tools to support similar UI functionality. Apparently FontLab has ability to export/import VOLT projects making it easier to integrate and manage OTL tables created with VOLT.

HinTak commented 1 month ago

I'd definitely welcome VOLT (or part thereof) being opened.

Personally, I am not convinced that VOLT doesn't work with wine; I think it likely does, or can be made to - but then my knowledge of wine is perhaps a bit stronger than @rimas-kudelis 's : many years ago, I did contribute a few improvements to wine to make it work better for a few windows applications I was interested in; and the main reason why I don't currently have a wine runtime on my system, is that for more than a decade now, my own installation of wine have always carried three patches which makes three applications I care (cared!) about work better, but were considered "hacks/not pretty enough" and rejected by wine developers after a bit of discussion. I don't have the time to rebuild wine with those three "local hacks" (and two other minor things to make 5) lately.

A year ago when I last rebuilt wine (8.19, which is considerably more recent than 6.0 mentioned at the top; wine has a fortnightly snapshot release schedule - so I am about a 100 minor releases behind...), my own build differs from upstream by 5 patches, and it has been that 3 plus whatever I occasionally sent upstream for more than a decade.

rimas-kudelis commented 1 month ago

@paullinnerud, open-sourcing as a "code dump" of purely historic interest is sure fine as well.

Regarding native components: indeed, VOLT ships with three DLL files in addition to the executable, which could be problematic. These files are part ot TIDE – "Typography Integrated Development Environment" SDK, which Microsoft offered for licensing up until at least 2007, but which seems to have actually been made by BorWare AB, later Em2 Solutions AB. Em2 Solutions AB offered support for TIDE for a while, but appears to have actually been dormant for over a decade by now. I can't know what agreements Microsoft had with them, but I would speculate that if these included limitless enough redistribution/sublicensing rights, open-sourcing could fall well within those rights, being just a case of sublicensing.

By the way, TIDE itself seems really interesting, with its promise for "multiple tools to work on the same font file concurrently" and providing "the user of TIDE to switch between different font tools without necessarily saving the font file first, and thus provide a very seamless user experience." This bit sounds really awesome!

@HinTak, well, maybe your Wine patches made VOLT functional among other things, or maybe it is indeed functional with versions of Wine that are newer than mine, which I admit is indeed old(ish): I even had to modify Wine AppDB submission form to add my report about its (non-)working state). Usually, I would have upgraded my OS by now, but it's a bit... let's say "peculiar" with Pop!_OS this year.

HinTak commented 1 month ago

While I am for VOLT (if partly thereof) opened, a lot of this sounds overwhelmingly optimistic. There are both engineering months on removing /sanitize anything that's in the least doubt ("funny" comments, or just "too much history" disclosing personnel matters, who did what, and who took over from who, that shouldn't go outside) , and lawyers' months on working out and checking who owns what. What exactly is the benefits to Microsoft for allocating that engineer months and lawyers' months to do a code dump?

"Marketing speak" and "lawyer speak"...

I highly doubt "...included limitless enough redistribution/sublicensing rights...". Have you not read any licensing documents between commercial entities at all? In this case, my guess would be bundled redistribution, no modification, in binary form, only. I.e. Microsoft is not allowed to give away the source code, if they have it in source code form at all. I'd check the authenticode signature of the dlls first. If they had the original signature and MS did not sign/resign them, MS likely does not have their sources.

rimas-kudelis commented 1 month ago

What exactly is the benefits to Microsoft for allocating that engineer months and lawyers' months to do a code dump?

Financially, none, I guess, but morally, who knows?

However, FontVal, which you often bring up, was also a code dump. Its original repo has eight commits in total, and your fork was the actual active repo, to which they pointed from the README in the fifth commit already. Was there any benefit for MS in open-sourcing FontVal then?

I highly doubt "...included limitless enough redistribution/sublicensing rights...". Have you not read any licensing documents between commercial entities at all?

No, never. But what I said was preceded by the word "if", meaning I was just theorizing. My hunch was based on the fact that Microsoft, not BorWare, were the ones offering TIDE licenses, which made me think that maybe TIDE was commissioned by MS in the first place, and BorWare was a contractor who did the work . If that were the case, I would think it be perfectly safe to assume that MS has all rights necessary to do whatever they want with the code except for moral rights to its authorship (or whatever it's legally called, I hope you get the idea).

Again, all of that is just a possibility. I'm not saying that it's the truth or that I believe it to be the truth. No need to counter.

In this case, my guess would be bundled redistribution, no modification, in binary form, only. I.e. Microsoft is not allowed to give away the source code, if they have it in source code form at all.

That's a possibility as well.

I'd check the authenticode signature of the dlls first. If they had the original signature and MS did not sign/resign them, MS likely does not have their sources.

I don't know if this is what you mean, but Alt+Enter'ing all three DLLs shows that they were signed by Microsoft in 2015 with sha1 as hash algorithm. So, yes, Microsoft signed them last.

Anyway, I get what you're saying, but I don't get why you're trying so hard to convince me that this wishlist/suggestion item is not viable. Even if it isn't viable, it's not like I'm holding my breath waiting for a VOLT repo popping up here on GitHub any second now, but I don't get what's so wrong with just asking. Honestly, I probably wouldn't even use VOLT, but I can't say that for certain without seeing whether it's useful first, and right now it just doesn't work for me.

BTW, I'm really wondering what the best way is to ask Microsoft about open-sourcing things they no longer develop. I have another wishlist item in my head – Microsoft Keyboard Layout Creator – which could be both much more useful to the community and much less problematic to open-source than VOLT. It's not a font tool though, so there's even less reason for anyone on the typography team to bother. :(

HinTak commented 1 month ago

However, FontVal, which you often bring up, was also a code dump. Its original repo ...

The "original repo" was not original. It was the minimally fixed up version after a 3(?)-month outside effort of "selective private viewing/correction" and sent back for (legal) approval before it became "original". I had the original (broken) original, but even that was not original, it was in my hand after months or years of Microsoft's internal effort of removing /sanitising.

It was months and years of effort before it became "original".

The 2 or 3 years of effort (both inside Microsoft and ourside in a few 3rd parties) trying to open FontVal, was considered a disaster by some. Some (ex-)MS folks has gone as far as swearing that they won't ever go through the same process of trying to open-source stuff again.

Anyway, my opinion is less negative, but I am cautious, based on past experience.

rimas-kudelis commented 1 month ago

Okay, that sounds like a real PITA.

Anyway, between this request and #30, I would totally prioritize resolving the latter in one way or another.