Why no Mac / Apple support?

This article will dig into the reasons that currently result in AssistantComputerControl having no Mac version. This article is very much based on my own opinions (as the developer of the software).

So, why no Mac support?

(very) short explanation:
The reason is very simple; I don't have the time. I'm just a 19 year old guy working on this project alone, and making a Mac version would take a lot of time.

More detailed:
The entire software is coded in the language C#, which is a programming language made by Microsoft specifically to make Windows applications. We are slowly getting better C# (.NET) support on Mac computers, but we're just far from the stage where I can press a button and say "build for Mac". If a Mac version was to be made right now, it would most likely have to be a 100% new project where little to none of the existing code could be reused.

I have looked into possible solutions, and even took a brief Swift course (the programming language for Mac applications). But me stating the development of a Mac version would mean my attion would be split between the Windows and Mac version. Updates would take double the time to get out (if not more), there wouldn't just be bugs in one version but two, meaning a lot more for me to troubleshoot and fix.

ACC already takes up a big chunk of my life - with up to multiple hours a day of helping people in the Discord server, fixing bugs in the software and updating it, going for a Mac release would take out fun and add more stress.

The last thing I want is for my fun hobby project to become "work" and something I feel like I have to do. I enjoy making this software for all of you, and it's truly joyful to see the software being used and enjoyed by tens of thousands of people! But I feel like I have the right to be a bit selfish here and think about the huge workload a Mac version would be for me.

Deeper technical reasons

I see many people who say I should just have made the software in Java, as it's better for cross-platform, but the cold hard truth is; I started the development early 2018 to make this software for myself. I usually code C# and I don't own a Mac computer, so logically I took the software in the direction that would be easiest for me. Now that the software is used by thousands and thousands of people, Mac support would be great, but the issue that this is meerely a "small" hobby project is still putting a stop to it.

Even with a Java version of the software (which won't happen), it would be impossible not having to re-code most of the software anyway, since the software relies heavily on files, processes and other very Windows-specific functions. Since ACC works by reading files, the entire file watcher system as well as the many hundreds lines of code that then validates the file, would have to be re-coded - Java or not. The same goes for most of the actions (if not all). Shutting down a computer can't be done the same way on a Windows and a Mac machine - this goes for locking, setting the volume, logging out and many more as well. I have used Windows computers since I was 5, and I know them pretty well by now - I can't say the same for MacOS. Therefore the learning-curve would also slow down the development, and mean me abandonning the Windows version for some time, while I spend all the time I would usually spend fixing bugs or developing new features learning a new programming language as well as a whole new OS that I'm not super familiare with.

"So, why don't you get more people on the project? Possibly a Mac-version-guy"
The reason I haven't actively looked for a "Mac-version-guy" who could make the Mac version while I keep focusing on the Windows version, is that I would require this person to share the same love for the project as I have. That's an unreasonable ask, as this is my "baby", and finding someone that reliably would "translate" my code into "Mac-language" would require a lot of time whenever I am ready for it. As this is just a hobby project I work on it whenever want to and have the time. I enjoy the freedom of being able to take a "chrunch" on a saturday, working 8 hours on the software and getting a new version released. That wouldn't be possible if I had to wait for the Mac version to be ready, meaning double the testing required, and double the amount of things that can go wrong.

I'm very comfortable with the current scale of the project. It's open source and everyone is welcome to create pull requests on GitHub and help out with the code, as long as I in the end of the day control what gets in the software. I feel responsible for the (at time of writing this) almost 30.000 users, who don't just place their trust in some open source software from the internet, but place their trust in me. If that control isn't there, this software could do serious damage to your computers.

I wrote this article as "why is there no Mac version?" is one of the questions I get asked the most, and if you made it all the way to the end I'm impressed!
Hope this shines some light on my decisions - I want to be as transparent as possible when it comes to this software, as it's not just "my software", it's yours too.