ING open-sources Lion, a library of accessible and flexible Web Components
medium.com
medium.com
Many hundreds of web developers at ING use it for their projects, and all active web development is using powered by it. Lion is a core component of our web strategy. At this time, over 10 million customers are using products built with it, on a daily basis.
I have a simple giro account at ING and just would like to query the balance regularly with a script. Nothing fancy at all. Is there some API you offer? I've seen your website https://developer.ing.com/ but it seems that developer access is only intended for developing activities and not intended for "productive" usage, even if it is with the giro bank account of the developer.
As far as I know it is currently difficult to get API access as an individual. The APIs are available to third party developers as is required by European regulation, but they have to go through a procedure to receive access to production data.
We have several teams working on improving our open APIs, including availability. If you reach out to me by email I will ask one of the teams and let you know when we expect to be able to offer what you're looking for. You can find my email in my profile.
Do not hesitate to post this question/request as a suggestion on the website, https://developer.ing.com/openbanking/support
You can check if your bank is supported here: https://myponto.com/en/reach
Check the API docs here: https://documentation.myponto.com/api
I think it's a really interesting approach, and has the possibility to be a Bootstrap-like foundational layer.
I work on lit-html and LitElement, which Lion uses, and we're working on new userland theming systems (and standards too) that will make using and theming a set like this easier.
What if a developer copies&pastes some GPL code? What is some open source dev work gets done on a big project billed to a client? What if an external contributor contributes some code that gets merged, but it turns out to contain an obfuscated backdoor and this ends up inside our online banking apps? What if a company uses our open source code and it's broken and they sue us? (they'll have no leg to stand on, but it's still a worry for management not used to open source).
Really there are all kinds of complicated stories (sensible and not) about ownership and responsibility that need answering before an organisation like this will give off the green light to publish open source. I bet this was not a few developers asking the boss and the boss going "oh yeah sure, go ahead". Hats off.
It wasn’t a surprise that we couldn’t open source some of our stuff “because security”
So yeah, good to see this sentiment is changing
We finally get the go when we cornered an exec during an off site event and he finally agreed to let us do it.
Big company are unfortunatly not ready by default to contribute back, it s not in the culture, and you get pushback from internal IT team thinking the code / architecture / documentation is not good enough yet to open source (hint : it never is) once you have clear the compliance / legal / branding / security side of things.
Hats down for the tech lead / dev / manager that convinced ING to open source this one. I hope that getting in front of HN will allow the dev team to get a little more budget to maintain this project a little longer.
I'm honestly asking, I'm curious how people do the cost/benefit analysis for things like this.
Also as an internaly, explaining this project have N star buy you political capital and facilitate access to extra funding to pursue the project longer.
Another example: JPMorgan Chase: https://github.com/jpmorganchase
My point is that as soon as you introduce a build process, imported dependencies, etc. then you might as well just use React components. The power of web components is that you can just drop them on a page and use them with zero dependencies or proprietary APIs to learn.
Imho scoping elements at the template/element level sounds more promising. Here is an experiment archiving exactly this https://open-wc.org/scoped-elements/ There are still some improvements to be made but it's actively been worked on - so something lion might consider in the future.
> Synchronizing updates of shared dependencies - e.g. make sure Team Blue & Team Green always use the same version when releasing. This can be a viable solution however it comes with a high organizational overhead and is hard to scale up (for 10+ teams)
1. Load the definition
2. Create an element with any DOM API or HTML.
Nothing about web components says you shouldn't use dependencies or build steps.Anyone from ING present who can share whether this is still the case?
I come from python world where you have same restriction for all packages so it never occured to me as a serious problem :) We just pin ranges in libraries. And application itself pins specific versions in place.
* They build it for internal use, primarily
* They use it for advertisment (hey ING bank would never be mentioned here otherwise)
* They can eventually use it for recruiting (send high quality PRs, they might like you)
* If they are lucky they get cheap bug fixes (not free, as review and community work costs time)
Here's the documentation and source code of my old jQuery pie menus, which are getting pretty long in the tooth, and which I need to reimplement as Web Components in TypeScript.
https://donhopkins.com/mediawiki/index.php?title=JQuery_Pie_...
https://github.com/SimHacker/jquery-pie
The challenge is how to design widgets that developers and designers can easily skin, and totally customize the presentation and feedback by mixing and layering different technologies (like css, html, canvas, and WebGL, for example), independent of the tracking behavior.
And how to design a complete set of callbacks and tracking notifiers and hooks that enable developers to provide rich feedback that's deeply integrated with their application (like drawing the feedback based on application state, or previewing the effects of the pie menu gesture in the app, while the menu is still tracking).
You can do some kinds of simple styling with CSS, and more kinds of deeper designs with html templates, and all kinds cool customization with JavaScript code and dynamic HTML.
And you can define and configure trees of menus/slices/items with JSON, XML, or HTML structures, including graphical and layout properties, and event handlers.
Or you might want to procedurally draw some or all of the widget with a canvas (while using html text for the labels, which is much easier to deal with and more accessible than drawing text in a canvas).
Or you might want to draw the menu items or background or even the labels in 3D with WebGL.
How can one web component handle all these different ways of mixing and matching rendering and feedback?
For example, these Unity3D pie menus can display text and image feedback in the 2D overlay, mixed with 3D objects (drawn in an overlay camera, not actually drawn directly in the world, or objects in the world would occlude them).
https://www.youtube.com/watch?v=sMN1LQ7qx9g
>Unity3D Pie Menu Demo: I've made a general purpose pie menu component in C# for Unity3D, which supports text items, image items, and 3d object items too!
Another hard question is how do you define and configure these widgets? There's a whole spectrum of different people with different use cases, from downloading dynamic JSON menu trees from a web server, to writing annotated html trees that degrade gracefully to usable menus with JavaScript disabled, to building and styling menus in an interface builder at design time, to procedurally generating them with an api at runtime, to integrating with an existing tool's editors like Unity3D at authoring time, or even to enabling game players to build and customize their own menus at playtime.
The Unity3D editor makes it possible to construct trees of menus/slices/items out of 3d objects in the world, and edit their properties with custom editor control panels, and configure callback handlers that can modify the menus and 3D objects during tracking to provide feedback. (Like making the 3d menu items spin and scale and fly around, or mapping your face from the camera onto a mesh in the center of the menu, and tilting the mesh in the direction of the selected slice, to simulate the pie menus in The Sims.)
The Coral Menu and Trace Menu from Simon Schneegans’ Bachelor Thesis are perfect examples of the kind of fluid dynamic layout and feedback that I'd like to implement with HTML components and the canvas 2d api:
>The Coral-Menu
>The first prototype is targeted at users who often search for items due to their manifold menu usage. It displays hierarchies with ease. Even very deep hierarchies are easy to explore. Many items are displayed by increasing the pie’s radius and stacking the labels which are displayed next to their sector on top of each other. The following clip demonstrates the behavior. As you can see, the items of sub-menus are indicated by little dark blobs at their parents. This menu is quite fast to use because of the mouse making a smooth movement.
>The Trace-Menu
>The second prototype addresses itself to users who often make use of the same menus. Thus they know where to find an entry and want to select it blazingly fast. In contrast to the Coral-Menu each sub-menu is a complete 360-degree-Pie-Menu with one entry being the parent menu. The hierarchy is visualized by a path between the visited menus. This menu features a so-called “Marking-Mode”: The user may draw the path (the “trace”) to the desired entry with one continuous gesture. Watch the following clip and you will understand this behavior — the Marking-Mode is used for the very last selection.
Apparently there were N web component libraries but none of them were just what ING wanted, so now there are N+1 web component libraries.
Also note that I'm not "blaming" anyone; just explaining why it's not worth it for me at this point in time to adopt Web Components in my React applications. I very much like the idea of Web Components no longer making us reliant on the web standards process to finally add things like date pickers or typeahead components, but I just don't think it's there yet.
All N component sets usable in any app, w/o respect to some would-be-platform. Nice problem to have.
React and friends are looking more and more like oversized polyfills, every day.