16. <html>
<head>
<title>
Written Once and Running Everywhere?
</title>
</head>
<body>
<p>
Pretty much anything can serve plain
text in HTML. Right?
</p>
</body>
</html>
64. "I love idea of 'Write Once Right
Everywhere', which was rebranded to
'Universal apps', but how does UWP
help my app run on Android and iOS?“
- A windows developer
65.
66. File > New Many Apps
All the platforms sharing code
and, optionally, some UI definitions
67.
68. …so preoccupied with whether or not they could
that they didn't stop to think if they should.
73. Cross Platform (X-Plat)
Want
• Lots of users
• Work on multiple devices
• Good UX
• Native functionality
• Homogeneity
Don’t want
• Unnecessary duplication
• Unnecessary costs
• Unnecessary work
Editor's Notes
Consultant Windows
I do some work for them
If you are building apps for Windows then I’d love to talk to you about how you promote them and if cross promotion is right for you
So, this is my topic for today
You may know this idea like this
Or like this
But really they’re the same thing
IF you’re familiar with the concept you may also know it as THIS
You’ve probably also heard this as
So what’s the history?
It all starts with Java
I haven’t locked down the exact history but
Used about them, before Java launched, in March 1995
Used by Sun in Jan 1996
The great promise of bytecode
But their isn’t just one lot of bytecode
There are differences and some criticisms of having different versions.
What if you could have identical bytecode on all platforms?...
Squeak
scratch
Bit identical bytecode everywhere : Everywhere = Windows, Mac & Linux
What if we wanted to really go to as many platforms as possible and without intermediary compilers
No images – images get complicated when you’re on lots of platforms and devices
I’m old enough to remember text only web sites but they don’t really cut it.
This is probably a bit to far for us to take our users just for the sake of making it easy for us to only have to write once.
What if we need more sophistication and low level power in code
Runs everywhere – but with lots of different compilers
Powerful with low level access
But to run everywhere has some implications
If your code needs lots of these, is it really writing once? Or writing lots of versions at the same time?
If we did write once but have to compile multiple times is that an issue? Possibly. There’s more to creating an app than just writing code. Obviously there’s the compile step but there’s more.
Regardless of the process you use to build apps there’s a lot more than just writing the code that you’d ideally like to only do once.
If these are tasks you’re doing for every platform the app runs on then only doing them once is ideal.
Why is it ideal?
Because it all comes down to business.
WORE is primarily a business driven goal to reduce costs. Both dev & maintenance
IME - Developers either like the idea for the technical challenge or dislike ti because they fear for their job security.
Our indirect business goal is cross platform development.
I’m aware we’re moving away from how things work on Windows 10. but bear with me. I know where I’m going.
So what about everywhere
OR
Do we mean 100% absolutely all platforms/devices/countries/languages?
For how long? Future devices? Old devices? (in & out of warranty?)
85Million users so far
Aiming for a billion users.
Could be worth investigating.
What’s the idea behind creating an app that runs on all Windows 10 devices?
Windows 10 allows creating hat it calls universal apps
Windows 8.1 had “universal apps” but they were different.
Win10 diffs from 8.1 with the idea of a UWP.
Here’s the promise of UWP.
That certainly sounds a lot like WORE – and press have picked up on that.
But there are some subtleties.
Let’s first look at what we mean by “all versiosn”
Here’s the 6 families of Win10
Actually 7
Here’s a better idea of how different devices running different families work.
2 you might not be as familiar with
Surface hub
At it’s simplest it’s an expensive whiteboard
But potential to be so much more
Can preorder now for del starting Jan next year
HoloLens
AR, not VR
Entirely self contained
Very few details
So, lets actually look at some code.
**
That’s great but what if you want something different across devices : 6 strategies
reposition
resize
reflow
reveal
replace
Re-architect
It’s not just a mobile vs table/desktop issue though.
Look how different the sizes are.
Look at the wall – see how different the sizes are.
How do we cope with creating one app that may be on anything between 4 and 84 inches
Different resources
Different pages (code, folder, name)
CHEATING – COMPILING MULTIPLE TIMES – BUT CAN PACKAGE ALL IN ONE GO
But if just want one platform only need one
Multiple families of OSs
Each extension is like an interface
It’s like
Each OS release knows that all the interfaces exist but has implementations that just throw NIEs
Except it isn’t as it really does it with reflection
Here’s how that looks
Mobile also means small tablets – in theory
Why care? – not for fanbois
Our survey says: don’t know but like it and most excited about it
“An app experience transcends a single device. And a device transcends a single configuration.”
Connect phone to a monitor, and maybe mouse and keyboard too and you have a PC for those times you really need one.
Experience determined by power/capabilities of the phone
If I have the monitor & mouse & keyboard at home why not get a PC as well.
Not for people who can
Hot desking to the extreme
At home why not use a Raspberry Pi as a cheap PC? It’s one OS and apps run everywhere
Prototyping and embedded devices
No store access
Surface Hub isn’t a massive tablet – collaboration device. No persisted user state.
HoloLens is completely different again. – but will allow deploying of a UWP
7B people in world but only 3B on the internet
- I suspect that this is part of the reason that WP might have survived so long. Not just that mobile is everything.
Next x billion
Gonna be mobile first (and probably mobile only)
But sometimes will want more
Games
Media
Office
Built in companion app or two
Yes it’s been tried before. Samsung/Android – Ubuntu phone
Continuum means
USE it everywhere
Content, data and docs are everywhere.
Take it anywhere
That’s all good but
There’s still lots of confusion
Xamarin let us reuse the skills used for building on Windows and create native iOS and Android applications
Look. Here’s a solution
So that takes windows devs to “everywhere”
What about making Win10 part of “everywhere” for people with iOS & Android code bases?
So we can build apps that run everywhere….
Do you really want the same things everywhere? – companion apps?
Do your users?
Platform differentiation – may need a custom UI
Some platforms let you do things others don’t
You may not want to put all your eggs in one basket.
Not all apps make sense on all platforms – beyond mobile
Increased complexity of putting all in one place
Shared vs single user devices
Volume of resources in bundle – MRT
We’ve spent the last few years telling developers they shouldn’t try and squeeze everything from the desktop version of an app into a mobile one -
Don’t end up with a desktop app that is just a mobile app stretched – Adobe
LCD
Don’t end up with a desktop app that is just a mobile app stretched – Adobe
LCD
Homogenity is key.
The feedback I’m hearing a lot is not that people want to WORE but that they want to have knowledge and tools that will let them build for everywhere.