What platform next?
20 February 2014 at 8:56 pm
In 2013, Adobe completely dropped the ball on the Flash Player and AIR. All further development has been moved to India. This normally means that the software has been put in what is referred to as “Maintenance mode”. Any serious bugs will be fixed, but don’t expect much in terms of new features. If you take a look at the Release Notes for AIR 4.0, you’ll see what I mean.
AIR will exist for many years still, but it’s time to look forward and figure out what’s next. What I’m looking for is a platform that will let me create both mobile and standalone apps easily, like Adobe AIR was but with a company that is still committed to the technology. Perferably with a solution that can create smaller and faster apps than AIR.
Some alternatives
For many years I wanted to look into Haxe, but I never got really into it. It was just to “techy” to get going. I really want a one-click installer that gives me all I need to get started. Some of my coder friends spent lots of time with Haxe and said really nice things about it. Other friends have looked towards Java. Joa Ebert has a nice thing going with Defrac and the demo video he published recently looks awesome. I don’t want to move in the direction of Java though.
I’ve also looked at Corona. I really like the idea of using Lua as the main language but Corona only outputs for devices. I’ve played around with Unity a bit and that I really liked. It’s very geared towards games though, so while it’s fun, it’s also not exactly what I’m looking for.
Ever since I started programming as a kid, I’ve shyed away from C & C++. Memory handling and pointers always seemed like unnecessary complications, but after playing around with microcontrollers with 2Kb ram and less, I’ve changed my opinion about that. The last two years I’ve done lot’s of it and I’m really enjoying it. Seems like a good direction to go? Everybody said nice things about C# and Microsoft Visual Studio, but Microsoft don’t have much of a story in terms of cross platform app publishing.
This autumn I’ve done a series of lectures at NITH on the topic “Embedded Systems”. Great fun! One day during a break, I got a call from a former NITH student and acquaintance asking if I had any plans after my teaching duties.
Outracks & Uno
Some days later I were in the offices of a company named Outracks. This is a relatively small company with a massive goal. They’re building a complete coding ecosystem from scratch, right here in my hometown of Oslo. With this I mean that they are creating a language called Uno that has compilers so that it can output to iOS, Android, desktop and more. That just sounds like an AIR clone, right? Not quite. Uno is the first programming language to unify GPU and CPU pogramming. You write the app and all the shaders in the same language. The end result will run on both GPU and CPU and in many cases you don’t even need to think about that part of it. The export is always a native app (no runtime bloat), but Uno also exports to HTML5/JS with 3D done as WebGL. In other words - you can make GPU accelerated apps for pretty much any platform with Uno.
They’re also creating an authoring tool called Realtime Studio that is a complete coding environment with integrated preview, a solid code editor, inspectors, node view for code (loving this one!), drag and drop support, gui for various export targets and more. On top of that they’re creating a UI FrameWork and exactly this was what they wanted me to help with.
The plan was that I were to develop a desktop app for a (still secret) client using their complete toolkit. Over a 1.5 month period I worked on the app and provided tons of feedback and I have to say this is shaping up to be one hell of a toolkit! The UI framework is completely GPU based and this does wonders when it comes to speed. Imagine having a slightly scaled down version of the Flex framework running completely on the GPU?
Why it’s so cool
Uno is closely related to the C# language. If you already have C# experience, you’ll be able to jump right into x-platform development. I however had basically no C# experience when I started the project and that was one of the things they wanted to test. How quickly would I pick up the language? What would I miss from other platforms? What would be the big hurdles?
Despite all the tools being under constant development, I would say that it took only 2 weeks to learn the language. After that I was fairly productive and knew where I was going. The next 2 weeks went by trying to understand and use correctly all the new goodness available to me that I never had in Actionscript. Uno has support for overloading, abstract classes, swizzling, lambda expressions, extension methods and much more. The last two weeks were really productive and we did reach a finished product. That said, it is still being actively developed and polished and I can’t wait till I get to tell more about it.
The one thing that I still haven’t wrapped my head fully around is writing shaders. While Uno makes this much easier, it is still something that I’ll need to learn more about. Something also tells me that this is something that’ll take quite some time as it’s a quite different mindset. GPU’s work in paralell and all operations happen on all pixels at the same time. That takes some getting used to from thinking more or less serially. What I can say is that I’m pretty sure that I’ve found what I’m looking for. This is actually the only platform that I feel comfortable spending my time on. Worst thing that could happen is that I’ve learned C#.
Uno will launch with lot’s of official API’s that are supported on all platforms. In addition there will be several APIs that are available for some platforms that you can download support for. Outracks has made a backend that is extendable, so if there is a feature you need in a specific platform, you can just add it yourself. It’s like Native Extensions on stereoids. Want MIDI on the desktop? Find a premade library in the form of a DLL, write some interfacing methods and you’re ready to go. This is going to be incredibly useful for those special hardware integration projects that I sometimes do for museums and exhibits.
Bottom line
I could transition in just a few weeks to a completely new platform. That’s pretty cool in itself. Not only can I target iOS, Android, browsers & desktop, but Outracks are playing around with support for lots of other devices and platforms. In the office there were FireFox phones, Nvidia-boxes and lots of other interesting hardware. The apps I’ve made play with blazing speed and I’ve seen things that I’ve never before seen running on a mobile GPU. I can’t say how much better that feels than seeing things like this go unnoticed. Having spent a lot of time in the Adobe Forums lately, I’ve seen many hundred important questions go completely unnoticed by Adobe. I need a platform with people that care and I feel that Uno is by far the strongest contender.
A public beta will be launched at FITC this coming week, so be sure to sign up for that. If you’re actually at the event, make sure you catch one of the two sessions that Simo is presenting. He’s been using Uno longer than anybody and he’s made some seriously good looking things with it!