2. What everybody (secretly) wants to do?
Create popular frameworks and apps
Help a lot of people and organizations
Make a lot of money out of it
3. Avoiding the vicious cycle
Scrap Develop
Let it
out Release
again!
Re-
Scrap
Develop
4. What do we lose in this process?
Enthusiasm for innovation
Delay in product shipment
Possible reduction in quality
Difficulty in migration
Trust of your consumers
MONEY
5. The story of our framework
• Transparent transition for existing users from
Flash to SVG and VML.
• We had no way to anticipate the roadblocks
that we would face while developing for this
transition.
• Thus, we created a model flexible enough to
support any design required to attend
customers’ needs.
6. Developing the “play dough”
Treated the core of our framework as a mini-
framework that would allow us to develop our
framework around it!
Plugin-like architecture.
Event driven.
Standardized inheritance.
Managed interfaces.
8. The code that does it!
FusionCharts([’private’, 'modules.api.sortdata',
function () {
var ns = this,
core = ns.core,
sortData = function () { /* define it */ };
ns.extend(core.prototype, {
keepDataSorted: function (yes) {
this[yes ? 'addEventListener' :
'removeEventListener']('BeforeDataUpdate',
sortData);
}
});
}]);
// Fiddle: http://jsfiddle.net/shamasis/RNe3h/
9. (new Tips()).cliché()
• Set coding style standards including in-line
documentation standards. – allows easy
maintenance on multi-developer environment
• Lint your codes from the very first day. It may be
costly to do later.
• Follow inline documentation standards – maybe
javaDocs, jsDocs, etc.
• Even better, if your minifier engine has its own
rules (such as of Closure Compiler), use that.
10. Points to Design a Good API
http://www.shamasis.net/2009/07/how-to-design-a-good-api/
Why to Design a Good API
http://www.shamasis.net/2009/05/why-to-design-a-good-api/
FusionCharts Beginner’s Guide
http://www.fusioncharts.com/resources/fusioncharts-beginners-guide/
shamasis@fusioncharts.com
@shamasis
Editor's Notes
1. Frameworks that are used by millions of users.2. Such frameworks needs to be modeled for long product life cycles.Easy upgradeability from the framework developers’ internal consumption perspective.This was one framework that we knew that would be consumed by a large user base and as such requires to meet enterprise standards from day one of its development.
1. Frameworks that are used by millions of users.2. Such frameworks needs to be modeled for long product life cycles.Easy upgradeability from the framework developers’ internal consumption perspective.This was one framework that we knew that would be consumed by a large user base and as such requires to meet enterprise standards from day one of its development.
With growth and popularity gains, comes the need for distributed development, faster turn around times and scalability.We jumped into an already popular user-base of 20000 customers.We were walking on a path where we knew we would face unheard of challenges in order to unify user experience of an already stable Flash platform.
To meet the needs of popularity we did stuff… some right, some wrong and some wrongs that we made right.There are certain mistakes that are too costly to turn back from.Extensible in all possible ways. – allows you to not limit yourselvesDoes not require total design definition in order to start development. – reduces TATAllows a modular structure for controlled development. – promotes multi-developer environment
What did we achieve through this?Allowed people to work confidently and modularly on separate closed scripts that share a common namespace variable. Thus, they are easy to maintain and easier for multi-developer environment to work on it.Increased velocity of development by letting people be able develop