10-15-2018
19,118,
3,359
Join Date: Sep 2000
Last Activity: 15 July 2022, 8:51 AM EDT
Location: Asia Pacific, Cyberspace, in the Dark Dystopia
Posts: 19,118
Thanks Given: 2,351
Thanked 3,359 Times in 1,878 Posts
Status of UNIX.COM Forum Transformation
Having spent a lot of time over the past year taking a legacy vBulletin site (this forum) and making the site responsive on mobile; I've happy with the results; but it will soon be time to move on.
Basically, at our core, we are a LAMP (Linux, Apache2, MySQL and PHP) site, and vBulletin was built on the LAMP stack.
vBulletin provided a user interface system with HTML templating (served from the DB, as well as version control and template management in the same DB), and PHP hooks to install PHP plugins (functionality).
In a nutshell, when a user accesses a vBulletin page the PHP makes a synchronous call to the DB and the results are formatted in HTML using HTML templates (which are also in the DB), and those templates are cobbled together and served to the user.
Over the past year, I have made a lot of changes in many HTML templates and getting rid of many obsolete <table> DOM elements, replacing them with <div> DOM elements, etc. and adding a lot of new CSS and Javascript / jQuery, to enhance presentation.
I knew this was only a "bandaid fix" and someday, the entire vBulletin user interface must change. So, I started looking at various ways do to this, and it seems that the best approach may be to:
Modify the underlying PHP calls to return the DB data in JSON format.
Basically, most all of the cool and rapidly evolving (and exciting) technology in Javascript frameworks provide for what happens in the user's browser and does nothing for the PHP (server side). This means we are "good to go" with our LAMP stack and core PHP functionality (with the exception we need to move to PHP7 sooner than later).
So, what we need to do is to modify the PHP calls to the DB to return the data in JSON format so we can easily use any new web development framework for the user experience (Angular, Vue, React, Oracle Jet, electron, or "WhatEverTron" -- the field is changing almost daily and certainly weekly).
Keep the Existing User Interface and Build a New One in Parallel.
There is no reason to trash the existing user experience; and based on my experience here, users do not like change (even a single color change or a change of margin in a single item can cause negative feedback from users.) . For this reason, I'm not inclined to break the current user interface. Instead, I think it is better to build a parallel one using a "framework" (like Vue.js or Angular.js) or a ""non framework framework"" (like Oracle Jet) - have not decided. Actually, it might be good to build more than one parallel user experiences to the same back end database.
What Does All this Mean for Users?
It's probably good news for our "hard core forum fans" who like the current forum format. There will not be a lot of new development in the "vBulletin HTML template" side of things; just bug fixes and small features enhancements here and there.
However, the future is to move away from vBulletin (and the underlying forum format) by building a parallel user experience on top of the same LAMP back-end. This means, for example, taking a PHP call to the database that shows a thread, for example, and adding some code to have it (in parallel) produce the same data in JSON objects. Then, we can take these JSON objects and easily build new user experiences with the same rich DB we have and have the flexibility to adapt to new innovations in browser technology. The field is moving forward very fast. Times are exciting.
I am guessing that I will start with the user profiles. The user profile pages are a mess and are based on some very old legacy vBulletin code which, in the old days, permitted users to define their own CSS theme. This resulted in a clunky, buggy, very hard to maintain user profile page experience. I may change this first, I think (not sure). As mentioned, the best way ahead is to tackle each PHP call one step-at-a-time by adding a JSON output which can be used by react. js or Angular.js or Vue.js or Oracle JET.... or any cool Javascript toolkit or framework which works with Data as Javascript Objects (DAJSO).
Anyway. Thanks!
Obviously, there is a big project ahead and I'm currently a team of one on the coding side of this project and have other things to do in life; but I'll try to make progress on moving the forums ahead. Thanks for your patience and for supporting this site.