Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Famous-angular New Famous Engine with mixed mode status? #372

Open
kevbaker opened this issue May 26, 2015 · 24 comments
Open

Famous-angular New Famous Engine with mixed mode status? #372

kevbaker opened this issue May 26, 2015 · 24 comments

Comments

@kevbaker
Copy link

What is the status of Famous-angular now that the new Famous Engine with mixed mode has been released?

Has the famous-angular project been updated to the new engine? If not does it make sense to use famous-angular on a new project?

Thanks

@surfjedi
Copy link

+1

@gabrielperales
Copy link

+1.... There isn't info about famous with angular integration in the new website...

@jordanpapaleo
Copy link
Member

Ill have a statement for you guys today I hope. Super sorry for the delay in this.

@AlanWasTaken
Copy link

Sorry for the delay

https://famo.us/integrations/angular/#/intro

@kevbaker
Copy link
Author

kevbaker commented Jun 3, 2015

@AlanWasTaken, this link goes to the previous Famo.us / Angular page. The
page is amazing, but has not been updated at all to reflect any changes for
mixed-mode.

I think the outstanding question is, "Will famous-angular be updated for
the new Famous Engine with mixed-mode?"

On Wed, Jun 3, 2015 at 9:59 AM, AlanWasTaken [email protected]
wrote:

Sorry for the delay

https://famo.us/integrations/angular/#/intro


Reply to this email directly or view it on GitHub
#372 (comment)
.

@AlanWasTaken
Copy link

ah :: sorry about that, misunderstood.

well here we go my good lad and ladets

Details the mixed-mode:
http://famous.org/#what-s-new-

Also a neat little video on it:
https://vimeo.com/115228512

@kevbaker
Copy link
Author

kevbaker commented Jun 3, 2015

@AlanWasTaken, the mixed-mode features are amazing for sure, mostly
interested in Famous integration with Angular though. Thanks

On Wed, Jun 3, 2015 at 1:26 PM, AlanWasTaken [email protected]
wrote:

ah :: sorry about that, misunderstood.

well here we go my good lad and ladets

Details the mixed-mode:
http://famous.org/#what-s-new-

Also a neat little video on it:
https://vimeo.com/115228512


Reply to this email directly or view it on GitHub
#372 (comment)
.

@jordanpapaleo
Copy link
Member

Out of curiosity, who would be interested in giving back to this open source project to make it compatible with MixedMode?

@AlanWasTaken
Copy link

Out of curiosity, who would be interested in giving back to this open source project to make it compatible with MixedMode?

What do you mean>

@jordanpapaleo
Copy link
Member

Famous-Angular was not built by Famo.us but by a third party. It is an open source project that numerous developers have contributed to. I expect that if this project really wants to grow and thrive, the Famous-Angular community will need to be apart of that. So instead of asking if Famo.us will be integrating Mixed Mode with Famous-Angular, I think what we should be asking how do we integrate Mixed Mode with Famous-Angular. So to my initial question: who would be interested in contributing to this open source project to make it compatible with MixedMode?

@AlanWasTaken
Copy link

uh... wait wait wait wait... lol

why waste your time doing that when there is already a Famo.us/Angular Mxed-mode.
Why create the exact same thing? that's redundancy

Rather invest your time in adding to OR utilizing the tools to make something awesome

@jordanpapaleo
Copy link
Member

Famo.us only just released Mixed Mode a couple of weeks ago. So I am not sure what you are referring to about it already existing. Famo.us, released their latest version of their render engine which abstracts the DOM & WebGL, allowing you to do custom rendering with DOM & WebGL under a single coordinate system. The current Famous-Angular project does not use the latest and greatest version of Famo.us. This issue is about how/if Famous-Angular will implement the latest engine from Famo.us. Sorry for any confusion that you may have had.

@kevbaker
Copy link
Author

kevbaker commented Jun 3, 2015

Not sure if this got side tracked at all, certainly would like to support
any effort to get this working with Mixed-Mode. Here's the scoop:

  • Yes, Famous-Angular was a project originally created by Thomas Street
    http://thomasstreet.com/blog/famous-angular/2014/04/28/famous-angular.html.
    They did an amazing job and had help from the open source community.
  • Famo.us definitely embranced it as they have a whole page
    https://famo.us/integrations/angular/#/intro on their legacy site
    dedicated to the technology as AlanWasTaken has pointed out.
  • The Famous-angular project is actually on the Famous github account
    https://github.com/Famous/famous-angular, so I figured it was
    appropriate to ask about it in this forum.
  • The new Famous.org site has no mention of the Angular support it
    previously had. Which is fine of course if they are going in another
    direction.
  • There was a lot of potential value in the Famous-angular project that
    is still hosted on github here https://github.com/Famous/famous-angular.
    It seems to make good sense to port to the new Famous Engine.
  • The reason for the question was simply to ask if anyone knew of the
    status so as to not duplicate any efforts.

On Wed, Jun 3, 2015 at 2:10 PM, AlanWasTaken [email protected]
wrote:

uh... wait wait wait wait... lol

why waste your time doing that when there is already a Famo.us/Angular
Mxed-mode.
Why create the exact same thing? that's redundancy

Rather invest your time in adding to OR utilizing the tools to make
something awesome


Reply to this email directly or view it on GitHub
#372 (comment)
.

@kevbaker
Copy link
Author

kevbaker commented Jun 3, 2015

Jordan,

Thanks for your direct answer. I'll check back later then and hopefully
have some time/ability to contribute as I continue to be interested in
famous-angular.

On Wed, Jun 3, 2015 at 2:26 PM, Jordan Papaleo [email protected]
wrote:

Famo.us only just released Mixed Mode a couple of weeks ago. So I am not
sure what you are referring to about it already existing. Famo.us
http://famous.org/, released their latest version of their render
engine which abstracts the DOM & WebGL, allowing you to do custom rendering
with DOM & WebGL under a single coordinate system. The current
Famous-Angular project does not use the latest and greatest version of
Famo.us. This issue is about how/if Famous-Angular will implement the
latest engine from Famo.us. Sorry for any confusion that you may have had.


Reply to this email directly or view it on GitHub
#372 (comment)
.

@steveblue
Copy link
Contributor

I've been reviewing the changes in Mixed Mode and found that it will require an extensive restructuring of Famous/Angular. For instance, Surface and Modifier which are some basic building blocks will have to be completely deprecated to support DOMElement and Components that are responsible for the transforms once relegated to Modifiers. This is just the tip of the iceberg. This is probably not just a problem for F/A but also the other integrations announced last year. I imagine the team who built the Meteor integration is having the same issues. It would have been nice for Famo.us to release a Migration guide, however daunting that may seem for a the amount of changes to the framework. I do have to commend Famo.us for putting together much better documentation and the new CLI is really interesting proposition.

One thing we should ask ourselves: Does it make sense to support Mixed Mode in Angular 1.4 when Angular 2.0 is just over the horizon? Or does it mean the project needs to support both 1.4+ and 2.0+ moving forward?

It makes more sense to me to integrate the new Famo.us Engine with a complete rewrite of Famo.us/Angular. This may mean the community needs to band together to create an entirely new project.

@abyss-outpost
Copy link

"Out of curiosity, who would be interested in giving back to this open source project to make it compatible with MixedMode?"

@jordanpapaleo I would. Engine is amazing and I'm guessing I could make/replace/borrow a bunch of directives that replicate famous behavior, like creating surfaces and containers. What do you think?

@abyss-outpost
Copy link

@AlanWasTaken @jordanpapaleo @steveblue there are some drawbacks to using the current Famo.us/Angular, for instance:

  1. support is limited to Angular v1.2.26 because afterwards one of the animation developers decided to instead of deprecating the animate object, replaced it with a new one, animatecss, which prevents module formation.
  2. The old Famo.us cannot delete nodes. This is fixed in Famous Engine, but otherwise it would create a memory hog, if one ignored the fact that one can recycle nodes.
  3. RequireJS is a pain, but not impossible to implement from bottom-up development for Famo.us/Angular, which means old Famo.us files could not be dropped in with minimal fuss, i.e.,no plug-and-play. By rebuilding Famo.us/Angular, we can allow both dependency injections (DI) to work together. By acknowledging that Angular injects instances while RequireJS injects classes(video: ng-conf, they can work symbiotically.
    3.A This will allow recycling of old Famo.us files and can provide deprecation-like compatibility.
    3.B Since requireJS can lazy-load, providing both Famo.us and Engine can happen asynchronously.

I've gone ahead and created a repo called --F.E.A.R-- (Famo.us/Engine/AngularJS/RequireJS). I'm looking for a javascript tool that begins with the letter L so I could call it FERAL instead.

@zackbrown
Copy link
Contributor

The future of Famo.us/Angular

I can give some insight in the future of Famous in relation to AngularJS, and the path we've taken to arriving at this decision.

Famo.us/Angular is an integration library. Its roots extend deeply into both of the integrated libraries (Famo.us 0.3 and Angular 1.x) and its implementation is very specific to the idiosyncrasies of those two libraries. Some example integrations:

  • patching into Angular's animation and lifecycle system to trigger and handle Famo.us animations
  • patching into Angular's directive compilation system to build the Famo.us render tree in the first place
  • creating directives that allow Famo.us event piping into the underlying Famo.us render nodes
  • supporting Angular's event pipeline (e.g. ng-click on top of Famo.us Surfaces)
  • supporting ng-repeating elements into a Famo.us Scrollview or GridLayout
  • handling cases like ng-show and ng-if in Famo.us
  • making the whole thing perform well within the constraints of Angular's digest cycle.
  • etc.

And these are just a few of the many adventures that we encountered while building Famo.us/Angular. Now let's bring four different libraries into the mix:

  • Famo.us 0.3
  • Famous Engine, a.k.a. "mixed mode," a.k.a. 0.5.0
  • Angular 1.x
  • Angular 2

To fully support integrations between {Famo.us 0.3, Famous Engine}x{Angular 1.x, Angular 2} would require four completely distinct integration libraries. Obviously, this isn't tenable.

Famo.us 0.3 is deprecated. Thus, we can rule out integrating it with Angular 2. The question then becomes: should we write an integration between Engine and Angular 1.x, or Engine and Angular 2, or both? While we're at it, should we build an integration with React? With Ember? With Backbone? Mithril? FOAM? Insert-JavaScript-Framework-Du-Jour?

The answer is, we absolutely plan to support all of these, but we don't want to (and can't afford to) write a from-the-ground-up integration with all of them.

So what's the trick?

If we do our job right, no one will have to write a heavy-weight integration like this again.

We (at Famous) have to write "one integration to support them all" — we don't want to integrate Famous Engine with AngularJS; we want to integrate Famous Engine with web authoring standards in such a way that using Famous with, say, Angular or React—or even just Bootstrap—is simple. The good news: we're already writing it. It's our Framework Layer. (oh, and that's why Engine is called Engine—it's one of two layers of the Famous Project: Engine and Framework.)

What does this Framework look like?

It supports HTML as an authoring language. This is key, as it allows mixing in other applications/frameworks both inside and outside of the Famous render tree.

It exposes very clear, simple-to-use interfaces for manipulating Famous components. This allows for logic from any other application/framework to interact with Famous in a consistent, predictable, and extensible way.

It supports passing through to raw Famous Engine anywhere it's needed.

It supports passing into and out of Famous or HTML flexibly, and allows easily working with CSS and other assets (images, fonts, other media.)

In other words: writing an Angular integration with the Framework will be loads simpler than writing it with straight-up Engine. I strongly encourage anyone who's interested in an Angular<>Famous integration to wait for the rest of Famous, i.e. the Framework, to be released.

When is that?

As of now (June 2015) Framework is still in Private Beta. We are inviting anyone who's interested and who can make it to come on site in SF to work with us in Famous Labs to test-drive the Framework and get/give feedback directly with the Framework team.

We will be making an announcement about Framework at jQuerySF toward the end of June. It's very possible we will release our Public Beta on that date.

You can reach me at [email protected] if you're interested in the Private Beta or more information.

@dx9
Copy link

dx9 commented Jun 4, 2015

stoked

@surfjedi
Copy link

surfjedi commented Jun 5, 2015

I would help with the open source

@steveblue
Copy link
Contributor

@surfjedi @dx9 @kevbaker @abyss-outpost I went ahead and started working on Famous Engine / Angular 2 Integration. It is very bare bones at the moment, you can declare Nodes, DOMElement, and Mesh in Angular 2 templates. The project will need the help of the community if this is going to be a stable, working solution. Introducing ngus ngus.io => https://github.com/steveblue/ngus

@surfjedi
Copy link

surfjedi commented Aug 4, 2015

Awesome! cloned it and will try to help.

@mihaellenic
Copy link

@jordanpapaleo @zackbrown Maybe it would be a good idea to place a note in the README.md saying that this integration library is deprecated. Basically, the @zackbrown's post from above about the future of Famous/Angular contains some critical information.

@jordanpapaleo
Copy link
Member

Done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants