Overture JS – A powerful basis for building web applications
41–50 of 58 posts
Re: Overture JS – A powerful basis for building web applications
#42You are about 5 years late. Please add more to your link page. Its not like you are talking to an uninformed commuinty
Re: Overture JS – A powerful basis for building web applications
#43This is such bs snake oil.
Re: Overture JS – A powerful basis for building web applications
#44Re: Overture JS – A powerful basis for building web applications
#45Earlier quoted context omitted.
Have you used Fastmail? The UI is definitely on par, and probably faster, than my OS's native apps. I've long wondered how they do that, now I know.
As a FastMail user, I must say the UI startup time is painfully loooong ...
I believe network latency is the largest factor in the current slow startup; I imagine it’s a second or more faster in the US than it is in Australia or Spain.
Re: Overture JS – A powerful basis for building web applications
#46https://github.com/fastmail/overture/blob/master/source/foun...
Or better, 'Class':
https://github.com/fastmail/overture/blob/master/source/core...
JavaScript has classes! What are you doing?
Re: Overture JS – A powerful basis for building web applications
#47I’m presuming Overture has come up today because of its mention in our blog post yesterday, https://blog.fastmail.com/2017/12/18/using-the-modern-web-pl....
# Concerning the status of Overture:
I’ve been doing much of the maintenance work on Overture in recent months, involving things like updating the code style to use modern techniques (e.g. ES6 modules), and updating the build process to use more standard tools rather than a bunch of cobbled-together scripts and a makefile. (The tools directory contains various scripts of this nature used in the Topicbox and FastMail build processes, things like the C-style preprocessor of ifdef.js, and the localisation-handling functionality of localise.js.)
At this stage, the first phase of improvements are finished in Overture, and steadily progressing in Topicbox; for FastMail they’ll come next year; but as part of this, things like the documentation builder got mostly broken, and I haven’t fixed it in any way yet. (It’s a fair way down my list.)
We’ve been neglecting overturejs.com while making all kinds of changes, because we’re the primary user of Overture. When things settle down again, we’ll make sure things are updated (for our own sakes, if for no one else!). That will entail comparing it against other current libraries more as well.
I’ve been playing around with a few more experimental things, too, such as replacing the get() and set() methods with property descriptors. I have a working prototype, but some aspects of it are moderately complex to make work everywhere. This has been a common pattern with data-binding libraries: they all started with get() and set() methods (provided they’re old enough; some new ones come out now without needing it), but eventually switch to using property descriptors. Or proxies in at least one very recent example (their main benefit is allowing indexing of array-like objects without using a special method, ours being getObjectAt). Browser support and performance are the foundation of any such decisions: property descriptors are ~IE 9+, while proxies are recent-any-browser-except-IE. At FastMail, we currently mostly support IE 8+ and fully support IE 9+, but plan to drop IE ≤ 10 next year which will allow us to depend on property descriptors and the likes in Overture.
Another piece we’re playing with is moving more of the layout out of JavaScript (for historical and browser support reasons, it prefers a fair bit of absolute, precisely calculated positioning) into CSS.
# Concerning Overture versus other libraries like Ember, Vue and React:
Overture is essentially a full-stack framework. It’s thus decidedly heavier than options like Vue and React, but it includes a lot more as well—good support for localisation, dealing with dates, a solid data store with committing, undoing and more, intelligent handling of keyboard shortcuts (e.g. add `shortcut: 'Cmd-g'` to a button view, and ⌘G on Macs and Ctrl+G everywhere else will Just Work™), that kind of thing.
Overture doesn’t use a virtual DOM like React and Vue; it works directly with the DOM. Data dependency tracking is done with precise knowledge of which properties things depend on (its model is inspired by things like SproutCore—people that have worked with such a model will feel right at home).
Altogether, these things mean that Overture is typically harder to work with and more verbose than React or Vue, but so long as you’re sensible, it’s much more efficient.
Oh, and the state of Overture documentation means that unless you can spend a few days with Neil (who wrote it all in the first place) or me to work through things you’re likely to find Overture even more difficult to work with.
At present, the annotation of data dependencies is a little odd, blocking `{ foo () { } }` object shorthand:
const NameView = new Class({
Extends: View,
firstName: null,
lastName: null,
name: function () {
return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName'),
});
(This is the main thing that blocks shifting to class syntax wholesale, which is one of my experiements—not that it has been clearly and unambiguously determined that class syntax is superior to our current approach.)One of my experimental pieces (well, a combination of a few experiments) heads in this kind of direction:
class NameView extends View {
firstName: string;
lastName: string;
@property('firstName', 'lastName')
get name (): string {
return `${this.firstName} ${this.lastName}`;
}
}
We’ll see how it all goes.One last thing: Overture’s data store model is more conducive to offline support than most; combined with JMAP, we’re expecting implementing very robust offline support for FastMail and Topicbox to be fairly straightforward. (By “very robust”, I mean the robustness of a desktop email client, where you never expect anything to go wrong, as distinct from normal web apps which try to add data persistence on top of what they already have, which are hit and miss, mostly miss.)
Re: Overture JS – A powerful basis for building web applications
#48Anyway, a few quick points. Overture is the basis for both the FastMail (https://www.fastmail.com) and Topicbox (https://www.topicbox.com) web apps and really does provide a great basis for building large, performant rich applications. However…
I do not recommend other people user Overture directly at the moment (although you might like to look at the code base for some useful ideas you can steal). We don't currently have the resources to build all the documentation, tutorials and other resources needed to build a community around it, and with that in mind we are currently not committed to non-breaking changes or semantic versioning (we can update our own apps at the same time as any breaking change). We originally open-sourced this when we were part of Opera, mainly so that if we parted ways and needed to build something new, we could still reuse all this code (it couldn't end up as proprietary Opera code!).
I'm happy to answer general questions here however if people are interested.
Re: Overture JS – A powerful basis for building web applications
#49My favorite red flag, a class with a name as generic as 'Object', indicating the ultimate not-invented-here case. https://github.com/fastmail/overture/blob/master/source/foun... Or better, 'Class': https://github.com/fastmail/overture/blob/master/source/core... JavaScript has classes! What are you doing?
So this ain’t NIH; it’s a legitimate and very popular architectural pattern.
On a more flippant note: the name Object is a bit unfortunate due to its collision with the builtin global Object; we used to write `O.Object` everywhere, but now we’re using imports for such things we’re calling it Obj everywhere else, so I intend to rename it to Obj altogether one of these days.
For Class: yes, JavaScript has classes now. It didn’t five years ago. On of my experiments involves removing the magic from Class (moving it into the Obj constructor), leaving it just a shell, with class syntax available for use. But even then, class syntax isn’t perfect; prototypal inheritance is really pretty cool and lets you do some very nice things that class syntax doesn’t let you do (I’m planning a conference talk about prototypal inheritance, including some of Overture’s magic that is possible because JavaScript uses prototypes rather than classes); because of that, we may not adopt native class syntax.
Re: Overture JS – A powerful basis for building web applications
#50Earlier quoted context omitted.
I believe files can be accessed by Webdav https://www.fastmail.com/help/files/davnftp.html
thats good to know, i wasn't aware of that. the named problems were just examples though... there are sadly others. * Right-click isnt implemented. * Switching to their embedded DNS service pushes your whois information to the whole web (pretty much every other dns service hides it behind anonymized contact information) * adding external mail servers (i.e. fetching mails from old gmail or hotmail.com account) constan…
Whois and DNS are two different things; whois information comes from the registrar; DNS providers have no control over whois records.