FOAM: New JavaScript Framework by Google Engineers
145 points by oscarfr 10 years ago | 109 comments- jasim 10 years agoThis is a bold take on a problem that a lot of people have written away as reinventing the wheel. But color me impressed!
Unlike almost every other Javascript framework we've so far seen, FOAM makes the data model the primary entity in the system, which is a good idea. In the typical UI-driven development of web applications, the data model often gets modified without much thought and causes cascading complexity across the rest of the system. A lot of the convoluted UI code that I've written could've been kept simple by keeping the data model sane by finding and utilizing equivalences, making implied meaning explicit by extracting names, and normalizing/denormalizing the data appropriately. A data-structure driven development approach should help a lot here.
FOAM also implements another item from my wishlist: being able to see all the UI representation of any given piece of data in one place. It achieves this by keeping all possible templates for a piece of data directly in its object. (http://foam-framework.github.io/foam/tutorial/4-templates/)
In general, this looks like the most declarative (as in, define your business requirements instead of writing imperative code) way of building web applications that I've seen yet. I would like to see what new ideas this library can bring into the 'Perfect UI Framework' conversation, but past experience makes me skeptical of any implementation that overly relies on metaprogramming. Metaprogramming can take us maybe 50% of the way home, but programming unfortunately is often an art in the minutiae. UI code is especially prone to this problem: things that have to deal with humans cannot be absolutely symmetrical all the time, which is where any overly declarative approach to building software breaks down. I often look back to this quote by DHH as a reminder of the dangers in generalization:
Also, template based UI frameworks are IMO a relic of the past, of which I'm convinced by the way templates are defined imperatively using code in React. In templating, the UI is a String, but UI should be Code because code is awesome.On the surface, the dream of components sounds great and cursory overviews of new projects also appear to be "a perfect fit". But they never are. Reuse is hard. Parameterized reuse is even harder. And in the end, you're left with all the complexity of a swiss army knife that does everything for no one at great cost and pain. - DHH ca. 2005
- richmarr 10 years agoI'd love to see a mature app written this way (and I mean that genuinely, without sarcasm) and look at their project timeline, war stories, etc.
My gut feeling is that the 'frameworks are for prototypes, libraries are for production' camp is closest to the money, but (a) I have no actual data and (b) different approaches to frameworks will have different outcomes.
- jasim 10 years agoI think UI programming almost always need a framework than a library, under these definitions of Library and Framework: Library = independent objects and methods that your code invokes; Framework = entry point to the app, controls the event loop that calls your code, and lets you hook into its lifecycle methods.
Under that definition, ReactJS is strictly a framework. But we tend to look at it as a library since unlike other monolithic frameworks (Angular, Rails etc.), it is quite small, composes well, and is not overly prescriptive.
While I don't think FOAM is the next-big-thing in Javascript frameworks (that award goes to React's component model), I am happy to see it focusing on the primacy of the data-structure and recognizing that good code flows from a good data structure. We can already use that philosophy in React by ensuring all components are annotated with propTypes, using a statically typed language (TypeScript), and clearly defining the API schema using something like JSON Schema (http://spacetelescope.github.io/understanding-json-schema/ab...).
- orbifold 10 years agoActually it can be feasible and quite convenient to have control over the event loop yourself, this is what immediate mode ui libraries and computer games are doing, in a way facebook's flux architecture plus react facilitates that kind of UI programming for the browser.
- orbifold 10 years ago
- kgr 10 years agoMy name is Kevin Greer, and I lead the FOAM project at Google. Answers in-lined below:
> a mature app written this way
I've added links a number links to FOAM apps for you at the bottom of http://foamdev.com.
We have a number of mature apps. QuickBug, which is a codesite issue tracker, is about two years old. MBug is a mobile version, is about a year old. The ChromeOS calculator was written last summer as a demo but went into production just recently. There's also a rough but working GMail client. The Chrome App Builder is also in production, but, unlike the other apps, isn't open-sourced. We also have a couple very large internal Google apps that I can't talk about.
> project timeline FOAM was started in 2011, and generated its first production code, in C++ and JS for Chrome, in early 2012.
> war stories
Here's one: https://docs.google.com/presentation/d/139TUw8tLtqRzFSHGoLTQ...
I have several others as well, but I would need to scrub them before making them public.
- kgr 10 years agoSorry, that link is broken. Here's a working one:
https://docs.google.com/presentation/d/1Ipt0hu2PHDgL8HCxkZN2...
The first part of the slides is on using the apps and the second part has a bit about how we developed it (but without speaker notes, it may not make a lot of sense).
- kgr 10 years ago
- aflinik 10 years agoJust compare number of well-known production apps written using React & Angular.
- jasim 10 years ago
- gasping 10 years agoBold, and beautiful!! Quick everyone, scrap all your existing frameworks and jump on the flavor of the week!
Seriously though, I think it's borderline negligent to contribute any kind of hype to new javascript frameworks considering they are spraying out into the ecosystem like a broken fire hydrant. New javascript frameworks should be met with extreme skepticism, if not indifference, if we want this industry to be anything more than a joke.
- Cshelton 10 years agoIsn't that progress though? How else would we figure out a better way to do things if not to see how others are doing it. Many times a framework is, 'Here is how we've been doing things on our team, check it out! It might be useful to you as well."
Then others pick up on those ideas and so on and so forth. They don't simply sit there and say.."oh well...we should make our own framework because we don't like the ones that exist and want to make this industry incredibly difficult." No, most frameworks that have been released, especially ones that have been worked on by many people, have a purpose...a way of doing things different, that those team members like. If you don't like the way they have come up with...you don't have to use it. That's the beauty of it. There are many ways to accomplish front end development. Even in my case, if I don't want to use it ever, it is still benificial to see how others are doing things because you can take bits and pieces of their ideas and use them. Id' like to see more well thought out frameworks.
This "we have too many frameworks" crowd always post the same comments every time a framework is announced. It's becoming tiring hearing from you guys. Nobody is forcing you to use a framework... It's literally the same as saying.."we like how we did things 5 years ago, and we never want to change."
Welcome to the wild, wild, west of web innovation. If you don't like constant change, this may not be for you.
Pro Tip: If you learn JavaScript first and not a framework, adopting new frameworks can be done very fast. I find most of the people who post and cry about there being a new framework are the ones who don't really know JavaScript.
- narrowrail 10 years agoIt looks like this framework goes back ~3 years. So, why would you consider it the 'flavor of the week'? Because someone posted it to HN? That doesn't seem to be much of a threshold. Also, it looks like this framework could be of use in other languages aside from javascript.
- kgr 10 years agoIt was started in 2011, and can be used to target any language. It was first used to generate C++ and JS code in Chrome in early 2012. It is a Framework written in JS, not specifically a JS Framework.
I lead the FOAM project at Google.
- ben336 10 years agoIt was just publicly announced this week.
- kgr 10 years ago
- Cshelton 10 years ago
- richmarr 10 years ago
- seizmo 10 years agoOne thing you notice right off the bat: Its very slow. It takes about 2s on my machine to load the TodoMVC example. Thats about as long as it takes to load my GMail inbox. Thats pretty horrible for whats supposed to be the "Hello World" of JS frameworks. I didnt dig in what actually takes so long, but it seems like it has still some way to go.
I find it interesting that after Angular this would the second (3rd if you count GWT) JS framework released by Google with pretty bad performance characteristics (if it actually is made be Google).
- kgr 10 years agoIf you load it off of the TodoMVC site, it loads much faster than the AngularJS version. If you load it from GitHub then it is slow because that isn't a packaged/built version (it's just loading directly from the repository) and is loading all of the individual models separately. We have a 'BuildApp' tool which can package applications for production, which doesn't happen when you load directly from GitHub.
FOAM doesn't require a build step, which is why it can be run directly out of the Git repository, but that method isn't representative of production performance.
- morenoh149 10 years agoIt reminded me a lot of R shiny clunky apps. But the goal is "fast apps fast" so yeh.
- raggi 10 years agoTry it over SPDY/HTTP2 and you'll have a very different experience.
- stereosteve 10 years agoYeah, based on the Chrome network panel it is loading all the unminified view files separately. They should definitely combine and minify all the files to prevent a bad first impression.
- kgr 10 years ago
- yedpodtrzitko 10 years agoI use Google's Javascript framework. GWT? No, the other one. Polymer? No, the other one! AngularJS? No, the other one!!
- currysausage 10 years agoClosure Library?
- thanhquanky 10 years agoNo, the other one!
- bradly 10 years agoGoogle Gears?
- bradly 10 years ago
- thanhquanky 10 years ago
- ahoge 10 years agoGWT is a set of tools which allows you to write JS front-end applications in Java.
Polymer is a library for creating Web Components.
- currysausage 10 years ago
- jreimers 10 years ago> FOAM is a full-stack Reactive MVC Meta-Programming framework.
Inevitably reminds me of this: http://html9responsiveboilerstrapjs.com/
I understand MVC, but what is reactive meta-programming exactly?
- tim333 10 years agoSimplifying -
Reactive:
The display automatically changes when some data changes
eg http://foam-framework.github.io/foam/foam/index.html?model=f...
the one clock moves when you move the other
Meta-programming:
The writing of computer programs with the ability to treat programs as their data. Examples of meta-programming include Lisp-macros and C++ Templates. FOAM does this through code-generation, but for Javascript, it does this mainly by dynamically creating prototypes as maps of functions.
The above is a bit cut and pasted - I have not fully figured what FOAM does
The reactive bit is quite cool in Meteor.js because if you change something in the database then any page displaying it updates on all clients simplifying things like chat apps. I have not figured if FOAM does that of if the "full-stack" bit includes the server side and database code like it does on Meteor. Anyone know?
- nthcolumn 10 years agoIt is very 'batteries included'. The demos use data islands and localstorage. You'd hook your DAO to something like Firebase instead. The Tutorial has a bug where it refers to DetailView it should be foam.ui.DetailView or something like that.
- nthcolumn 10 years ago
- tim333 10 years ago
- Rifu 10 years agoDoesn't seem to actually be by Google. Perhaps the title could be changed to "by a Google Engineer"?
- tomdale 10 years agoI was at EmpireJS where this was announced and they said they had a team of Googlers working on it, and showed a few production Google apps built using it.
- ahochhaus 10 years agoInteresting. Can you offer any details on which production Google apps were presented?
- ahochhaus 10 years ago
- hosay123 10 years agoThey probably have rights to the project under the respective contracts they have with the employees. That aside, having "<new project> by ((Google(|rs))|<$big_corp>)" in the title has generally been a reliable filter for projects that do not stand on their own merit, and this one seems to be no exception.
- justthistime_ 10 years agoExactly.
Everyone should ask himself/herself "would this be newsworthy if they didn't name-drop Google?".
- insin 10 years agoAs an experiment, I deliberately avoided adding "by Google" or similar when first submitting FOAM to HN while it was being tweeted about after yesterday's EmpireJS talk: https://news.ycombinator.com/item?id=9442943
Over on /r/javascript, my plain titled link has 2 points/23 comments while the "from Google" submission has 44 points/65 comments.
Not of much use for direct comparison purposes (GitHub repo links vs. project site links, different times of day, weekend vs. weekday etc.) but mildly interesting.
- insin 10 years ago
- justthistime_ 10 years ago
- kgr 10 years agoFOAM is built by five Google engineers who are paid by Google to work on it full time. It is a Google "project" but not a Google "product".
I lead the FOAM team at Google.
- Bahamut 10 years agoCheck the COPYRIGHT file in the repo.
- tomdale 10 years ago
- forgottenacc56 10 years agoJust today I was thinking "there's not enough ajavaScript frameworks.", and BANG! Google solves my problem. Nice.
- peeyek 10 years agoI'm not sure this framework is endorsed by Google. I can't find "by Google" on the home page nor about page.
- hackerboos 10 years agoTwo of the authors work at Google. I think you are right though, this doesn't look like an 'official' framework.
- peterhunt 10 years ago
- hackerboos 10 years ago
- thomasfl 10 years agoIt's about time more people starts using ES6 class constructors instead of rolling their class definition hack. This is how it's done in the calculator demo:
With babeljs you can use ES6 syntax like this:CLASS({ name: 'Calc'
class Calc { }
- miralabs 10 years agoCrockford talks about the bad features added to ES6, one of them class which he said is most requested by Java developers programming javascript.At the end of the talk he show way how to move out of classes/new in javascript https://www.youtube.com/watch?v=PSGEjv3Tqo0&feature=youtu.be...
- Demiurge 10 years agoCan you give a short gist of why they're bad and why should one move out of classes/new? What is the alternative?
- davej 10 years agoFrom the video:
function constructor(spec) { let {member} = spec, {other} = other_constructor(spec), method = function () { // accesses member, other, method, spec }; return Object.freeze({ method, other, }); }
- miralabs 10 years agoits mostly because of 'this' . as per the example above, you can prevent this by doing something like that.. freeze/seal
- davej 10 years ago
- Demiurge 10 years ago
- miralabs 10 years ago
- rattray 10 years agoFive clicks in and I'm still not sure what it really is/does...
- insin 10 years agoThis presentation might help a bit: https://docs.google.com/presentation/d/1KQkRJOiEBDktgFSa3qle...
There is so much stuff in the source tree - including what looks like a complete UI layer - that I'm having a hard time grokking it from that direction.
Phrases like "can be used to generate code for any language or platform" and "FOAM is “written in itself”" make me want to understand what's going on first and how it solves whatever problems it sets out to solve rather than trashing it out of hand based on initial aesthetic impressions.
- insin 10 years ago
- glutamate 10 years agoOn the demos page
http://foam-framework.github.io/foam/foam/demos/DemoCat.html
All the links to "Source" take me to GitHub 404.
I would suggest this is the most important part of showcasing a new project.
- michaelx386 10 years agoUntil this is fixed, the source files for the demos are available here: https://github.com/foam-framework/foam/tree/master/demos
- michaelx386 10 years ago
- tacone 10 years agoIt does not seem a new thing, rather an old one just migrated it to Github.
It has 8,474 commits. The first commit (and also the first issue on Google code) dates back to Jul 30th 2012. And it was just the first public release, not an empty commit (43 files).
(first issue: https://code.google.com/p/foam-framework/issues/detail?id=1 )
- blitzprog 10 years agoRegardless of how good it is, the presentation could and should be improved. Quick to grasp examples, an explanation telling me which problems this project solves and as a bonus how it compares to other frameworks. All of this should be on the GitHub readme frontpage. Poor presentation is like a 0.01 multiplier for your amount of potential users. It's easy to avert your eyes from this but it's almost as important as the quality of the product itself.
- some1else 10 years agoA first glance of the docs I see the components aspire to a declarative style (being defined entirely in JSON). I'm wondering though, why not use composition[1] instead of inheritance? I need to take a better look to see how view composition would work in FOAM.. But I can tell from experience with Backbone, that using composition instead of inheritance improves code structure and increases maintainability. If composition was a first-class construct (like they made extendsModel), it would get a lot of issues out of the way.
[1] http://en.wikipedia.org/wiki/Composition_over_inheritance
- EugeneOZ 10 years agoActually it's one of their principles: http://foam-framework.github.io/foam/principles/#composition...
Currently all I see in demos is lonely rendered "f" symbol and slow as hell loading... https://github.com/foam-framework/foam/issues/295
- EugeneOZ 10 years ago
- staltz 10 years agoThey say it's reactive, but this is how they explained "reactive": https://foam-framework.github.io/foam/foam/apps/overflow/Ove... and https://github.com/foam-framework/foam/wiki/KeyConcepts#reac...
- exit 10 years agolooking at the todo example, i was perplexed by the way templates are inlined through comments:
https://github.com/foam-framework/foam/blob/master/apps/todo...
it led me to discover that the full text of a function can be reflected through .toString() ...
i'm not sure i'd be happy to see this approach widely adopted though. it feels like a language hack, like maybe js needs a multiline literal string..
- MrBuddyCasino 10 years agoIn case this is not already widely known, ES6 has that:
var multiline = `line 1 line 2 line 3`;
- realityking 10 years agoEcmaScript 6 has got us covered: https://developer.mozilla.org/de/docs/Web/JavaScript/Referen...
- MrBuddyCasino 10 years ago
- nicksellen 10 years agoUse of ES6 classes would have been nice and I'd prefer to work with simple javascript objects to hold data vs rich model objects (http://foam-framework.github.io/foam/tutorial/2-model/).
I don't think this is the framework for me.
- bootload 10 years agointeresting look, example documentation a bit spotty (pages missing eg: http://foam-framework.github.io/foam/foam/demos/ & others), rest of the docs ok.
What do I see? It's language centric, that's good and bad. The good bit is you can with a very small JS lib write code to generate a dynamic page. The bad bit: as the language grows and rusts, you have to chase down the removed features. Much easier to grasp in concept and execution than Angular.
Loved this bit in the calc demo source, testing: https://github.com/foam-framework/foam/blob/master/apps/acal...
Q. Is foam an attempt to create a framework for Mobile Apps?
- tn13 10 years agoAnother "higher performance" framework! At least dont throw these phrases around.
- kgr 10 years agoWe have benchmarks (using queries extracted from real Google apps) that show that our query-optimizing caching layer speeds up IndexedDB performance by a factor of 100.
See: https://github.com/foam-framework/foam/blob/master/demos/pho...
Also, load the Empire.js presentation and then press the '+' button on the bottom right. This will load and run all 25 slides at once, at which point you'll have over 20k data-bindings, both one- and two-way, 7k objects, 6k of which are currently being animated.
See: http://foam-framework.github.io/foam/foam/index.html?model=f...
We are capable of handling this many data-bindings efficiently because we don't rely on a digest/diff cycle. Since we generate the JS prototypes from our models, we are able to install hooks into the generated property getters and setters so that we can receive update notifications.
Also notice that our GMail client can perform searches on the keystroke.
I lead the FOAM project at Google.
- kgr 10 years ago
- kgr 10 years agoVideo of the FOAM Empire.js presentation is now available at:
- wanda 10 years agoSeems similar to this: http://jsblocks.com
- pekk 10 years agoWould someone mind very simply explaining how this relates to (or differs from) Angular?
- electic 10 years agoIt seems every week there is a new javascript framework.
- matthuggins 10 years ago
- matthuggins 10 years ago
- brianhama 10 years agoThis sounds a lot like Microsoft's TypeScript.
- nthcolumn 10 years agoGood God it's beautiful
- venomsnake 10 years ago> FOAM is a full-stack Reactive MVC Meta-Programming framework.
5 years ago I would have thought that this would have been the title of the tech section of Onion article ...
- ziel 10 years agoheh. I had a similar reaction.
These links (below) are a bit clearer, imho. The project actually looks pretty interesting, but the readme in the repo isn't as convincing:
http://foam-framework.github.io/foam/about/
http://foam-framework.github.io/foam/tutorial/0-intro/
Edit: formatting
- 10 years ago
- debacle 10 years agoWhat I'm wondering is if it's better to be reactive or responsive.
- debacle 10 years ago
- 10 years ago
- reitzensteinm 10 years agoWell I'll sheepishly raise my hand and say I don't have a bloody clue what the sentence is trying to say.
Individually, the words make sense, but after trying to parse the combination I feel like I have less information than when I started.
- ionwake 10 years agoThis read like something From THGTTG
- ionwake 10 years ago
- reitzensteinm 10 years ago
- ramblerman 10 years agoAnd hackernews wasn't full of snarky one liners. Did you even read further than that before you just had to get your comedy 'out there'?
- venomsnake 10 years agoI did. After reading the whole page I was not able to determine what it does ...
Edit: Also 5 years ago HN was even fuller with snarky one liners and eyebrow dismissals.
- ramblerman 10 years agoMy apologies. I had a knee jerk reaction to what I though was wanton pessimism.
Having read the docs now I'm more inclined to subscribe to your initial onion theory.
- ramblerman 10 years ago
- venomsnake 10 years ago
- ziel 10 years ago
- plainOldText 10 years agoOh boy, yet another JavaScript framework. Colored me unimpressed; angular, backbone, ember, angular 2.0, react, etc. I feel like they're just reinventing the same wheel with a different spin. I wish people would actually spend their time creating a really revolutionary "framework" instead, better yet a programming environment, which would redefine how we write web programs.
I'm envisioning a way to create software, where while having a conversation with another person, we could collaboratively draw some shapes on the screen, connect them, then my program comes to life, evolves, scales up, scales down, etc.
I believe programming should not be an endeavor accessible only to those adept at manipulating text files. Telling computers what to do should be for everyone.
- tptacek 10 years agoIt's frustrating that this is the top comment on the thread, because it could have been written without reading anything about this Javascript framework.
Ironically, it's exactly on stories like these --- new Javascript frameworks, CSS templates, and the like --- where in-depth HN comments are most useful. I clicked the story, read it for 2 minutes, thought "you know, the top comment on the HN thread for this is probably going to tell me all I need to know about this framework", and instead found your comment.
- matthewmacleod 10 years agoOh boy, another complaint about having a diversity of tools available.
You're not really contributing much here, and it's a frustrating attitude to see. We're still in the relatively early days of building the kind of apps that these frameworks are targeted at; the idea that any time spent on incremental improvement or experimentation is a waste, and instead we should; 'redefine how we write web programs' is just nonsense. It's extremely rare that things evolve in that fashion.
Yes, programming probably should be accessible to everyone. That's a gigantic, fuzzy challenge that's totally orthogonal to spending time developing tools that are useful in the immediate present.
And it's not like it's never been tried before. What about Hypercard, or more recently Scratch? Or Swift's playgrounds? All of these are looking at ways to make development more visual and accessible.
Your time would be much better spent contributing to those efforts than rubbishing the attempts of other people to deal with other problems.
- collyw 10 years agoCompletely agree with your first paragraph, but not the second.
There have been plenty of GUI programming tools, but most of them are pretty crap (the ones I have tried). MS Access had an OK query builder, but at the end of the day it didn't gain you anything over SQL. Java beans were touted as t a hot topic back when I was at university, but nothing ever came of them.
Syntax is rarely the difficult part in programming (except with CSS maybe). The way I see it, plugging parts as you describe together relies on a number of assumptions being made for you. The easier it is to plug things together, the less flexible each unit becomes. The difficult bit is choosing what assumptions are appropriate.
- quonn 10 years ago> I'm envisioning a way to create software, where while having a conversation with another person, we could collaboratively draw some shapes on the screen, connect them, then my program comes to life, evolves, scales up, scales down, etc. I believe programming should not be an endeavor accessible only to those adept at manipulating text files.
There are many solutions (e.g. Simulink, GUI builders, the "connected nodes" approach of Blender) for that, but they only tackle specific areas. I don't see that changing, either. And they usually don't address anything except very small programs (say < 5000 lines of code), while the exact purpose of these JavaScript frameworks is to deal with the larger ones.
I find it very strange that programmers seem to think their trade has artificial entry barriers. For some reason, mathematicians are not concerned with that. It's already fairly easy to get started with programming. Languages have come a long way, there are good IDEs and you can get started using just freely available software.
- orbifold 10 years agoSpeaking of mathematicians, they've also come up with an explanation how to model those graph based, "data flow" languages like Simulink or Blender's connected nodes abstractly. They are all examples of diagrams in some (traced, symmetric) monoidal/cartesian category. What is missing is a programming system that isn't tackling a specific area based on that model, that is it supports polymorphism. Haskell's arrows come close, it is relatively easy to model cartesian closed categories in it. But something better, with graphical visualization and maybe direct manipulation would certainly desirable.
- orbifold 10 years ago
- peterhunt 10 years agoReact is pretty revolutionary. It turns rendering code into a simple pure function, which is a necessary step for where you want to end up.
- seanmcdirmid 10 years agoRendering code is easy to express as pure functions...that is mostly how OpenGL and DirectX work, after all. React doesn't help very much with the state of your application (nor is it meant to). That being said, being able to treat the DOM as something to be rendered efficiently in immediate mode is quite useful.
- eropple 10 years agoOpenGL is a big ol' box of state in almost everything it does. I'm not sure how you get pure functions out of that.
- eropple 10 years ago
- forthefuture 10 years agoBenchmarks for React tell a different story. It's like two orders of magnitude slower than multiple alternatives. If you are performance critical, React is not possible to use in production, and likely will never be considering Facebook's development practices.
- antris 10 years agoI've deployed two applications to production that use React and in neither has React created a performance bottleneck. Both of them are heavily used in mobile, too. And they work wonderfully.
Benchmarks don't mean much when you're shipping real software to production.
- Nemcue 10 years agoYou're reading too much into benchmarks without understanding what the alternatives are.
Sure there are faster ways of rendering a template; just use format strings! Wow — super fast!
It's a nonsensical way of reasoning about frameworks.
- antris 10 years ago
- seanmcdirmid 10 years ago
- mslot 10 years agoI couldn't really understand what FOAM does in under 2 minutes, so it doesn't meet the bar for me.
You should try React with JSX though. It's a tool like jQuery, but much more sane and structured, and as opposed to frameworks, it becomes more likable the more you use it.
- aflinik 10 years agoDon't see how that's a bad thing, nobody forces you to use it, and odds are some nice ideas will get validated here and more popular frameworks will adopt them. Think how React influenced the changes in rendering models of Ember, Angular, etc.
Always baffles me how HN crowd can at the same time revere Lean/Agile mindset, and at the same time despise the same principles applied to the tools ecosystem. To me it's obvious that to make progress of any kind multiple attempts are needed. Naturally only few of all those experiments will survive, the thing is nobody knows which ones.
- ganarajpr 10 years ago> I'm envisioning a way to create software, where while having a conversation with another person, we could collaboratively draw some shapes on the screen, connect them, then my program comes to life, evolves, scales up, scales down, etc.
I am glad there are others who are looking into this same approach to build software. We are currently building just this. http://www.dhi.io
We want building web ui's to be as simple as having a conversation with another developer about the requirement.
- willejs 10 years ago"I'm envisioning a way to create software, where while having a conversation with another person, we could collaboratively draw some shapes on the screen, connect them, then my program comes to life, evolves, scales up, scales down, etc."
This already exists, its called UML, and UML code generation tools. Wait, Have I just fed the troll?
- inglor 10 years agoTo add to that, it's not really even that impressive - no ES6, lots of technologies that are not in the current "hype" and so on.
That said - having frameworks emerge from the community rather than dictated is a good thing, it helps create a healthy ecosystem. Whenever a new "fad" takes over we actually _do_ learn something.
- Ygg2 10 years agoInteresting sentiment, but the problem is that way is awfully abstract. Until computers can write code optimized for both the intent and use case, this remains a far out of reach dream.
It could happen, but I suppose it would need very different architecture compared to CPU.
- sethjgore 10 years agoI've been thinking about this as well. A visual and intuitive way of building software would make software and code as disposable as paper.
Do you want to help build a system that is universally distributed and allows creation by everybody? I want to build something that will allow every person to create software on their touch screens without having to fiddle with complex interfaces or text-based commands. Do you want to make this vision a reality?
Email me sethjgore@gmail.com.
- spenrose 10 years agoA Mozilla effort: https://webmaker.org/
- spenrose 10 years ago
- tonyedgecombe 10 years agoI can understand your frustrations, it does seem huge amounts of the work in a web application are really about configuration rather than code. Often there are no algorithms, just lists of database tables and fields, forms, validation rules, routes, links, templates etc.
It seems we aren't very good at catering for people who aren't like ourselves.
- aeone 10 years agoHave you tried Scratch (https://scratch.mit.edu/)? It sounds similar to what you're describing. If you have any ideas on a better way to do this, maybe you should build it - there's a lot of interest in "accessible programming".
- antris 10 years agoReact is not a framework though.
- 10 years ago
- tomelders 10 years agoIt's the smell of progress.
- tptacek 10 years ago
- elcct 10 years agoIt's been like 5 seconds since last new JavaScript framework was released. I really started to worry, so thanks for this post.