Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's pretty fascinating how tech tends to spread and influence. We spent years trying to make the web more like traditional UI dev, and now we're making traditional UI dev like web. I would never have believed this if you'd told me about it in 2010.


> and now we're making traditional UI dev like web

It's been like that on Windows since 2006 with XAML. In fact, if you squint at typical JSX, it looks like XAML.

Disclosure: I work at Microsoft.


XAML is a template, JSX is a DSL. A template kills scope, duplicates coding semantics, messes up app flow with bindings and needs dependency injection to get local scope back - all of this has been solved with JSX, which now pretty much fulfills Silverlights dream: https://news.ycombinator.com/item?id=16198843

The crazy part is, that you can share code and eco-system components among these targets, no matter if they're native or otherwise. Here's a shell applications for instance that uses react-motion to shift stuff around: https://github.com/gaearon/react-blessed-hot-motion

Microsoft seems heavily invested in it as well (react-windows, reactXP, UI-fabric, ...).


XAML components ("controls" in MS terminology) contain both declarative markup and code. And it's flexible because the visual presentation can be completely overriden by the component's consumer without altering behavior, and your code can be either C# or C++.

What does dependency injection have to do with anything? There's nothing stopping you from using global variables or an event bus or something like Redux in a XAML app.


Or across multi-platforms with XULRunner from 2006 to 2015.


RIP...


Plus ça change...


Or MXML, which most certainly was influenced if not entirely derived from XAML. Everything old is new again!


I’ll put in a plug for my former employer’s OpenLaszlo, introduced in 2002 (preview) and 2003 (version 1.0).

OpenLaszlo was most immediately inspired by HTML and (for data binding) XSLT. I looked at Mozart for ideas on constraints, but we ended up rolling our own design — mostly because constraints were never supposed to be a feature, so they were designed and developed incrementally, in discretely releasable baby steps.

Adobe did due diligence of the company sometime around 2002-2003 too, but that deal fell through. An Adobe PM also signed up for our beta program, initially under a pseudonym, but he eventually came clean. I’ve always been curious whether Flex/MXML was related to either of those encounters.

[1] https://en.wikipedia.org/wiki/OpenLaszlo

[2] https://ssl.weepee.org/lps-4.6.1/docs/developers/program-dev...


I played with OpenLaszlo way back then. It was pretty nice.


Adam Wolff, former Chief Software Architect of Open Lazlo, is now the Director of Product Infrastructure at Facebook, and oversees React and React Native.


Adam developed the initial runtime implementation of data binding and constraints — with additional help from Max Carlson, and, later, P. Tucker Withington and Henry Minsky — while I did the compiler work and language design[1][2]. Adam et al wrote the runtime constraint resolution mechanism, which initially had an API for the procedural creation of constraint graphs. I was trying to make constraints and data binding look like JavaScript expressions, that were automagically recomputed when a subexpression value changed, by extracting dependency graphs from the source and packaging them for runtime use. (All this on the Flash 5 bytecode interpreter, which was slow as the dickens, even for the time — so there was a lot of optimization: in the compiler, in the runtime, and in the interstices. Although nothing like we did later for [3].)

This was the bottom of a slippery slope, where the designers and developers using the platform were exploring the kinds of applications it was possible to write (single-page web applications were relatively new in the early oughts — except for some pioneering Explorer-only DHTML work by Microsoft, which we should have looked at but didn’t — and we were all making up interaction patterns and software design idioms as we went along), and we were adding the platform features to enable some capabilities and golf others.

For a while Adam ran Laszlo’s Professional Services. He succeeded me as CSA when I left Laszlo.

It wasn’t Flex/MXML or XAML that killed Laszlo/OpenLaszlo, it was IMO first-gen dynamic frameworks such as Prototype and Scriptaculous, that could be gradually integrated into a page without placing a big rewrite-your-app bet. Also that we were about a year late in adding HTML as a second back end. (HTML wasn’t sufficiently standardized or practical to use for cross-browser single-page applications in 2001 when we started work on the Laszlo platform implementation, but it was by 2005-6.) Or, closer to the root cause: sales and strategy issues that made it difficult to keep investing much in the platform once it was starting to get traction; the product feature omissions are how those resource constraints played out.

[1] https://patents.google.com/patent/US20050039165A1/

[2] https://patents.google.com/patent/US20050038796A1/

[3] https://patents.google.com/patent/US20050114871A1/


Yeah the Silverlight vs Flex days of 2006ish really inspired this quite a bit.

Today Xamarin does all this pretty well cross platform, desktop and mobile for UWP/Mac and iOS/Android.


And TypeScript is the new ActionScript.


I've been using XAML at work recently (.Net 4.6) and I've got to say Microsoft did an excellent job.

The databinding approach is both elegant and familiar.

It certainly does look a lot like Vue Single File Components if you squint.


If you squint at JSX it also looks like JSP…


I refer to JSX as client side PHP.


I think that's unfair to PHP.


If only MSFT hadn't burned all their hacker bridges with anti-trust behavior in the 90s.


Xamarin does this pretty well cross platform as well.


Come on... That's not fair on XAML


or windows dialog RC files


UI seems to be effectively described using some sort of a markup language. HTML being the most well-understood markup language becomes a reasonable thing for stuff outside just web pages. It isnt perfect but it gets the job done. Sorta like phonegap :/


Thing is that these days HTML is a pile of div tags that CSS and JS dangle off.

Damn it, didn't we just have an article on HN about creating art using CSS?!


Indeed. A part of me is sad to see the semantic vision of XHTML lost in the mix. Though with care HTML5 can be more descriptive than its predecessors.



Writing React makes me feel more like building for web using native paradigms.


And yet there's not much that's like native GUI paradigms in React.

At least when concerning all major GUI libs.

It's more like a markup driving an immediate-mode graphics API.


You basically just described Google's Flutter framework. It's currently only mobile but I see it moving into this space at some point - or already is I guess if you count Fuschia.


You can get it working on Desktop (I've got it on Windows with the help of https://github.com/ds84182/flutter_sdl and few other hacks, but certain things are missing - there is no support for mousewheel events, docking, or more than one window. Or keyboard input (though that should be easier to add than the three listed).



Thanks! Now I have something else to play with.


Components make me think in term of OOP.


ColdFusion, Flex, XAML, JavaFX




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: