
Flutter – Cross-platform mobile framework from Google - _r5wf
http://flutter.io/faq/
======
devit
For some reason the website fails to prominently mention the two defining
characteristics: it's based on Dart and it uses its own widget implementation.

Honestly, between the use of a relatively exotic language of dubious quality
with types that are "optional and unsound"
([https://www.dartlang.org/articles/why-dart-
types/](https://www.dartlang.org/articles/why-dart-types/)), their custom
widget implementation that who knows how well is going to work, and lack of
web support, it doesn't seem very attractive.

React-native seems a much safer bet.

~~~
zerr
I wander why Qt/QML doesn't get much attention.

~~~
boost_
i think is because most people don't know how far Qt has come in terms of
mobile development.

most people hear Qt and immediately think about heavy desktop applications.
its a shame really, Qt is pretty awesome atm for mobile development.

~~~
oblio
Maybe C++ is also a showstopper for many?

~~~
boost_
while that is certainly true, using QML you can build native apps using almost
only javascript (if you want), most people have no idea about that too i
suppose.

but i agree, for many people C++ is a no-no, even though Qt C++ is pretty
straightforward with all the helpers they provide (like the parent-child
memory management).

~~~
oblio
The thing with QML: I think you still need C++ for more complex app logic.

~~~
discreteevent
You can write all of your Qt logic in javascript if you want to. It will
probalbly still be much faster than a browser. But the thing is that Qt allows
you to write your logic (and your ui) in C++ if you need to. It gives you
somewhere to go when performance is an issue. And on mobile or embedded there
is a high chance that only a compiled, no-vm, no-gc language like C/C++ or
Objective C or Rust will give you the performance you need. One thing is for
sure: If you have to build a cross platform native application be sure to
first prototype the performance and processor/battery use of your technology
choice. Even if you don't choose something like Qt at least you can write your
backend in C++ and write a different native front end for each OS. But if you
use e.g. web technology and don't prototype first there will be absolutely
fire escape later. A lot of people have learned this the hard way.

~~~
insulanian
> You can write all of your Qt logic in javascript if you want to. ... But the
> thing is that Qt allows you to write your logic (and your ui) in C++ if you
> need to.

Maybe that sounds appealing to some, but for me is just choosing between two
evils. Unsafe dynamic language on one side - kitchen-sink low-level language
on the other side.

I personally would like something in between, but still cross platform. F#
with Xamarin looks most appealing to me, but Xamarin is unfortunately not
free, so...

------
prohor
And at the same time another group at Google is working on Singular, again
cross platform development for Android, iOS & Web (web is not for Flutter),
which works in AnuglarJS-like fashion. There is a difference though, Singular
doesn't go into widgets (you should use platform specific). Maybe they will be
able to merry them, but I doubt, so we will need to choose.

[https://www.youtube.com/watch?v=DdPP3ldo1ww](https://www.youtube.com/watch?v=DdPP3ldo1ww)

[https://news.ycombinator.com/item?id=9010424](https://news.ycombinator.com/item?id=9010424)

~~~
stephen
I'm cautiously optimistic about Singular; they've "gone dark" and are
implementing it internally, which is kind of disappointing.

But for someone (e.g. me) who:

a) thinks the skill set reuse of React Native is genius (reuse the UI
framework/mental model, and purposefully not the widgets), but

b) doesn't like Javascript, I think Singular has the best chance at winning my
personal mind share.

Of course, "doesn't like Javascript" is a minority mindset these days, so in
terms of community/etc. I'm sure React Native is going to be very strong.

In terms of Flutter/Singular, Flutter trying to play the "write one app for N
devices" is interesting...AFAIK, that's something React Native/Singular are
explicitly trying to avoid, since historically it's resulted in sub-par UIs on
each device.

But it would be an interesting coup if material design meant developers (and
users) really did want/expect the same exact L&F on both Android and iOS.

~~~
invalidname
I am never basing architecture on small Google projects again. We use app
engine which has horrible support and billing. We used to use GWT which is no
longer maintained. I just don't trust Googles commitment to anything it
releases. They throw stuff against the wall to see if it sticks and I ended up
with sludge on the floor one time too many.

~~~
stephen
> We used to use GWT which is no longer maintained

I understand where you're coming from, but FWIW this is incorrect: Google has
a team of ~4-5 engineers still actively making changes to GWT, and even
currently prepping/testing a new release.

------
declan
What struck me from the FAQ is this:

 _" Flutter is optimized for 2D mobile apps that want to run in both Android
and iOS. Apps that use Material Design are particularly well suited for
Flutter."_

Which means that, if Flutter succeeds, iOS users should expect to see more and
more apps built using Google's Material Design language. It's already
happening for some of Google's iOS apps--the floating action button in
Calendar, Hangouts, Photos, Docs, the iconset in most of their iOS apps (Gmail
and Chrome are partial exceptions), etc.

In other words, Material Design is making significant inroads into iOS. But
Apple's design language isn't doing the same in Android world.

Disclaimer: I'm a cofounder of Recent News
([https://recent.io/](https://recent.io/)), and we borrowed some Material
Design concepts for the iOS version of our app.

~~~
mbrock
I'm very amused by the recent trend of redefining "disclaimer" to mean
"advertisement."

~~~
mbrock
So amused, in fact, that I did a big grep from the Algolia API:

[http://mbrock.github.io/disclaimer.html](http://mbrock.github.io/disclaimer.html)
([https://news.ycombinator.com/item?id=10521578](https://news.ycombinator.com/item?id=10521578))

------
pavlov
The git repo has some examples of what Flutter apps actually look like (just
the code I mean, not screenshots):

[https://github.com/flutter/engine/tree/master/examples](https://github.com/flutter/engine/tree/master/examples)

------
cageface
I wouldn't be surprised if this is Google's longer-term solution to the Java
problem. It's clearly not tenable for them to stay on Java 6 forever so they
either need to make web-based apps first class citizens on Android or put
forward their own new stack.

~~~
grrowl
It's this, or Native Client ported from Chrome OS to Android

------
segphault
Well, I guess Google had to find _something_ to use the Dart VM for now that
they aren't trying to cram into Chrome anymore.

Some interesting ideas here, though. It's strange how much it looks like web
development, with route handling for navigation etc.

~~~
moonchrome
Dart has such a strange story.

When it started out it was completely uninteresting as a language and it's
only selling feature was that it someday might find it's way in to browsers
and that it compiles to JS.

Now that it's ditched the whole "replace JS in browser" the language has
actually matured enough to the point where I would code in it outside of
browser use case and the VM quality puts it in a unique
performance/productivity spot. It is very much a hybrid of C# and Python in
good ways with a decent package manager built in.

It's much more suitable to be viewed as a high performance Python replacement
- unlike Go it's dynamically typed but offers optional static typing so the
level of abstraction is much closer to Python - in fact I would argue that the
static typing built in from start makes it more productive than python for
project you need to scale up to multiple people.

But it was built by a VM team that knows how to get performance and knows the
bottlenecks that prevent JS optimizations - so it's probably faster than V8
and the likes - not CPyhon level.

The VM/class library is small and embeddable which separates it from Java.

And finally the compile to browser was a design choice from the start so
compile to JS is much simpler than existing languages (eg. Python/Java)

It's a great language for client side programming and it's usable in server
side if you are already using it for client side and want same languages on
both server and client.

~~~
randomfool
Dart is still much much closer to JS than C#, specifically in terms of
threading, native interop, value types, etc. Until these are all improved I
just don't see a compelling mobile story for Dart when compared to Java.

Furthermore, TypeScript, Facebook's Flow etc provide stronger static analysis
than Dart.

~~~
moonchrome
>specifically in terms of threading, native interop, value types, etc.

AFAIK the VM they are working on for mobile has green threads (aka. isolates),
value types are irrelevant at this level of coding and interop is arguably
better than standard FFI with their IDL/IPC system.

It's actually a perfect frontend language where you delegate stuff where you
care about threads/memory layouts/performance/etc. to native code in whatever
language that has bindings for their IDL.

TypeScript, Flow, etc. are JS type systems - Dart is a programming language -
it's superior to JS in that it has sane semantics and standard
library/collections, etc. It also has stuff like async/await shipping for a
long time now (still not in TS official).

------
korm
A lot of people are worried or put off by Dart's type system, but it now also
supports strong mode [https://github.com/dart-
lang/dev_compiler/blob/master/STRONG...](https://github.com/dart-
lang/dev_compiler/blob/master/STRONG_MODE.md#strong-mode-type-system)

~~~
sethladd
(disclaimer: I work on the Flutter team)

Yes, strong mode is something the Flutter team uses to help check their code.

Dart is pretty cool this way: you can scale up or down how much "typiness" you
want. As your program matures, you can dial up the static type checking.
Hence: strong mode.

------
pjmlp
Until I see this as an official Android SDK language, or presented at Google
IO as such, I will ignore it.

The Android team has been very clear where they stand.

~~~
sandGorgon
and this: _We are building a Flutter plugin for Atom. Today, it can syntax
highlight, code complete, refactor, launch apps, create new apps from a
template, show type hierarchies, jump to definition, and more._

Why not Android Studio ? this release announcement is weird. it seems to be as
much political as technical.

~~~
afsina
Intellij Idea and Webstorm already supports Dart as language. I am guessing
they wanted something lightweight initially. Since Flutter is in pre-alpha
state, support for Android studio may come later.

~~~
scotu
lightweight except Atom struggles on my mbpr 2013 while I use intellij
(pycharm) just fine (2 windows/projects at once even)...

~~~
girvo
And yet Atom starts instantly on my rMBP 2014 while PHPStorm takes a minute or
so?

~~~
scotu
honestly, my atom must have something wrong as it hangs like I'm working on a
386 with 1MB ram on startup, open file (I will let you imagine what happens if
I open the occasional unfortunate file with long lines)..., and I'm not even
taking in account the feature mismatch. I come from vim so I can appreciate a
text editor, it's not I'm an IDE lover or anything...

------
sandGorgon
_The engine’s C /C++ code is compiled with Android’s NDK, and the majority of
the framework and application code is running on the Dart VM. The Dart VM
generates JIT-compiled optimized native code on the device. (In other words,
the Dart VM is not an interpreter.)_

So Google is officially making its stand as Dart being the future of Android
(the Swift of Android?).

Anybody who has worked on this and Kotlin, care to compare ?

EDIT: how does this work inside Google ? I mean you have legendary
heavyweights behind Go. Were they designed as domain specific (Go for server
and Dart for mobile)?

~~~
kibwen

      > Dart for mobile
    

Dart was originally designed for the client-side as a challenger to
Javascript, and I consider it to have generally succeeded in its ulterior goal
of spurring the Javascript standardization committee into greater velocity out
of threat of competition. Recently it's pivoted towards server-side
programming, though I could see it finding a home in mobile app development.
Given its familiarity to Java, it was always more likely than Go to succeed
Java on Android (though IMO less likely than a typed variant of Javascript).

To be clear I don't think this is an "official stand" proclaiming Dart as the
future of Android (and regardless of Oracle's asshattery, I don't see Google
outright removing Java support any time soon). As other commenters have
pointed out, Google has more than one ongoing initiative in this area.

~~~
sandGorgon
Am I wrong in thinking that Dart VM on Android is the only other VM that has
been officially released by Google ?

Doesnt that make for a pretty strong statement ?

~~~
shadowmint
No. This isn't the same thing at all.

The C# runtime on android is used by thousands of apps; this is simply a dart
_runtime_ that runs on android.

This _is_ a cool project; and its great to see people trying to do interesting
things with dart; Dart as it currently stands is a total and abject failure in
all of its goals as a replacement for javascript.

New goals for it to live as a mobile platform might give it a breath of fresh
air. Pretty nice to see; it's a nice language with a good ecosystem, if it
gains traction as a 'app' language, it could go places.

...but this is absolutely not Google saying 'the future of android is dart'.

~~~
afsina
>this is simply a dart runtime that runs on android.

User facing side of the framework is written in Dart. That means something.

~~~
shadowmint
Not really. The User facing side of unity is written in C#.

/me spins finger in the air...

This is like any other 'insert language here' mobile runtime with native
bindings to the mobile apis (eg. camera, etc) and its own widget library.

Unity and kivy spring immediately to mind as examples of other ones. Hardly
revolutionary.

------
elchief
"React Native is taking off"

"Crap. Anybody got anything?"

"Jimmy has a brainfuck to Objective-C transpiler"

"Anybody else?"

"How about non-native controls with a language no one cares about?"

"Ship it"

~~~
korm
Where would we be without alternatives for developers? Should C# never have
existed because of Java? Or any language for that matter?

Flutter exists because some people (also internally at Google) enjoy writing
their stuff in Dart, so they created this tool for themselves, which they
released in public.

People shouldn't get upset nor should they feel threatened by alternatives to
their preferred tools.

~~~
andrewmcwatters
Flutter is a great example of tech to ignore in a world where everyone is
releasing something on a weekly basis.

~~~
kaendfinger
We can just ignore different things then. I ignore JavaScript, and you ignore
Dart, and we will be on our way.

------
untog
I investigated Flutter some time ago after seeing it mentioned on HN, and it
is quite fascinating - as an Android user. It has a stated goal of 120fps on
all UI elements, which would be a huge step in bringing sluggish-feeling
Android up to the levels of iOS.

But Flutter is also intended as a cross-platform framework for iOS too. That
part I'm less sure about, though if it lives up to its promise, it would be
great. Overall though, far too early to tell. Using Dart might not be popular,
but if you don't already know Objective C/Swift and Java, it might not be any
worse than today.

------
joeld42
This looks really nice. I like Dart a lot (used it for the "edit in browser"
feature of The Brainstormer app). This seems pretty well thought out too.

If it's easy to mix with native code, this could be really useful to me.

------
andy_ppp
It's astonishingly similar to react:

* StatelessComponent ... (props) => (<Tags />)

* Widget build() ... render()

* setState() ... setState()

etc.

Not quite sure how props are passed but it does have that concept... anyway if
you're going to copy something might as well change some of the names of the
functions :^)

I'd say React benefits from not having a bundled UI library, instead using
native components (and obviously includes web). Google would have been better
to go with embrace and extend on this one.

~~~
mbrock
React Native's basic navigator component is non-native and implemented in a
way that has fundamental performance problems. There is also a native
navigator component for iOS, but it's buggy and unmaintained to the point of
being unusable. The list view also has issues. See e.g. issues like these:

[https://github.com/facebook/react-
native/issues/3452](https://github.com/facebook/react-native/issues/3452)
[https://github.com/facebook/react-
native/issues/567](https://github.com/facebook/react-native/issues/567)
[https://github.com/facebook/react-
native/issues/3049](https://github.com/facebook/react-native/issues/3049)
[https://github.com/facebook/react-
native/issues/2569](https://github.com/facebook/react-native/issues/2569)

The marketing claim on their main web page that "React Native apps are
naturally fluid and responsive" needs qualification.

These pages are essential reading for anyone considering using React Native
for a project with deadlines:

[https://facebook.github.io/react-
native/docs/performance.htm...](https://facebook.github.io/react-
native/docs/performance.html)

"Many people have noticed that performance of NavigatorIOS is better out of
the box than Navigator. The reason for this is that the animations for the
transitions are done entirely on the main thread, and so they are not
interrupted by frame drops on the JavaScript thread. (Read about why you
should probably use Navigator anyways.)"

"... As mentioned above, Navigator animations are controlled by the JavaScript
thread. Imagine the "push from right" scene transition: each frame, the new
scene is moved from the right to left, starting offscreen (let's say at an
x-offset of 320) and ultimately settling when the scene sits at an x-offset of
0. Each frame during this transition, the JavaScript thread needs to send a
new x-offset to the main thread. If the JavaScript thread is locked up, it
cannot do this and so no update occurs on that frame and the animation
stutters."

[https://facebook.github.io/react-native/docs/navigator-
compa...](https://facebook.github.io/react-native/docs/navigator-
comparison.html)

Regarding the native-styled and higher-performing NavigatorIOS:

"Development belongs to open-source community - not used by the React Native
team on their apps. A result of this is that there is currently a backlog of
unresolved bugs, nobody who uses this has stepped up to take ownership for it
yet."

Disclaimer: this comment is written by a consultant undergoing high levels of
frustration and may have traces of FUD. If React Native works well for you, I
would love to hear about it.

Edit: I was really hoping to do some good work on the app today. The
frustrating problem this time is that the devtools are entirely broken due to
a commit made back in September.

[https://github.com/facebook/react-
devtools/issues/229](https://github.com/facebook/react-devtools/issues/229)

"I don't know how to fix this. I now remember that this is why we didn't merge
that RN pull request originally."

UGH. Shoot me.

~~~
andy_ppp
>>> React Native's basic navigator is non-native and implemented in a way that
has fundamental performance problems.

\- just use the InteractionsManager - Navigator works well enough on all the
Facebook apps and Paper etc. yes agreed about the NavigatorIOS - it doesn't
work and I complained bitterly somewhere on github about that.

\- You probably aren't coming from the web where I think most people know that
if you are making requests in the background and doing too much stuff inside
of requestAnimationFrame your performance will be bad.

\- Maybe you should move the Javascript that is causing performance slowdowns
into Native code if it's that complicated then it'll run on the different
thread? I think if you come from an app background it's probably easier to
expect better performance.

\- I hope you are testing performance in the Release build mode in xcode, it
needs to be on for loads of optimisations to be made.

\- I've found performance acceptable so far and excellent when you use actual
Native things.

~~~
mbrock
Thanks.

Yeah, I'm in the process of putting in spinners conditioned by
InteractionManager. I'd prefer rendering to be fast enough by default, but
there's no free lunch.

I am coming from the web, where I usually don't have to think about animation
frames when implementing basic functionality. React Native's way of
implementing navigation animations with repeated timer calls between
JavaScript and iOS makes this a problem.

The performance slowdown is caused by lists, texts, and images. I am not doing
any animations or fancy interactions. Moreover, we chose React Native exactly
because it would let us use JavaScript for these things, since that integrates
with our web app "isomorphically."

I'm hopeful that with release build mode and InteractionManager-based
spinners, I'll be able to get acceptable performance. I'm just a little
surprised at how many performance gotchas I've run into.

~~~
andy_ppp
Yeah, let me know how you get on with a release build - we've had a few issues
that went away with that on. How big is your app, ours seems fine with normal
usage on a real device... Guess it does depend on what you are doing.

~~~
mbrock
I had big hopes for today's work, but it involves some UI stuff that would be
much easier if the devtools hadn't been almost entirely broken since
September.

[https://github.com/facebook/react-
devtools/issues/229](https://github.com/facebook/react-devtools/issues/229)

I'm not sure how to quantify the bigness of our app. It's kind of Twitter-like
in structure: a list view of cards containing images and texts and which on
click transition to an expanded card view.

------
aabluedragon
Once streamlined, it will probably be the best mobile framework world wide
(IMHO). Great job dartisans, Good Luck! I also hope to see it running deaktop
apps, something like NW.js

------
merb
No Windows Phone Support. Oh man this platform is so forgotten.

Btw. I don't care about the language, but I care about support of IDE's and
Tooling and I hope that you built around the Dart Tooling of IntelliJ, then I
would give it a try!

~~~
Zikes
Honestly, though, what sort of market share does Windows Phone have? Surely
it's a single digit percentage. How could anybody justify developing for that
platform without having a significant interest?

~~~
Eridrus
MS is trying to make iOS and Android applications easy to port to windows
phone apps, so hopefully having an easy path from your existing app to windows
phone will be almost a no brainer, but Windows Phone 10 dev tools or phones
are not out yet afaik.

Given that WP10 and Windows 10 should have a similar "universal" runtime,
maybe once you are done with your android/iOS to WP10 port it will work quite
nicely on Windows 10 after you update the UI to support larger screens.

So, hopefully once enough people are on Windows 10, the windows (phone) 10
ecosystem will be attractive enough that people want to build things for
windows 10, rather than the web.

I have no idea if this strategy will work out, but it's what I sort of
expected windows 8 to be, but hey, maybe the ship hasn't sailed so far as to
make this pointless.

I used to work at MSFT though, so this please excuse the bleakness shrouded in
the unwarranted optimism.

------
hippich
One thing to remember, "from Google" is not equal "the only framework to solve
X from Google".

------
shade23
Don't we have enough cross platform dev kits anyways?I fail to see the need
for so many more platforms.The state of the ART/DVM is going to become like
that of the JVM. Maybe as devices become more powerful,it would be capable of
handling such needs.But why would you want to develop such apps which you
would have to wait till the native platforms release updates which are then
ported to these platforms.Android updates happen every 3 months.Maintaining
evergreen apps in such cycles is a task in itself.

I understand the evolution of Javascript based frameworks considering the
large number of developers available.But now days you have to spend more time
learning a framework in comparison to developing something with it.

The only feature which seemed to grab my attention was :

> Can I update my app over the network, outside of the Play Store? Yes. On
> Android, you can update your app over the network (via HTTP), without first
> publishing to the Play Store. This can be useful because it doesn’t bother
> the user with a notification, ensures your users are on the latest version,
> makes it easier to run A/B experiments, and more.

This would be extremely useful. But I think there would be a catch to this
too.I am actually tired of seeing new frameworks come up everyday,especially
orgs like Google.

~~~
BinaryIdiot
> Don't we have enough cross platform dev kits anyways?

Absolutely not. Right now the choices are very, very small for the platforms
you'd actually want to use. React-native, before Flutter, was the only one
(that I know of at least) that uses real, native components but uses a
different language for orchestrating them.

Beyond that everything else is either "shove html in a web view" or the
xamarin approach which, and please correct me if I'm wrong, is closer to the
approach of QT in that it renders all its own controls.

We need more options in the first camp, the one where real native components
are used but can use a common language across the mobile operating systems.

I only wish react-native and this supported Windows Phone. It's such an
awesome OS but no one will ever use it because of the lack of apps :(

~~~
insulanian
_I only wish react-native and this supported Windows Phone. It 's such an
awesome OS but no one will ever use it because of the lack of apps :(_

What do you consider awesome in Windows Phone comparing to Android and iOS?

~~~
pjmlp
Comparing with Android.

\- C++ is a first class language on the platform, not constrained like the NDK

\- C++ also gets first class tooling not the second class treatment Google
gives C++ devs

\- WinRT is a very nice framework as the second coming of COM

\- .NET is compiled to native code AOT

\- Visual Studio rocks in debugging capabilities, specially for parallel and
graphics debugging.

\- Less resource hungry as Android

\- XAML and its tooling (Expression Blend) for UI design

\- Common runtime, develop WinRT components and use them from any language
that understands WinRT.

------
suyash
Android development as of today is painful and application logic is
complicated and bloated. Dart and Flutter may be a good option to current way
of things.

~~~
72deluxe
How is the application logic going to be different in a different programming
language?

I mean, if this then do that is a common construct in all languages, surely?

~~~
kaendfinger
I think he means the APIs for UI and execution of logic.

------
unicornporn
Yet an example where Windows (10) Mobile is left out. I think we might have to
get used to two monoliths in this market.

~~~
pcunite
I'm not ready to throw in the towel just yet. The security issues and user
updates with Android are making me consider Windows. If Windows 10 can run
Android apps (as rumored), that will be icing on the cake.

The thing people need to realize is that Microsoft has been around for 40
years. They're in this for the long haul. Until Microsoft quits, it is not
game over.

~~~
0xFFC
You mentioned my point , Microsoft is too big to fail, in software development
term they are bigger than Google and Apple combined . They are one of leaders
in gaming industry (which is pure money, even profitable than web). They
controlling Windows which dominate whole pc market without even
competition(don't get me wrong , I have been on fedora for years and I am on
fedora right now, but thats it truth , Microsoft is absolute leader of
PC's).And after this new smart CEO they understand what was wrong about their
approach and they are fixing it right now. they are pushing cloud as fast as
possible. they are dead serious about edge.they are bringing ssh and whole
another tools to make windows more developer friendly.They are pushing windows
10 for internet of things more than google pushes android for internet of
things.(Because they know it will be a revive for Windows phone) and whole
another things.

If I were google. I would be very stressed , Nadella's Microsoft is not
ordinary company and it is attacking google in every front.

Google's biggest mistake was their hesitate to beat windows on desktop(I would
say recent news about chrome/android desktop version is related to their
analysis from Microsoft approach). We all know it does not matter where goes
computing. Desktop will be there ! even for 10 % of users (developers). but
desktop will not dead (there is no way , absolutely ).And until desktop is
alive , Microsoft is like snake with venom , ready to attack.

I am betting on Microsoft ( despite being linux guy ). Microsoft coming back
and they compete vigorously , because they have resource , they will win !

~~~
iSnow
>in software development term they are bigger than Google and Apple combined .

I dunno. Since a couple of years, a lot went wrong for them

\- Websearch (Bing usage must be abysmal)

\- Webmail

\- Mobile (I have lost track how many approaches failed over the years)

\- Web-tech (IE, Silverlight, all the other proprietary extensions)

\- Media sales (They had something for the Zune thingy, right?)

\- Web ads

\- Languages. Java is still around, JS likewise. The whole .NET ecosystem is
kind of holding out, but nowhere exploding.

\- Social web

I have a hard time believing their inclusion of SSH in 2015 is making a
difference. The whole lot of younger coders I know are either on Mac, on Linux
or on ChromeOS. No one wants to do Windows. Powershell is nice, but why learn
it if you also work on Unix?

The ordinary user or enterprise desktop is their mainstay and I don't see that
evaporating fast. Surface is making some inroads into the corporate
tablet/laptop (laplet?) market. And their productivity suite seems healthy
despite the design choices.

But that's it. Apple is eating the smartwatch market, the phone high-end, the
tablet high-end, the ultrabook market. Android is slurping up the low-end to
high-end phone market. Online productivity suites means Google. Search is
Google. Media sales is Amazon/iTunes. Social web is Facebook/Twitter. New
languages and frameworks come out of OSS or Google or Mozilla.

~~~
kriro
I don't run Windows on any of my computers and have been a Linux user since
forever but I have to disagree with at least one of the points here. Microsoft
is pretty excellent in language development, I don't agree with the "new
languages and frameworks come out of OSS or Google or Mozilla". F# would be my
prime example. Axum was also pretty interesting. LINQ integration is also
pretty interesting etc. etc.

~~~
insulanian
Yes, languages coming from MS deserve respect. Especially F#.

------
skratlo
How much attention would this get without the Google label?

------
kaendfinger
The amount of JavaScript-is-God philosophies on here is excruciating.... I
respect everyone who likes JavaScript, but just because Dart isn't what you
like doesn't make it inherently useless or bad. The world is all about
diversity, how about some language/preference diversity?

In my opinion, JavaScript is a large flame, and all the languages that were
inspired by it are the sparks. Eventually the JavaScript flame might die out,
but the sparks it makes can still burn, and create their own flame.

I'm a huge lover of Dart, and I generally dislike JavaScript. My advice is to
welcome Flutter. If it works out, it will work well, if it doesn't work out,
it will fade away.

------
nickysielicki
I recorded two webm's of playing with the examples on a Nexus 6.

It's quite early to call it either way but in my quick testing it seemed not
any more performant than a webview for traditional tasks like scrolling
through lists of "material-design" elements (eg: text), but then it
surprisingly did very well with 2D graphics. A bit of lag in the game, a bit
of lag scrolling, but maybe it'll get better.

[http://webm.host/d737b/vid.webm](http://webm.host/d737b/vid.webm)

[http://webm.host/9c254/vid.webm](http://webm.host/9c254/vid.webm)

------
jnpatel
"[Flutter] is familiar to anyone who has done Java or JavaScript"

At a superficial level, seems like a strange statement to make since those
languages are quite different. Unless the point is that Flutter is C-like?

~~~
SolarNet
I think it's because it's on Dart (aka the C# (aka the Java of Microsoft) of
Javascript).

------
anjanb
"Windows: Stay tuned, Windows support is in the works." waiting!

~~~
aexaey
What's wrong in running Ubuntu/Fedora in a VM, if you really interested in
trying it out?

~~~
anjanb
Nothing wrong -- except I don't have enough juice on my laptop to run
VirtualBox, etc. Want to attract 70% developers, have something to run easily
on windows.

------
thawab
This framework used to be called Sky[0], here's a demo video from 6 months ago
[https://www.youtube.com/watch?v=PnIWl33YMwA](https://www.youtube.com/watch?v=PnIWl33YMwA)

[0][https://www.dartlang.org/mobile/](https://www.dartlang.org/mobile/)

------
CodingGuy
There are so many python developers out there who are not (yet) mobile
developers, so why doesn't Google support kivy?

------
trishume
"Flutter is unique technically because its rendering implementation uses
neither WebView nor OEM widgets. Instead, Flutter uses its own high-
performance rendering engine to draw widgets."

Factually incorrect since [http://www.qt.io/qt-quick/](http://www.qt.io/qt-
quick/) has done this for a while and has a very mature fast mobile reactive
amazing UI engine.

~~~
sethladd
Thanks for the comment. We'll change our FAQ. Issue filed here:
[https://github.com/flutter/flutter.github.io/issues/55](https://github.com/flutter/flutter.github.io/issues/55)

------
lucio
semi-off topic, but the guy who wrote the style guide needs a little more
experience in the real world. Not using braces is an accident waiting to
happen.

[https://github.com/flutter/engine/blob/master/sky/specs/styl...](https://github.com/flutter/engine/blob/master/sky/specs/style-
guide.md)

if a flow control structure's statement is one line long, then don't use
braces around it, unless it's part of an "if" chain and any of the other
blocks have more than one line. (Keeping the code free of boilerplate or
redundant punctuation keeps it concise and readable.)

For example,

    
    
      if (children != null) {
        for (RenderBox child in children)
          add(child);
      }

...rather than:

    
    
      if (children != null) {
        for (RenderBox child in children) {
          add(child);
        }
      }

------
NKCSS
Always nice to see a Cross-platform mobile framework that's not cross-platform
itself :) *nix only for now.

~~~
smt88
Cross-platform on mobile isn't the same as cross-platform on desktop, so there
really isn't any irony there.

Android, iOS, Linux, and OS X are all Unix-like, and Windows is... Windows.
There's a ton more work that goes into supporting Windows than a *nix variant.

~~~
pjmlp
Android and iOS are surely not UNIX.

They don't offer the full POSIX API.

~~~
smt88
I wrote (asterisk)nix, but HN turned it into italics. I'll change my comment
to say "Unix-like" instead.

------
lavelledumetz
David dumetz and his money grubbing family used this wonder program to ruin
endless devices .put fake social sites up and put my family's info on the
web.Diane dumetz u knw I know all ur lieing to disability .wat ur husband
makes .play time is over.

------
astannard
This is very new from the looks so who know how it will play out, at the
moment I am not excited about it. Sounds like Java swing where you could
create cross platform apps but the UI was not the platforms native components
and so never quite felt right.

~~~
mavelikara
I agree. By choosing an emulated widget set, Flutter will have all the
downsides of Java Swing.

"Those who cannot remember the past are condemned to repeat it": George
Santayana

------
fit2rule
I've been using MOAI ([http://getmoai.com/](http://getmoai.com/)) for the same
basic thing. Its going to be interesting to see what Dart has to offer that
Lua doesn't.

~~~
invalidname
I think its a different thing. Its more like Codename One
[https://www.codenameone.com/](https://www.codenameone.com/) for apps that
have widgets and not as much for games. Although you probably could create
games with it in a pinch.

------
daguava
Was really hoping for a prominent example, but the page only offers "You can
see an example of that at [[docs coming soon]]."

I understand that examples exist elsewhere, but better to have a few linked up
for launch than a placeholder.

------
jankins
Unfortunately I don't see how a system like this could be accessible using the
native accessibility tools like voiceover, and so IMO is a non-starter. The
FAQ doesn't seem to address it.

~~~
mcintyre1994
They don't mention it and might not have it, but is this that different to
React Native? They have a reasonably thorough looking integration so this
might just be a case of waiting on Google to implement here? React docs for
it: [https://facebook.github.io/react-
native/docs/accessibility.h...](https://facebook.github.io/react-
native/docs/accessibility.html)

------
wiradikusuma
Looks like it's more suitable for making games, since it "uses its own high-
performance rendering engine to draw widgets" \-- non-games typically don't
reinvent widgets.

~~~
fsloth
And to me this is a great shame. Unique industrial design adds appeal to a
product and can improve its user experience.

Kai's power tools were a fantastic experiment in visual UI design. I'm left
wondering why games are the only brand of software where ui innovation "is
ok".

~~~
72deluxe
True, but sometimes the UI does not need innovation. iOS had problems where
they suddenly made a button look like text and nobody could tell what was a
button, and what was text. It didn't need innovation - it wasn't broken.

In the case of custom GUI elements sometimes things don't need fixing. The
audio industry always makes control panels etc. look different to the common
UI and this is one area you still see it.

But for the most part, having a consistent UI means the system is easier to
use. I wouldn't want my fork mutating every time I had a different meal, in
the interests of innovation.

~~~
fsloth
"I wouldn't want my fork mutating every time I had a different meal, in the
interests of innovation."

The meal is a good analogy. For prolonged activity a local minima of utility
that is 'good enough' can be achieved. This would correspond with a single
app.

The fork, however, is not necessarily the best tool for 3D modeling, composing
music or some new entirely new activity.

~~~
72deluxe
In this instance though, the fork is the method by which you interact with the
food. In GUIs, the GUI elements are the ways you interact with the underlying
concepts in the program (the food).

The fork is basically a GUI element, eg. a button.

Buttons appearing to be anything but buttons is as useful as a fork being
shaped like a playing card - it isn't useful at all, and I could not easily
shovel food into my fat face with aplomb.

I am not saying that custom GUI controls/widgets shouldn't be invented where
needed, just that the basics being reinvented just for the sake of reinvention
is unnecessary, and confusing.

------
firloop
It's funny that due to the fact that the iOS code is compiled, it can't self
update like Android can, despite iOS having significantly more update
friction.

~~~
eklavya
I am wondering in what world self app updates would be considered a good
thing. As an end user it terrifies me. Although in android you have to declare
permissions beforehand, does it cover that? With android 6 would you be able
to update to require anything and just ask on demand? Is the fear irrational?

~~~
oblio
Aren't you annoyed by apps that can't update themselves on desktops?

~~~
eklavya
Not if they can be updated from one place like in case of mobiles.

------
krupal55
Do we really need cross-platform app development framework? No, It should only
be focused on Android. Why the hell iOS? There are other frammeworks for them.

------
_jp__
They worked hard for a AOT framework, and suddenly google offers you a JIT
with all its drawbacks for a high performance development....

~~~
kaendfinger
Actually, it's has both AOT and JIT. You can 'pre-compile' your app/code into
a 'pre-compiled snapshot'.

~~~
_jp__
Thanks for the info. I went through their FAQ: How does Flutter run my code on
Android? they say JIT there while in IOS says AOT.

~~~
invalidname
A JIT would be illegal on iOS (self modifying code) if they allow native code
JIT's on Android this is a hack waiting to happen...

------
archagon
Optimized 2D engine? Hmm, is there any chance that there's a hardware-
accelerated version of Skia somewhere in there? A while ago I was looking for
a nice OpenGL vector (read: path rendering) library for an iOS app I was
working on, but none of the available options at the time were good enough.
Ended up hacking together a custom implementation in Cocos2d. (Actually, still
hacking...)

~~~
napsterbr
Looks like so, as per their architecture diagram:
[https://docs.google.com/presentation/d/1cw7A4HbvM_Abv320rVgP...](https://docs.google.com/presentation/d/1cw7A4HbvM_Abv320rVgPVGiUP2msVs7tfGbkgdrTy0I/edit?usp=sharing)

~~~
archagon
Looks like it's there but I don't think it uses OpenGL. (Also, the page
states: "Today we don’t support for 3D via OpenGL ES or similar. We have long-
term plans to expose an optimized 3D API, but right now we’re focused on 2D.")
Still, this is very promising!

------
zeckalpha
> I heard Apple rejects apps built with third-party frameworks, is that true?

Where did this rumor come from?

------
ergo14
So, are they reinventing haxe and openfl? From the description it kinda looks
this way.

------
lisperforlife
Looks like we are trying to rediscover Java AWT in the mobile space.

~~~
invalidname
Nope. AWT used native widgets, this is more like Swing without the PLAF or
really Codename One which already does that on mobile and far more...

------
ecthiender
So this is like Adobe Flash but for mobiles, by Google!!??

------
outside1234
Why can't Google just contribute to React Native?

------
niutech
Why no luv for the web? What about Firefox OS?

------
morfy50
Dart? Come'on. Typescript or go home

------
TeeWEE
Are there any demo apps i can download?

------
TheMagicHorsey
Why not a native app framework for Go on Android? Sigh. Been waiting so long.

~~~
aikah
Ain't going to happen. There is no real support for Go on Android at first
place, sure you can compile Go programs on Android , but that's about how
useful Go is on that platform. And frankly have you ever tried to write a
desktop app with a GUI in Go ? Because you'd know how painful it is.

~~~
SoreGums
The app I want to write is basically a service that just does stuff (with
files) based on signals from other devices/services. The UI is actually client
side webapp. So I was hoping to write the service bit in Go which then would
run on Linux, Windows, Mac, Android. Oh well.

~~~
xxgreg
Flutter is build on top of the mojo. This exposes IPC interfaces to the
devices. There are Java, Dart, C++, and I believe also go bindings for this.
Not sure if this is in a usable state - but worth a look.

[https://github.com/domokit/mojo/tree/master/mojo/go](https://github.com/domokit/mojo/tree/master/mojo/go)
[https://groups.google.com/a/chromium.org/forum/#!forum/mojo-...](https://groups.google.com/a/chromium.org/forum/#!forum/mojo-
dev)

------
idibidiart
"Unfortunately, due to iOS restrictions, updating your Flutter app over the
network is not possible. We are curious how much you use this feature, please
let us know at flutter-dev@googlegroups.com."

React Native 1, Flutter 0.

Same for use of OpenGL ES.

Same for use of the phone's native UI components.

Dart?! Really?

~~~
untog
I'm not sure how long Apple will let the current situation stand. As it is,
developing with React Native is more flexible than with their own frameworks,
which I can't imagine they're too happy about.

~~~
idibidiart
Not according to this account:

[https://www.quora.com/What-does-Apple-think-of-React-
Native](https://www.quora.com/What-does-Apple-think-of-React-Native)

------
elcct
"scalable language" but is it web scale? ;)

