The following guest post is by Bob Summerwill, who is the owner of Kitsilano Software.
UPDATE: MonoTizen production is underway! Read all about it!
Kitsilano Software are bringing C# to Tizen, in the form of the MonoTizen project.
The MonoTizen project aims to bring the delight of C# development to Tizen, with the long-term aim of enabling anybody with a Tizen device to enter the world of mobile development (self-hosting the MonoDevelop IDE on device). In the shorter term, we want anybody with a PC or Mac to be able to develop for Tizen in C#.
Much of the initial promise of Tizen lies in developing markets. That focus doesn’t just apply to the target customer base – it applies to the developer base too.
iPhone development is the worst example of this developed-world-oriented pricing model. To develop an iPhone app you need a Mac. The cheapest Mac is the Mac Mini, which starts at $599. The cheapest MacBook is the MacBook Air, starting at $899. You also need to pay Apple $99 each year to join the iOS Developer Program to be able to publish to the App Store.
These basic costs are present even for developers to build non-commercial applications for their own pleasure and learning, if they want to get them on-device. With these existing barriers-to-entry, paying $300 for a Xamarin.iOS license is entirely reasonable, considering the great productivity gain you get from leaving Objective-C behind.
Sadly, though, these combined costs effectively put ALL forms of iPhone development out of reach for most developers around the world. Just having to buy a Mac rules out most of the world.
The situation on Android is significantly better. Android supports PC, Mac or Linux development hosts, so you can work with any old PC hardware running Linux. There is a one-time registration fee of $25 for access to Google Play. You are still going to pay $300 for a Xamarin.Android Indie license if you want to use C# on Android, though, which still puts this “route” out of reach for many developers around the world. Developing on Android in Java is pretty accessible, though.
Android isn’t a truly open-source project, which puts many people off. Google are in full control of Android, and only release source code when they release new versions. There is no way to “get inside the machine”. That is not the case for Tizen, which is developed in the open by a broad consortium, though with much of the financial support coming from Samsung and Intel.
MonoTizen will be supported for Mac OS X and Windows host machines, but we anticipate Linux being the lead host platform, again due to cost constraints in developing nations. Longer-term, we want to support self-hosting on Tizen devices.
Why are Tizen and MonoTizen any different than the status quo?
Tizen is essentially just another flavor of Linux. It just happens to be targeted at devices rather than at personal computers and servers. That means we can leverage over 20 years of pre-existing software and development tools, which are almost exclusively free of cost and free or open-source licensed.
When it comes to C#, it means that the Mono Runtime almost works as-is on Tizen. Kitsilano Software are funding the work to turn that “should work” into “does work”.
Tizen support for Mono will be developed in the open on Github (RIGHT HERE!) and contributed back to the Mono project. The end result of this process will be that any developer in the world will be able to create LGPL compliant C# applications for Tizen free of cost. Any projects which cannot comply with the LGPL terms will still require a commercial license from Xamarin.
These free-to-build applications will initially need to P/Invoke down to any native code (as is the case for Mono on Linux, Mac or Windows). For larger-scale applications, that approach can get unwieldy, but P/Invoke is workable, and you cannot argue with free!
We will also put together a simple MonoDevelop plugin for Tizen, based on the MeeGo work which was done by the Mono team in 2010. That will also be contributed back to the Mono project.
Over time we will be building .NET binding for Tizen Native C++ APIs, in some order still to be determined, to remove the need for most of the P/Invokes. This work is largely finishing off threads which already exist (such as QtSharp), and which are not really Tizen-specific. Most of the packages within the “Tizen project” are actually pre-existing FLOSS technology, so these bindings will be applicable on PC, Mac, Linux, etc. too.
What is your business model? You’re not charging for anything. How does that work?
The MonoTizen project is not any attempt to build an ongoing business. It is just a contribution back to Mono and C# community, to bring Tizen “into the C# fold”. All the products of the project are intended to make their way back into Mono and MonoDevelop, not to be an ongoing “extension” or “product”.
That is the reason for the neutral naming, rather than KitsilanoSoftware.Tizen or whatever. This isn’t a product in the classic sense. It’s just a banner for some work. When the work is “done”, MonoTizen will cease to exist. It will be just the Tizen support within Mono-proper.
You won’t be getting whiz-bang IDE designer tools or anything very flashy. You will, however, have the same kind of development tools as you already have if you were developing Mono applications on Linux. And those Linux tools will be a bit better too, because of the Qt bindings for C#. With Mono-on-Tizen you will be able to build LGPL-compliant C# applications for mobile, wearable, smart TV, IVI, IoT etc.
We’re very excited about the potential of Tizen and are delighted to be bringing C# support to Tizen. Happy hacking!
MonoTizen is an independent project which is not directly affiliated with either the Mono or the Tizen projects, or with Xamarin. All trademarks are copyright of their respective owners.