What is the Difference Between a Platform and a Framework?
In today’s everchanging world of technology, we have a very fluid terminology, where certain words and phrases tend to overlap, and the same word may have multiple meanings in different contexts.
We usually emphasize that one of the main differences of Smartface Cloud from similar products is that
Smartface Cloud is a full-featured “mobile app development and lifecycle management platform”, not just another “mobile app development framework”.
This is usually followed by this question; what is the advantage of being a platform instead of a framework? Basically, a platform is a much more comprehensive, usually a multipurpose product and may actually host a framework in itself along with other tools. When you use a framework, you may need to form your own “platform-like” environment by combining various tools for various needs; whereas in a platform, these needs can be met from a single point and in a tightly integrated manner, increasing productivity and making it more suitable for enterprises.
Let’s check the formal definitions for clarification:
What is a Platform?
In traditional dictionaries, the definition of the platform is simplified down to “operating systems and/or hardware” and this is correct up to a point. We consider iOS and Android as “platforms” for which we develop mobile apps and from the same perspective, Smartface is a “cross-platform” native mobile application development platform, but this definition itself raises another question about being a “cross-platform platform”.
This is due to the fact that the changes in technology is much faster than the changes in the language. When we delve deeper, we see that Wikipedia classifies the platform concept under the “Computing Platform” article. In this article, we see the description “Software frameworks that provide ready-made functionality” as one of the items that a platform may include.
This sheds some light on our discussion in the previous section but raises yet another question.
What is a Framework?
Again referencing Wikipedia, we see that a framework is defined as “an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework provides a standard way to build and deploy applications.”
Therefore, we can incur that a framework is more like a tool on which you can develop software in a more organized manner and a framework can also be a part of a platform. For instance, Smartface Cloud Platform uses Smartface Native Framework to produce native iOS and Android apps.
Then, what is the advantage of using a Development Platform instead of a Development Framework?
With a framework, you only get the underlying technology for development (e.g. a language standard such as JavaScript along with an SDK), usually a packager/compiler (e.g. a command-line tool) and sometimes a development environment. Although some frameworks may offer helper tools, that’s usually all. A framework is more like a facilitator than a complete solution. For instance, to use a mobile application development framework to build and deploy mobile apps:
- You may need to download the framework itself along with Android Studio and Xcode so that it supports the targeted operating platforms.
- If there is an update, you may need to update all the components and dependencies separately.
- To build an app, you need to first package it in the framework and then compile it separately in the respective platform tool for iOS and Android.
- For the rest of the mobile application lifecycle such as testing and distribution, you need to resort to third party tools, all of which may require separate configuration efforts.
- If there are no integration between these tools, you may need to do uploads and downloads all the time or build your own.
- If the tools don’t have cross-platform support, you may need to do everything separately for iOS and Android twice.
On the other hand, if you use a mobile application development platform which also includes a mobile application framework, everything will be much easier, productive, faster and less error prone.
In that sense, a mobile application development platform is a complete solution for software development with an integrated suite of tools and frameworks.
For instance, Smartface Cloud is a fully integrated end-to-end mobile application development and lifecycle management platform and offers much more than a framework with:
The only Cloud IDE for cross-platform native development:
- Design and develop native iOS and Android apps just with JavaScript knowledge with a full WYSIWYG editor and a cloud IDE right in your browser. No downloads or configuration needed.
- Automatically updated environment, no need to maintain third-party tools like Xcode or Android Studio.
- No dependency on a single PC, can be accessible from anywhere from any device.
Testing Distribution:
- Publish your apps from development to testing, no binary operations needed.
- Distribute apps internally to testers and teams and keep track of downloads.
- Full version history archive with all binaries.
- Re-sign applications for production without going back and forth to the development module.
Cloud Signing Identity Management:
- No need for a Mac or any other tools to generate iOS and Android signing identities.
- Keep the iOS certificates and Android keystores secure and in a centralized location.
- No need for keeping local copies and sharing certificate files.
Cloud iOS and Android App Build:
- Direct APK and IPA output from centralized signing identities. No need for a Mac and no dependency on specific environments.
- Apps can be built with any type of certificate.
- Full individual build history for tracking and auditing.
Submission to Public Stores:
- Publish your apps from development or from testing to public store submission, no binary operations needed.
- Ability to upload apps directly to the App Store and Google Play.
- No Mac needed and no need for any download/upload processes.
Single Link Distribution for Marketing and Deep Linking:
- Single, shortened link and QR Code for multiplatform public store URLs with URL scheme and intent support and application install detection for deep linking.
Enrollment-free Enterprise App Store:
- Publish your apps from development or from testing to the enterprise app store, no binary operations needed.
- In-house, enterprise-specific, customizable app store to provide access to in-house apps (B2E, B2B) with internal authentication (LDAP, OAuth) and custom domain support. Supports all types of apps.
- BYOD-friendly. No need for enrollment to MDM.
- General and individual reports about users and apps.
Remote App Update:
- Live update for native apps with hot deployment.
- No need for App Store review and complete app updates.
- Always deliver the latest and the best experience.
Team Management with Notification Center:
- Module-based team and role management. Segregation of duties for separating roles like development, DevOps and distribution, etc. for compliance and control
- Email notifications for full control over each step of the mobile application lifecycle for increased collaboration and agility. Keep track of teams and actions.
If an enterprise prefers to use different frameworks for all of these features, the enterprise may also need to form a large technology stack that is required to be maintained and integrated manually. However, this is not viable and productive for most enterprises and this is the reason why a platform is much different than a framework.
A full-featured mobile application development platform like Smartface offers much more than just a development framework and minimizes the manual operations and streamlines the enterprise mobility processes.