This week saw the announcement of the sessions running at SenchaCon 2015, which includes a big announcement about the future of the Sencha product landscape - “the merge”.
That's right, Sencha plan to merge Ext JS and Sencha Touch into one uber framework that will allow us to develop apps to target desktop, mobile and tablet devices with just one framework.
This is a big leap forward and something that the developer community has been demanding (or at least repeatedly vocalising…) for a long time now. I'm looking forward to hearing more about this and seeing where this will lead and how our development approach will change to allow two distinct types of apps to be developed with the same framework.
The History
Not long after Sencha introduced Sencha Touch in 2010, and the first few larger projects started emerging from developers (often those who were already part of the Sencha eco-system with Ext JS), questions started being asked about how the desktop (Ext JS) and mobile (Sencha Touch) apps could be more seamlessly integrated.
Creating a desktop and a mobile solution meant two separate code bases and any code sharing you could muster would be fairly laboriously hacked together. This was far from ideal but the very different nature of the target platforms meant it could be shrugged off to some extent.
Since then the products have both matured greatly but this division still exists, although small steps have been made to blur the lines slightly, presumably with one eye on this announcement.
Small Steps
Over the last couple of years Sencha have made steps to unify a lot of the common ground between the frameworks - the data package, the utility classes etc. The introduction of packages has been the backbone of this and has made code portable in a way it hadn't been before.
This also gave us developers a way to share code between our Ext JS and Sencha Touch apps albeit a little bit clunkily with class system differences causing problems.
Ext JS Touch Support
The huge adoption of tablet devices meant a lot of pressure was placed on Sencha to make sure Ext JS apps worked on them, as the lines between desktop and mobile blurred further.
Consequently Ext JS 5 introduced proper touch support to allow Ext apps to work on tablet devices meaning the reach of Ext JS apps grew further, leaving mobile the only platform truly reliant on Sencha Touch.
The Merge
So this year will see the merge of the two frameworks happen for real and we will see how this changes the way we develop desktop and mobile applications in tandem.
At this stage there are a huge number of unanswered questions and everything written here is based on pure speculation but I can see a lot of benefits to this decision as well as a number of concerns and questions about how it will practically work.
Benefits
As I said, I can see a lot of benefits and the vocality of the community has certainly indicated it is definitely a direction that was desired.
One API
As a developer who moves between Ext JS and Sencha Touch regularly (often on a daily basis) removing the need to remember two extremely similar, but crucially different, APIs is a big bonus.
Code Sharing
The biggest pro in my eyes is being able to share code common to each app. Duplicating business logic across two apps is a disaster waiting to happen. The downside of this is that extra care must be taken when architecting our systems to ensure the code is detangled from any platform specific code - which surely there must be at some level.
Maintenance
With one codebase there is less of a maintenance overhead which will be a big win when your apps start getting large.
Drawbacks
I can think of a couple drawbacks to this approach but since this is all speculation at the moment I am happy to be proved wholly wrong!
Mobile !== Small Screen Desktop
Desktop and mobile apps are very different beasts. It's not a question of will this app run on desktop and mobile devices if I use the new merged framework - the features, the structure and the flow will (and should!) be very different. I don't think this new framework will result in a utopia where we just write one thing and magically it becomes a desktop and mobile app.
Thinking of it from this stand-point, our views will be different for desktop and mobile and therefore the controllers (thinking MVC just now) will need to be different.
This leaves the business logic (models, stores, helper classes etc) as the only thing that can really be shared. Don't get me wrong, this is a great place to be but I'm concerned that the result will just be one giant Sencha project that happens to support desktop and mobile devices with one giant framework backing in. A position that doesn't seem to far from where we sit just now with Workspaces.
The Size
Sencha Touch does a lot of stuff that Ext JS doesn't, and vice versa. This is going to mean the combined framework will be a bit of a chunky monkey. I'm sure there will be clever Sencha Cmd updates to make sure the final payloads are minimal but it will still be a concern, especially since they aren't exactly slimline already!
Licensing
Fairly recently the ability to buy single developer licenses for Ext JS was removed, causing a pretty serious backlash. Sencha Touch is a free product and has gained great popularity because of that, so where will this merge leave us in terms of licensing.
Ext JS' license fees are the main revenue stream for Sencha so it's highly likely that the new framework will follow a similar structure to Ext JS (perhaps with a higher price tag). Where this leaves Sencha Touch-only developers remains to be seen.
Conclusion
I'm excited to see this next phase of Sencha's product line and I'm confident it will be a success and give us developers huge benefits. My concerns are all things that are based on my assumptions and therefore (I hope!) they will be disproved as we find out more information.
What are your thoughts on this move from Sencha? I'd love to hear others' views on it! Leave a comment below.