Ditching .NET and finding faith again after 10 years!
Tags: showdev, dotnet, csharp, javascript
Published: 2022-12-13 14:05:43

---
title: Ditching .NET and finding faith again after 10 years!
published: true
description: Case study of developing an open-source File Manager app in .NET MAUI
tags: showdev, dotnet, csharp, javascript
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w800ugqgmweza18mc0f0.png
---


**TL;DR** *.NET MAUI* is a dope multiplatform stack and may well be the perfect candidate for your next app. Don’t dismiss it because it’s *“Made in Microsoft.”* You can check out [Fx Files](https://github.com/functionland/fx-files) as a testimonial to its interop with JS, and the general new .NET direction.

**My way or the highway!** That's the prevalent mantra in Big Tech. Even from the grave, Steve Jobs’s guideline of *“Be Incompatible!”* is haunting us to this day — when we have a guest over and they can’t charge their phone with our cable! Worse yet, there’s always a **“cult”** of followers, belittling others who don’t fall in line under the same banner, constantly pointing out tech flaws from the other side, and they are so susceptible to confirmation bias from their peers. The same toxic pattern can sometimes be found in developer circles too.

Microsoft was no different under Steve Balmer (nor Gates). I should know because I was a die-hard _**Microsheep**_ up until 2012 🙈. You had the *Microsoft Universe* to drown in, and to be fair it was quite compelling! Don’t you pity those poor backwards fellas who have to open a terminal to do the simplest things? Need an IDE? Behold the mighty *Visual Studio*! Need UI? Here you have *WPF*, putting the frontier of UX dev at your fingertips! And it’s all drag and drop, with seamless codegen that you can witness live! Also bear in mind, *REAL* software runs exclusively on Windows, do you know of a single enterprise app that’s elsewhere?

Time would prove all wrong, but back then these arguments seemed sound.

> Microsoft is a fear factory. Oh, your team is still not Agile? You have to use our software suite that gives MANAGEMENT measurable VISIBILITY on what happens in your org!

During my studies, classmates were doing their homework in spaghetti C, while I swaggered by and showed off my shiny C# class diagram and glorious WinForms UI! I had a date with destiny though. The first job I landed was at a research lab in Hong Kong. Had a 2-week deadline to deliver a library written in Python, running on Linux, neither of which I’d ever touched! No longer did I have the luxury of being like “Pff, this weird shitty open-source stuff again!” The date was set and I needed to push my code into this other weird thing: GitHub. Thus began my journey. In the decade since, I delved deep into all that open-source stuff, convinced every employer to [publish pieces of my work](https://www.npmjs.com/~keyvan-m-sadeghi) as open-source, ditched languages and frameworks left and right, and learned to be loyal to nothing if not innovation!

Given this history, I was highly skeptical when my friend [mehrandvd](https://dev.to/mehrandvd) pitched me .NET for development of our next app. We had, one might say, *unrealistic* expectations: a **File Manager** that runs on Android, iOS, Windows and macOS. It should handle local file operations like copy, rename, etc., as well as utilities like thumbnails, zip extraction and in-app file viewers. The same UI, we decided, should have another tab where you browse your *“remote files.”* These could be on any cloud provider, AWS S3 and such, or weirder places like [IPFS](https://ipfs.tech/). I.e. being *“Backend Agnostic.”* A developer implements an interface, submits the pull request, and the provider shows up as another configurable “source” for your files. We also wanted interoperability between one’s local and remote files, things like syncing a local folder on a remote provider.

Craziest of all, we wanted all these developed in just 3 months!

And I kid you not, Mehran and the team delivered! They even managed to squeeze in extra features like code highlighting! Here’s a peek:

{% youtube cdifshBgIcU %}

Project on GitHub:
https://github.com/functionland/fx-files

And here’s the app on Google Play and Microsoft Store:

[![Fx Files on Google Play](https://raw.githubusercontent.com/functionland/fx-files/main/docs/images/badge-play-store.png 'Fx Files on Google Play')](https://play.google.com/store/apps/details?id=land.fx.files)

[![Fx Files on Microsoft Store](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Get_it_from_Microsoft_Badge.svg/1024px-Get_it_from_Microsoft_Badge.svg.png 'Fx Files on Microsoft Store')](https://apps.microsoft.com/store/detail/fx-files/9NXL9KB8FBQQ)

(iOS, Mac and remote file integration in an upcoming update.)

MAUI’s appeal is abstracting away capabilities of different platforms under the same API. For our use case, as an example, we needed to talk with four different file systems. MAUI offers these as a unified [Storage API](https://docs.microsoft.com/en-us/dotnet/maui/platform-integration/#storage). Also in edge cases that require you to write platform-specific code, e.g. performance optimization for infinity scroll, you have the freedom to do so.

Another aspect that surprised me was the way Microsoft has started to play fair with others. MAUI code can work in tandem with other languages and frameworks in your stack. This was a hard requirement for us, since our IPFS integration is a polyglot of Go, Rust, JavaScript and other upstream 🐉s I’m not aware of. This is so unlike the Microsoft I knew! After all, they were once famous for their [EEE strategy](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish)!

A few more data points like MAUI and I may revert to Microsoft believer again! Pivoting the corporate culture at this scale is nothing short of astonishing. I salute Satya Nadella and everyone involved in this shift. Eager to see more!

Your feedback is much appreciated as always. Hope to get acquainted with you in the comments section! ❤️