| 1 | = Fusion RFC 1: Use !OpenLayers.Class and other prototype capabilities = |
| 2 | |
| 3 | This page contains a change request (RFC) for the Fusion project. |
| 4 | More Fusion RFCs can be found on the [wiki:RFCs RFCs] page. |
| 5 | |
| 6 | |
| 7 | == Status == |
| 8 | |
| 9 | ||Submission Date||(Date/Time submitted)|| |
| 10 | ||Last Modified||(your name here)|| |
| 11 | ||Author||Paul Spencer|| |
| 12 | ||RFC Status||draft|| |
| 13 | ||Implementation Status||pending|| |
| 14 | ||Proposed Milestone||1.1|| |
| 15 | ||Assigned PSC guide(s)||(when determined)|| |
| 16 | ||'''Voting History'''||(vote date)|| |
| 17 | ||+1||''tbd''|| |
| 18 | ||+0||''tbd''|| |
| 19 | ||-0||''tbd''|| |
| 20 | ||-1||''tbd''|| |
| 21 | |
| 22 | == Overview == |
| 23 | |
| 24 | This RFC proposes to change the core javascript framework that it uses for defining classes from Prototype to !OpenLayers. |
| 25 | |
| 26 | == Motivation == |
| 27 | |
| 28 | One of the performance bottle necks that Fusion has is the size of the javascript code that gets downloaded to the client browser is pretty substantial. |
| 29 | |
| 30 | Fusion relies on Jx. Jx is based on Prototype and Scriptaculous. Prototype and Scriptaculous combine into a compressed file size of 185kb. We would like to change these libraries in Jx to something lighter-weight and potentially snazzier. The problem for Fusion is that Fusion uses some aspects of Prototype (Class, Function, Ajax, Event) extensively and it will be a substantial effort to change. If we don't like the new library in Jx, we may want to try another library. This could get painful. |
| 31 | |
| 32 | !OpenLayers has implemented many of the features of Prototype that we actually use in Fusion, including Class, Function.bind, and Ajax. |
| 33 | |
| 34 | == Proposed Solution == |
| 35 | |
| 36 | Replace all existing uses of Prototype in Fusion with the equivalent functionality from !OpenLayers. |
| 37 | |
| 38 | == Implications == |
| 39 | |
| 40 | This change should have no noticeable effect on existing applications. There will be no functional change to any existing code. |
| 41 | |
| 42 | Applications that have been written to take advantage of Jx and some aspects of Prototype (for instance, the $() function) will still work because Jx will not change as part of this work. |
| 43 | |
| 44 | If we modify Jx to use a different library at a future time, then existing applications will need to be modified at that time to accommodate the change in underlying libraries. |
| 45 | |
| 46 | == Test Plan == |
| 47 | |
| 48 | There is no set of automated tests for Fusion at this time. Ad hoc testing will be conducted after the change using the existing !MapServer and !MapGuide application samples. |
| 49 | |
| 50 | == Funding/Resources == |
| 51 | |
| 52 | DM Solutions Group will do all the work for this change. |