Apache MyFaces is a project of the Apache Software Foundation, and hosts several sub-projects relating to the JavaServer™ technology. If you want to know more about how JavaServer™ Faces works, take a look at the MyFaces introduction to JSF
The Apache MyFaces project provides:
The only well known and active alternative implementation of JSF is not just an alternative, but a very competitive offering.
In the JSF 1.x days, this used to be the only viable solution (the reference implementation, RI, was terrible and bug ridden back then). With 2.x the situation has improved for the RI (now called Mojarra), but MyFaces still holds its own in a couple of areas.
For instance, dynamic component tree manipulation just doesn't work correctly on Mojarra. On MyFaces it works flawless.
Performance is another big topic. In some versions Myfaces is faster, in some other versions Mojarra. There doesn't seem to be a definite winner here.
An important difference between MyFaces and Mojarra is that MyFaces by default serializes the so-called view state when that is kept on the server. This can become a serious performance bottleneck, but there's an option to switch it off. Incidentally, Mojarra has an option to turn it on.
After a 2 year journey with different versions of JSF I would never ever again use anything connected to this specification.
There are tons of bugs like this: http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790 - Critical, open for longer than 2 years with no resolution. Framework is useless because of bugs and terribly low performance in comparison to anything else.
JSF 2 is really a great framework and MyFaces is at the forefront. This one togeter with PrimeFaces is a killer stack!