# General

## What are the implications of alpha versions?

[Alpha software ](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)is generally considered to be a feature incomplete, possibly unstable version of a software product.

For PresetMagician, this means:

* The [release cycle](https://en.wikipedia.org/wiki/Software_release_life_cycle) between versions is pretty short (usually between 2 and 4 weeks). Intermediate versions which fix critical bugs are usually released on short notice.
* A new version could introduce new bugs, but also usually adds several new features
* PresetMagician could unexpectedly crash or misbehave, or not work at all
* Due to me (Felicia) being the only developer, I currently do not cycle between alpha and beta versions; PresetMagician will enter the beta stage when I'm satisfied with the feature set

{% hint style="danger" %}
Note that you don't get a guarantee that PresetMagician works for you if you buy a PresetMagician license while it's in the alpha stage. The pre-sale  license was introduced to support development.

I try my best to support PresetMagician even during the alpha development stage, so if you encounter a problem, please [report it](../manual/requesting-support). I usually respond within 1-2 days.
{% endhint %}

## Development Philosophy

The development philosophy for PresetMagician can be described in short as: Implement features that are useful, cool and ignore profit.

PresetMagician is developed by Felicia Hummel (that's me). Being only a single developer comes with the huge advantage that I can react quickly to feature requests and bug reports. I also don't submit to the common business practice "Only implement features which generates profit". When I develop software, I do so with passion and I always keep my user base in mind.

If you're wondering what happens if I abandon PresetMagician for whichever reason: I will make the full source code of PresetMagician open source, so don't be anxious about it.

## Mac OS X Support

{% hint style="info" %}
Summary: Mac OS X support might come at some point, but currently it's not clear if and when. You can track the [progress of PresetMagician OS X](http://presetmagician.com/help/ISSUETRACKER_OSX) on the PresetMagician issue tracker. Make sure you subscribe to the feature request, so you automatically get updates about the development process!
{% endhint %}

### Introduction and History

PresetMagician was born out of a personal need. I used tools which made development easy for me. At that time, I didn't think about cross-platform support or even providing PresetMagician to the public, let alone commercial distribution.

I built PresetMagician primarily upon the following technologies and tools:

* [C#](https://en.wikipedia.org/wiki/C_Sharp_\(programming_language\)), [.NET Framework](https://en.wikipedia.org/wiki/.NET_Framework) and [Windows Presentation Foundation](https://en.wikipedia.org/wiki/Windows_Presentation_Foundation)
* [VST.net](https://github.com/obiwanjacobi/vst.net)
* [Orchestra](https://github.com/WildGums/Orchestra/) for the graphical user interface

Without these technologies/tools, it wouldn't have been possible to develop PresetMagician to the project that it is today. Development only started in October 2018, and I do not regret the choice of tools. Especially the C# language made development extremely easy and quick, and I have to thank Microsoft for making C# freely available as well as being able to use [Visual Studio Community Edition](https://visualstudio.microsoft.com/vs/community/) free of charge. Yes, the community edition may be used even for commercial projects if you're a single developer (like I am).

However, this means that a full port to Mac OS X is not possible, because only a subset of the .NET Framework is available on Mac OS X, and Windows Presentation Foundation (which is the base for Orchestra) is currently not present on Mac OS X at all and most likely never will.

### What are the options?

The options for creating cross-platform applications are limited. Some of these options are:

* Using a cross-platform toolkit like [Qt](https://en.wikipedia.org/wiki/Qt_\(software\)). This, however, would require a complete [rewrite from scratch](https://en.wikipedia.org/wiki/Rewrite_\(programming\)) and using [C++](https://en.wikipedia.org/wiki/C%2B%2B) as programming language which is way more complex to write software in.\
  \
  At the time I'm writing this FAQ entry, less than 4 months have passed since I started development and PresetMagician already has an impressive set of features and plugin support given the very short amount of development time. Also note that being a [PHP web developer](https://en.wikipedia.org/wiki/PHP) for more than 15 years, I did not know anything about C#, let alone how VST works on a technical level or about developing desktop applications.\
  \
  If a single developer (like me) had to rewrite the existing feature set of PresetMagician, I would estimate that this takes at least one year of effort, plus any additional learning effort if the developer doesn't know C++. Also PresetMagician doesn't need high performance for it's operation, in contrary to VST plugins which are often written in C++ to optimize performance.\

* Re-implement PresetMagician using [Java ](https://en.wikipedia.org/wiki/Java_\(programming_language\))(don't confuse it with JavaScript!) and a Java VST host implementation like [jVstHost](https://github.com/mhroth/jvsthost). The way Java applications are developed is way less complex than using C++, but still way more complex than using C#.\

* Re-implement PresetMagician for Mac OS X using [Cocoa](https://en.wikipedia.org/wiki/Cocoa_\(API\)) and [Objective-C](https://en.wikipedia.org/wiki/Objective-C) / [Swift](https://en.wikipedia.org/wiki/Swift_\(programming_language\)). Having only limited experience with Swift, this would not only mean to learn yet another programming language, but also maintaining two separate [codebases](https://en.wikipedia.org/wiki/Codebase), resulting in a huge amount of initial work, at least the same amount of work I already put into PresetMagician for Windows. Also, each feature would need to be implemented twice. And I really don't want to think about the bug fixing process...

For me being a single developer, the options listed above are out of the question.

### Outlook

In my first few forum posts, I initially said that there most likely wouldn't be a Mac OS X version of PresetMagician. However, I do like a challenge and one of my philosophy of life is: "Find the solution to that problem!". The problem solving approach I typically use is the [divide-and-conquer](https://en.wikipedia.org/wiki/Divide-and-conquer_algorithm) approach: Breaking down a large, complex problem into smaller, solvable problems.

The prerequisites for PresetMagician on Mac OS X are:

* Stick with C# as programming language to avoid rewriting PresetMagician from scratch, and being able to share code between both platforms. Using [Xamarin.Mac](https://en.wikipedia.org/wiki/Xamarin#Xamarin.Mac), it's possible to develop native Mac OS X applications using C#.
* Acquiring Mac hardware capable of running the latest Mac OS X version. I know that it's possible to run OS X inside a [virtual machine](https://en.wikipedia.org/wiki/Virtual_machine), but the legal status of doing so is questionable at best. Providing PresetMagician as commercial software means that I'm not only responsible to avoid legal problems, but also to the PresetMagician user base.

The preliminary roadmap for PresetMagician on OS X is:

* Porting VST.net to [.NET Core](https://en.wikipedia.org/wiki/.NET_Core) and porting the C++ portion of VST.net to OS X
* [Refactoring](https://en.wikipedia.org/wiki/Code_refactoring) the code of PresetMagician so that most of the code can run using .NET Core. This means that only the [GUI ](https://en.wikipedia.org/wiki/Graphical_user_interface)code of PresetMagician will remain platform-specific
* Implement the GUI for PresetMagician Mac OS X using Xamarin.Mac

Even though the list is pretty short, it is still a long way for PresetMagician OS X. You can track the [progress of PresetMagician OS X](http://presetmagician.com/help/ISSUETRACKER_OSX) on the PresetMagician issue tracker. Make sure you subscribe to the feature request, so you get updates!



