Sunday, October 12, 2008

Platform versus Framework

In the last 30 days I had the pleasure to work in the context of the OpenInterface project, writing a document that delineates how the platform will continue after the project period. They thought I could help because of my long experience with the open source community. Actually, it was a great challenging experience with hard and pleasant moments. The most exciting one was in Porto, Portugal, on the border of the river, when I found inspiration to write some killer sentences.



During the elaboration of this document, many people from the project gave contributions, comments, critics, which was essential to get a better result at the end. But one of them called my attention. One of the contributors, asked to change the term platform to framework, which was funny because the name platform is spread through many other documents and on the website. So, the person had some fundamentals to propose this change. What are they? Then I decided to make a short research about the difference between both concepts and the best place to start is, of course, the dictionary.

The word platform has many meanings, including the computer science one. In the Cambridge English Dictionary:
"Platform describes the type of computer system you are using, in connection with the type of software you can use on it."
This is a very generic definition, which doesn't help me at all. So, I went to Wikipedia, where I found a definition without any alert about its sources or impartiality:
"In computing, a platform describes some sort of hardware architecture or software framework (including application frameworks), that allows software to run. Typical platforms include a computer's architecture, operating system, programming languages and related runtime libraries or graphical user interface."
Oh God! It mentions framework on the definition of platform. Is it some sort of recursive definition? Well, let's go to the framework's definition:
"A software framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an API."
Well, better! Let's analyze the differences. First: framework refers only to software and ignores hardware totally. So, if you work with hardware it will never have a framework ;-). Second: a platform allows a software to run, which is not a framework requirement, since it is more focused on design. For instance, Java is a platform because it has a virtual machine that allows Java applications to run in many operating systems. On the other hand, Spring is a framework because it simplifies the way you design software, taking the responsibility for a lot of things to reduce the effort and the volume of code needed to implement the application. So, a platform doesn't aim to save your time, but to give you one or more possibilities to run your application.

Going back to the root of the discussion, I had a long conversation with the main developer of the OpenInterface (OI), Lionel Lawson, and we concluded that OI is, at the same time, a platform and a framework. It means that, when platform, OI can run your application on it. When framework, your application can use the OI's API to access other components. Then, we concluded that OI is actually a technology, which is more generic and solves many integration problems between low level components.

12 comments:

  1. hello Hildeberto,

    Its really a wonderful description with a an excellent example.
    But I have one little confusion. What is a middleware? Is it platform or framework or something else?

    Thank you very much.
    Hemanth
    ReplyDelete
  2. Hello Hemanth,

    I'm answering your question with a new post because of the explanation size. Check it out: http://www.hildeberto.com/2009/05/what-is-middleware-platform-framework.html

    Welcome!
    ReplyDelete
  3. NIce article.
    Can you explain what .NET is?
    ReplyDelete
  4. As I said, technology is a more generic term and, in my opinion, it is the correct term for .NET because .NET is composed by a platform to execute the code, it provides some facilities to improve productivity, characterizing a framework, and it also provides tools to operate everything. So, the term "technology" takes all into consideration.
    ReplyDelete
  5. I googled platform vs framework and came to you. Very good result! IMO, unlike other disciplines, the desire to name things gets in the way when it comes to software because code is so malleable. The commonalities are not useful, its the uniqueness of any given construct. Better to describe functionally than categorically.
    ReplyDelete
  6. hi, I have one query here.
    If we talk about versions of platform and framework, sometimes in the open source it has been seen that latest available platform version is lower then framework. For example Jboss protal platform is 4.3 which doest not have Seam 2.2.0 support.
    So can I use seam 2.2.0 framework for development to run product on Portal platform 4.3?
    ReplyDelete
  7. Each development project has its own version control. What really matters is the compatibility between versions, not the version in itself. It has no influence on the concept of platform and framework. So, don't worry about it ;). Just check the documentation of JBoss Portal and JBoss Seam to see their compatibility. I don't work with JBoss products because of a set of problem I had before, but I think you will find an technical answer for your question on the JBoss Portal website: http://www.jboss.org/jbossportal/
    ReplyDelete
  8. hello Hildeberto,
    i've one query............
    Is a .NET a framework or a Platform?
    ReplyDelete
  9. .Net is at the same time a platform and a framework. It is a platform when providing a language runtime on top of the operating system. It is a framework when promoting reuse, simplification of complex tasks and customization. For commercial reasons they decided to sell it only as a framework. In fact, the difference between platform and framework is more clear in the mind of Java architects than .Net architects because Java people are addicted to develop new frameworks.
    ReplyDelete
  10. SO what about netbeans?? IS it a Platform or a Framework? or is it simply IDE? I thought Netbeans was just an IDE untill i came across this - http://netbeans.org/features/platform/

    So basically i'm confused.. Would be great if you could answer my question. Thanks for writing this article.. Totally helped me understand the difference between two.
    ReplyDelete
  11. The term "Platform" in "Netbeans Platform" is not used to indicate that it is a platform. It seems to be just a strong name to call more people's attention. We can clearly notice that in the first sentence that defines Netbeans Platform in the link you sent:

    "The NetBeans Platform is a generic framework for Swing applications."

    Therefore, as the definition says, it is actually a framework for Swing applications, not a platform.

    Thanks you for your contribution to the discussion! ;)
    ReplyDelete
  12. This comment has been removed by a blog administrator.
    ReplyDelete