Morgan Stanley at the Open Source in Finance Forum NY’22

As you saw in the previous post, Open Source in Finance Forum NY’22 | Dotneteers.net, I was at the Open Source Finance Forum, representing the Open Source Readiness and leading the discussion on the Open Source Program Office’s private session. But I wasn’t the only person present at the event from Morgan Stanley – we have had a wide range of presence from our side this time:

My manager, Dov Katz, was part of the opening Keynote:

Open Source in Finance Forum – Opening Remarks – Gabriele Columbro, with Dov Katz & Rob Moffatt

My coworkers, Stephen Goldbaum and Rita Chaturvedi leading multiple discussions at the event:

The Current State of DEI and Path Forward – Jevon Beckles, Chitra Hota, Nick Fuller, Rita Chaturvedi
Exploring Open Reg Tech with the LCR – Stephen Goldbaum
Modernize Regulatory Reporting: Get Ready for T+1 Settlement
Morphir Integration with Scala – Damian Reeves, Stephen Goldbaum

So, I am looking forward to 2023’s OSFF events, hopefully being able to present once again on them with some fun topics πŸ™‚

Open Source in Finance Forum NY’22

After presenting at the 2021 version of the Forum, it was inevitable that I want to be back – it was an energizing experience and wanted to feel it once again! πŸ™‚

So, I submitted a topic (open source standardizing for the metaverse), and waited for the green light – which never came; this was a topic seemingly too early to be discussed on such forums – I am a firm believer in mixed reality and open source, so it is just the question of time to have interest for such πŸ™‚

But I had a way back – for the first time ever, OSFF matured enough that to have next to the multiple tracks with amazing sessions, they added an EXPO!

11 of FINOS’s own projects, the Common Domain Model, the Compliance Horizon Scanning, the DevOps Automation, FDC3, Financial Objects, KDB+, Morphir, Open Source Maturity Model, Symphony Workflow Developer Kit, Timebase and the Open Source Readiness SIG were joined by the sponsor’s booths, resulting in a huge influx of people between the sessions and during the longer breaks to check out what we can show – I took this picture before the first big hit of people arrived, because after that I never had the time to take another πŸ™‚ :

So, how this is relevant to me? Because I happen to be the co-chair the Open Source Readiness SIG, along with the amazing Elspeth Minty of RBC, Care Delia of Red Hat and Brittany Istenes of Fannie Mae, with the huge help of Rob Moffat, Jim St Clair and the energy bomb James McLeod. Even more – as the co-hair, I got to lead the FINOS Banks Only OSPO Roundtable. As the event is run according to Chatham rules, I cannot tell much more details about the roundtable beside the anonymized meeting notes at GitHub.

For the Win – with Weight Loss Advertising?

As I mentioned in the year start post, I’ll avoid doing weight loss advertising. Still, I start the year with a memento for myself on the topic πŸ˜€

So, look at these two pictures – both of them are me, one year apart, at the beginning of the pandemic. I was one of the few who did a weight loss then and there.

So, what’s the situation now? Due to many things that happened between then and now, I managed to sadly gain most of the kilos back πŸ™ But, not further!

With the help of both the Les Mills Facebook group’s motivation, the on-demand app and the new Oculus app, I plan to become the better me, once again πŸ™‚

New year – new schedule!

Ok, this blog recently did not receive much of love – ok, self-honesty, none -, but will try to change this for 2023 at least somewhat up πŸ™‚ As usual, the number of ideas overwhelm the number of minutes. So, what I plan to write about? Weight loss advertising? πŸ˜€ Most probably not. Topics about the metaverse, open source, software, architecture, software architecture, conferences, and more is hoped to show up here from time to time πŸ™‚

Another Session on “Why Going Open Source?” – Peter Smulovics, Morgan Stanley

Back in November, I had the luck and opportunity to get back to some level of normalcy for just a day – I got invited to present at Linux Foundation’s Open Source Strategy Forum about, wait for it, Open Source. What was it about? Here is the blurb:

It is always appropriate to challenge the need for a project to be open source, given the lack of foreknowledge of anyone else having a desire to use a platform versus the other possible options or their own proprietary one. While companies have the desire and the capability to support this if it comes to be, it’s not the primary motivation. With a foundational architectural aspiration of a pluggable platform, it’s important for it to be possible to selectively choose components from open source and if needed, from commercial vendors that make sense given your requirements. There is no reason for a company to own every line of code or to find something available that tries to meet all the needs. Vendors will always yearn to get their foot in the door and being open source accelerates and simplifies partnerships through increased visibility and collaboration without the red/yellow tape or proprietary integrations or NDAs. We have already seen this model work successfully with our projects as ongoing collaborative efforts with vendors to use and extend simply for their own (sales) demos to others.

So, without further ado, here is the recording:

Another Session on “Why Going Open Source?” – Peter Smulovics, Morgan Stanley

The success of this presentation lead to another small success – more about that later on πŸ™‚

Arriving to… Crossroads

And another project just got opensourced by my team, this being called ‘Crossroads‘. It is a small nifty tool that enables to do something similar as self contained .NET Core applications are making possible – just this supporting other technologies than .NET Core, like Node.js applications or applications using more than one technology.

Crossroads itself is a .NET Core commandline tool, a kind of packager for developers. As mentioned above, this is a generic solution to host any application within Crossroads package executable and further launches application’s executable. Developers will specify arguments such as name, icon, version etc. for branding during the package generation. The specified argument name will be used to rebrand the internal application as needed.

So, in a nutshell, Crossroads allows you to:

  • create an executable package
  • customize your package with a name, icon, version and other attributes
  • run applications through crossroads generated package

Generating… non-documentation

In the last few days I got involved in an interesting question – if you to have an internal conference with 250 presenters, multiple timeslots, live sessions, recordings, materials and more – and you need to create a website for it, what would you do?

One of the obvious choices is to write a custom app for it, has a database (document db or graph db or something similar NOSQL), a 2/3 tier architecture, etc. Or… if I’m anyway trying to understand the options around document generation, I could generate the website from some lousy excel sheets and upload to a CMS that would handle commenting and links and similar.

So I did the latter, using a little bit of XLSX parsing, use of good old Apache (N)Velocity (currently maintained by the Castle team), a little bit of window dressing and figuring out some stupid limitations around transposing arrays with double nested loops using the Velocity language, and:

Blurred image of a generated project page

Please, let me introduce

Another day – another open source project from my team, this time a small nifty tool called β€œplease”, akin something that already been mentioned in one of the ADRs (ADR003):

- We would depend on using an eng/Dependencies.props file instead of having the versions of Nuget files
repeatedly entered into the csproj files
- We would use automated tooling to achieve the maintenance of Dependencies.props file

So, in the end, not only these, but a bunch of other small functionality has been added to this swiss knife of a tool that you can just ask to do stuff, nicely πŸ™‚

It can easily:

  • Consolidate nuget packages across a solution, or only a subset of them
  • Keep package versions in a central props file and maintain that file
  • Move and rename projects
  • Clean up in case you manually moved and renamed
  • Clean up <Compile Remove="..." /> items, with or without globbing
  • To find stray projects
  • To remove ‘junk’ from solution directory
  • To change the PATH variable (useful when working with dotnet tools)
  • etc.

Dr Jekyll & …

Every good project need good documentation, and every good documentation needs a good engine to create and maintain it with.

So, am I going to chose Jekyll for maintaining the (currently mostly empty) ComposeUI documentation site | A WPF .NET Core based, WebView2 using UI Container for hybrid web-desktop applications (morganstanley.com) website? Most likely not. We currently have quite a few contenders for documentation generators – so no, most likely it is not going to be Jekyll our final choice (although nice to have a native support from gh-pages for it for sure, and gives an opportunity excuse to learn a new language and technology, Ruby and the Gems). Contenders are now: Jekyll, Hugo, Docosaurus, Docute, Docsify, Sphinx, Doxygen, etc. Each have their pros and cons, and it is not necessarily that we would only chose one of them. Also, whenever possible, we would aim to generate as much of it as possible – not due lazyness, rather to make sure it is always updated whenever we touch the source code.

So do bear with us, soon we would fill the documentation site with some basic (Jekyll) content before finding out our choice of documentation generator(s).

Why choosing .NET for ComposeUI?

If you do have a working application using Winforms. WPF or similar technologies, your team won’t receive a tangible business benefit from rewriting their existing codebase to web technologies – versus remaining focused on features to drive revenue. .NET on the desktop and WPF specifically looked to be abandoned leaving people in an undesirable state with UWP and Windows 10. The rejuvenated commitment, open sourcing, and full support from Microsoft for WPF in .NET 3, .NET 5 and upcoming 6 have lowered the pressing strategic need to migrate platforms unless appropriate.

To provide features and support for existing and new .NET applications, while simultaneously providing a better and integrated solution for existing and new web applications, the best choice is to remain with .NET. While we did consider to fork Electron or to extend a vendor solution to provide the .NET hosting we need, the amount of work, the resistance of open source maintainers to contributions, and the lack of innersource access make this a showstopper. Disparate window and application interoperability based on messaging alone would be a significant step back in our desktop platform.

.NET (Core) is an open source, multi-platform framework. For Microsoft, it is the future – with the new unified platform pieces (Project Reunion, WinUI 3, MAUI, etc) announced at different conferences, .NET 5 did replace the aging full .NET framework. When it comes to actual business logic, .NET can be used to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS, WebAssembly and many more. The new .NET also solves the standalone side-by-side installation problems that were rooted in Microsoft binding the full .NET Framework to the OS – different versions of .NET Core for different applications can now be run on the same computer. It also provides high performance capabilities throughout the full framework with new language features like Span as well as optimizations within base libraries including but not limiting to Collections, Math, Regex, Strings and File Handling. Nevertheless, should not forget – it is truly open source, Microsoft already merged and released multiple changes that originated from my team, to support custom filesystems, Kerberos edge cases, database drivers, performance fixes, and many more.

Based on the requirements we have, and the direction from Microsoft, we are choosing .NET (core) WPF for now. This decision ties the (pluggable) shell component to Windows only. Of interest is the progress around Windows Virtual Desktop 2.0 (was just renamed to Azure Virtual Desktop). While it remains to be seen whether it is a strategic option, the lock-in has potential to be mitigated. AVD enables accessing cloud backed desktop UIs on non-Windows devices, including support for touch and pen for iOS and Android devices. To support in-house, there has been discussions of making AVD available for on premise (Azure Stack based) solutions as well.