Thursday, 08 November 2012 13:42
This is an important message to all SharpDX users,
I have been working for two years now on SharpDX. The project grown from a promising prototype to a full-featured DirectX layer for .NET, supporting latest Windows RT and Windows Phone 8 OS.
The work accomplished so far has been consuming my whole spare time for the past two years, ranging from 2 to 5 hours per day, and with a family and a job, that's quite a hard and exhausting task to handle.
When I first started SharpDX, my initial goal was to develop a Direct3D11 layer in order to enjoy programming some artistic demo with it, mainly for the underground subculture called the "demoscene". But the project was so successful with many users asking me to introduce new features, bug fix...etc that I have been working really hard to enhance SharpDX, adding new features, provide bug support, build a full web site, run SharpDX forum, respond to the various questions all around the net about the usage...etc but so far, I have not been able to enjoy it in my spare time to develop some demos with it (luckly I have been able to enjoy it at my work because we are using it in our Paradox
With the latest version of SharpDX for Windows Phone 8, I have seen lots of new users, some of them are coming from XNA, some of them are totally new to Direct3D/Direct2D stuff...etc registering and asking for guidance, usage, enhancement...etc. With Microsoft forcing developers to go to C++ to access DirectX layers on latest OS, SharpDX is saving lots of time for users that want to program with their favorite .NET environment. Lots of companies have been using SharpDX to ship some games and this is great.
But still, from my little perspective, the current amount of work to manage this whole project is exceeding by far what I can afford for a spare time project. Even if SharpDX is successfully used in several commercial projects and is production ready, It would still require 1-3 people working full-time for several months to provide all missing features, write documentation, run the forum, respond to all questions, provide paid support...etc. But SharpDX is just a backend project, so it means that there is no business interest for companies to make this kind of investment. So the only way to manage it is to let a community participate and improve the project, and this is all new to me.
The result of my thoughts is that SharpDX is going to try to migrate from a one-man-project to a common-community-project, where my own place would be to keep a coherent direction of this project, but not to manage every single details of it. The impact of this mutation is:
- There is a new SharpDX github code repository more social friendly accessible at https://github.com/sharpdx/SharpDX to allow users to fork and contribute to SharpDX. This repository is synchronized with the existing google code, but I will integrate progressively pull request from users from there. Concerning code contribution from community on GitHub, I will post some instructions in a separate post.
- My personnal investement in the SharpDX forum is going to be reduced dramatically. I will not respond anymore to each question, so I suggest people that have a question concerning DirectX usage to ask their questions either to http://www.gamedev.net/forum/10-directx-and-xna/ or the various Microsoft forums. I will see if SharpDX forum will be invested by some community users, but if not, I will have probably to close it. The paid support is going to be also very limited (unless the offer is worth my spare time).
Also, I have been quite surprised to learn from some SharpDX users that had some performance problem using SharpDX (mostly with latest ARM HW) that they were told by Microsoft Support that as SharpDX is not supported by them, and SharpDX is a .NET project (and not a "Gogo-Native uber-efficient C++ project"), Microsoft Support is suggesting them to go to C++ in order to resolve all their performance problem. So let me clarify this once:
- It is unlikely that SharpDX will cause you a performance problem compare to C++ code (unless there is a bug in SharpDX - but for an automatic layer like SharpDX, it is very limiited to happen, or you are trying to perform heavy calculation in C#). But the problem is more certainly:
- 1) A problem of DirectX usage API: the low level nature of the API requires *LOTS* of careful knowledge to manage it correctly. You would need the same knowledge to manage it from C++.
- 2) For latest ARM platform that seems to produce some performance problems, well, I don't know if the JIT/CLR there is efficient. So if you have a performance problem, I can only suggest you to test it purely in C++, then to test it from a managed language using a C++ WinRT component (by reusing the code you did in C++), and finally test it with full SharpDX, using exactly the same code. If your project is running fine in pure C++ but not from a WinRT/Pure SharpDX project, It is more likely to be a CLR/JIT problem. If this is running fine for both C++ and WinRT, then this is a problem in SharpDX. As I don't own a Surface tablet nor a WP8 phone, and I won't be able to get one anytime soon because the Japan market seems to be completely closed to latest Windows stuff, I'm not able to provide any kind of support for these ARM platforms.
This is not a good news for lots of users that were seeking for some help here on SharpDX forum and I really apologize for the inconvenience.
From a personal perspective, I will of course keep manage the SharpDX project, but the frequency of my contributions and my investment for the support will be revised.
I hope that a community will be able to emerge from this transition and to greatly contribute to the SharpDX project!
Alexandre Mutel - aka xoofx