PHP Developers Network

A community of PHP developers offering assistance, advice, discussion, and friendship.
 
Loading
It is currently Mon Oct 14, 2019 8:27 pm

All times are UTC - 5 hours




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Application platforms
PostPosted: Thu Aug 20, 2015 12:50 pm 
Offline
DevNet Evangelist

Joined: Tue Dec 21, 2004 6:00 pm
Posts: 6267
Location: Winnipeg
I am considering writing a white paper based on my views and understandings of the market place/ecosystem of open source web-based (PHP focused) applications, platforms, frameworks and libraries. Please consider this an initial (unorganized) brain dump. My hope is to harvest new ideas or concepts which I have not yet encountered or considered.

Please give this a quick read and lets try and get some dialogue going?

Problem:

When faced with the prospect of a new project we can use one or more of the following.

1. Applications
2. Platforms
3. Frameworks
4. Libraries

Applications available in the open source market are many and varied. That being said, there are business applications for handling "customer management" CRM and accounting, e-commerce and in some cases manufacturing. These applications are built specifically for a niche market and are not easily adaptable to meet similar markets; Open source or not - changing core is a bad idea and the extension points made available are often poorly designed as an after thought to the systems architecture (this is certainly the case in the systems I have built and maintained over the last several years).

Platforms are often applications in disguise - targeting a specific market - but designed with sophisticated extension in mind. SugarCRM is a good example, as it is (or was) a CRM and later extended with all types of third party components. These components integrate with "core" and in some cases other components - the issue I frequently encountered was extending an existing component to meet my needs. For example, I find a "purchase order" component which allows me to create and track purchase orders. However our business PO line items require a serial number and part number, which the existing PO system doesn't support.

My options as I understood them at the time were:

1. Take a copy of the component and hack it's core - bad idea - destroys any upgrade opportunity - at best it becomes tedious and difficult
2. Extend the "component" as a sub-component and override the necessary methods and interfaces - this too is a lot of work and difficult but preserves most upgrade-ability
3. Hook into the various low-level calls and add the tiny bit of detail required to satisfy requirements - adding fields to form, lists, database, validations, etc

If you have ever worked in Joomla (or similar component architectures) you have probably performed step #1 or #2 with limited success. Step three is restricted to what I consider "true" platform architecture (Drupal, Odoo, etc). These architectural differences are for another topic or perhaps later in reply.

Frameworks are the common choice for most professional developers as they provide enough structure to keep your project organized but make fewer assumptions than platforms; This comes at the cost of significantly increased initial development and change management/maintenance costs but offers a reduced learning curve (if any) and gives the perception of greater control. I would argue that Drupal is truly extensible and offers 99% of the flexibility one might seek with a framework but there is a significant learning curve and the documentation is poor. The separation of concerns are not as cut and dry as your standard Zend MVC architecture. And the additional overhead of the thousands of events, hook, etc might make Drupal seem like overkill for your standard run of the mill business application or next Twitter.

Libraries are the lowest level detail modern developers work with. Ideally they are packaged as distinct and highly specialized API's as either a collection of functions or preferably a series of decoupled classes. SwiftMailer, Doctrine, Twig as projects which come to mind. They provide (or enforce) little structure to your application.

Examples:

Applications

- OpenCart (e-Commerce - modular with minimal extension points)
- Magento (e-Commerce)
- phpBB (Forums - modular with minimal extension points)

Platforms

- Drupal (Generic - what I consider to be the epitome of "platform" - virtually unlimited extension capability)
- Odoo (Business applications - they do seem to be moving into the e-comm and CMS markets though)

Frameworks

- Laravel (Modern - SDK - Homestead VM - skeleton generator?)
- Symfony
- Zend

Libraries

- SwiftMailer
- Twig
- Doctrine

As a side note - when I use the term "minimal" for describing extension points - it is perhaps more accurate to say "specialized" - as they very well may have dozens or hundreds of extension points but their context and or purpose is very specific.

Lets start with that...what experiences can you share? Any input you would like to provide?

EDIT | I should note that I find NetBeans platform most fascinating as it's architecture, design and unlimited extension very powerful. However it is not a web-based solution and I tend to move in that direction more than traditional desktop development.


Top
 Profile  
 
PostPosted: Thu Aug 20, 2015 10:31 pm 
Offline
Site Administrator
User avatar

Joined: Wed Aug 25, 2004 7:54 pm
Posts: 13592
Location: New York, NY, US
With the advent of Composer, the distinction between Frameworks and Libraries is blurred. And more and more frameworks are refactoring to standalone components. So you can mix and match frameworks components with libraries to create a solution tailored to the problem being solved.

_________________
(#10850)


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC - 5 hours


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group