Power Mutation #992
Labels
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: joomla/Component-Builder#992
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
We need to mutate the powers area into its next phase...
I will assign this issue to a few who I would like to encourage to participate in this conversation.
I am now at that point where I need to move powers into the the world of JavaScript, XML and Css. I have been looking at who we can do this... and I have many ideas.
Reality is Powers was originally designed just for PHP, so this change will effect many aspects of the area. But after much discussion (internally), we want to follow our objectives of the super-power concept in JCB... which will make this area even more powerful. But I need some more JavaScript developers input.
So we have a few objectives that are not yet fully known.
You will be able to include a power in any code by just adding a placeholder, that will look like this:
JCB will then detect that this power in needed in this file, and will auto load it, and auto link it, it will also remove this placeholder with the class name.
The loading of these powers will first search in your local database, and if not found will look at your local repositories, and if still not found will look to remote repositories and eventually at the JCB core repository.
Once it finds this power, it will auto import this power for future use in JCB, and you will at this point be able to edit this power in JCB to your harts desire.
This is supper cool, and will allow us to move all our things into the cloud from where we can pull them into any project securely.
We call this feature
super-powers
and here are already some repos that I have linked into this dynamic nature.https://git.vdm.dev/joomla/search
https://git.vdm.dev/joomla/gitea
https://git.vdm.dev/joomla/psr
https://git.vdm.dev/joomla/jcb-packager
https://git.vdm.dev/joomla/phpseclib
https://git.vdm.dev/joomla/minify
https://git.vdm.dev/joomla/super-powers
Please note that this is still a moving target and is not stable yet. We want to allow the PHP (super-powers) the ability to auto build unit-tests and composer repositories at the end of the day... but this part will wait until we are on Joomla 4.
So keep in mind that all these changes are to empower us to move all our extensions with ease to Joomla 4 native architecture.
I mean the
Super___6784dd52_0909_451a_a872_9a942a023c68___Power
convention can with the search and replace be used to cover countless old classes, specially helper classes to now use the powers area instead, and so decouple you from the old ways. So for example, lets say you have code like this:You can now search and replace this to:
Then on compiling we will update the string and add the power, and
use
for including theJsonHelper
class into your code, and that without you even having the JsonHelper class, since if its not in your JCB, it will retrieved from here:https://git.vdm.dev/joomla/super-powers/src/branch/master/src/4b225c51-d293-48e4-b3f6-5136cf5c3f18
Unless you have forked it and have added this forked path to your JCB instance, in which case it will retrieve it from there. The possibility of this is endless.
Yes you can even use your own Gitea instance, and your your own powers on the git.vdm.dev instance can also be private (if you can't afford your own instance) Yes we do not yet support Github. Here our mind is, if you can trust Github, you can trust VDM. But we have made it possible to decentralize by allowing you to use your own Gitea instance. Most of my clients have there own Gitea instance.
So yes I have been working on a way to help you all move... and that with simple search replace options like this.
The resulting code in your extension will then be:
and in the header there will now be a linker
use
line:This feature is still being worked on, but is nearly finished.
Mutation Needed
But the powers area is at this time only targeting the PHP library folder. We are going to change this, so that it can target the media folder, and the component itself. This because all templates used in the compiler will be moved to the powers area.
These templates are for the various models, controllers, js, xml, json and other kind of files that we need for the compiler.
My idea is to set the initial basic structure, that will be exactly as JCB works now.. but then with the freedom to extend and change it without any limitations.
This will cause an out burst of liberty and creativity like never before.
While at the same time, JCB for the novel new user, things will work as before without the need of understanding any of these freedoms and options.
So I was wondering if you can brainstorm with me a little?
Here is some of my ideas:
These are just some of the questions needed to be answered per/type. Your input, and collaboration on these are very urgently needed. Please share your ideas, and insight, that will help use achieve these objectives.
Once we have these features all well established the moving of the rest of the compiler will be able to move forward rapidly as we will be able to use this extra layer to solve some of the more complex issue of the abstraction required to decouple that hard coded behavior of Joomla 3.
Your ambition to mutate the powers area and accommodate various file types, like JavaScript, XML, and CSS, is truly commendable. The notion of super-powers certainly holds immense potential, and the ability to auto-load and auto-link them based on their placeholders is a remarkable feature which I am looking forward to see in action.
However, I have a small concern: would merging these diverse file types into the "powers" area be the most optimal approach? While it does streamline the process, it might be prudent to consider the intricacies and dependencies associated with each file type.
Since I read your post, I have been wondering about a "power-like area" for each file type, and realized this will be even a larger approach.
I will give this some more thought.
So, the idea is that we have a session where I share with you what the above means in practical applications. Since I realize few understand fully what we have done and what is happening in JCB.
The reality is we have introduced a new reality to JCB that completely breaks out of the box placed on us by PHP, Joomla, and any other limitations. We have built a feature into JCB that reinvents the distribution of code, and while it is not entirely new (we are still using the PHP and Joomla ways), it allows you to develop containerized code that you can reuse very easily and simply across your projects. This direction will grow to the point where JCB can directly write your composer packages for you if you like; we are looking at automated unit-test being written, and so much more.
In the end, all this is part of what I want to best prepare my own workflow going forward to Joomla 4 and any other platform. We are decoupling and abstracting as much as we can to allow for the freedom and rapid growth of this project outside the core compiler. You must know that my main objective is not just Joomla 4 but freedom with absolute stability.
So while many of you can't understand right away what is happening, believe me when we land, the landscape will have been tamed. We will be set to rule the extension production arena for yet another decade. JCB has crossed the 500,000 lines of code (mind you, some of that is the duplicated power classes), but it still is phenomenal to see its growth unfold in front of my eyes as I unpack the compiler. Never did I realize to what depth we have gone in its original creation, which, by the way, took years.
I have sat in so many meetings over the last few months, and I have come to yet the same conclusion: in many ways, no amount of explanations is going to convince the gainsayers. We best just show them a demonstration. To this end, I am working day and night.
So I will in the Telegram channel announce the time for our next session. I am working on creating a few short tutorials around some of the things you should know and understand going forward. Once of those will include the use of OpenAI Chat GPT-4 along side JCB.
Last note... hope to see and hear from you soon!
perfect i'll try to be there!
We are scheduling a meeting for the 23rd of May at 7pm CAT (UTC+2). Please ensure your calendars are clear for this event. This gathering is not tied to the release of Joomla 4; however, it remains a critical discussion where we'll explore various strategies for preparing your components for the transition to Joomla 4.
We'll delve into the new 'Super Powers' feature introduced in JCB 3.1.24, elaborating on its implications and utilities. Moreover, I will offer insights into the integration of Chat GPT-4 into our workflow, demonstrating how it complements the 'Super Powers' feature.
Lastly, we'll examine our successful endeavor of constructing the entire GITEA API in PHP, following this dynamic workflow. Your participation is highly anticipated as we continue to innovate and advance our collective knowledge.
We will use Telegram: https://t.me/Joomla_component_builder?livestream
Perfect i'll be there! will have to skip the marketing team meeting. But that should not be a problem.
In preparation for our meeting on the 23rd I have made a few tutorials so that we can get more focused conversations. Please review and give feedback as needed. Enjoy!!! (Don’t forget to like my tutorials)
@Llewellyn, regardless of any opposition or pressure, remember to afford yourself the necessary time. These ground-breaking endeavours are not something one can rush. I see a meticulously thought-out process at work here, one that is nothing short of awe-inspiring. Recalling the GUID you introduced some years ago, I see its purpose becoming clear only now. It's a testament to your deep understanding and careful planning, suggesting an underlying objective of considerable complexity and evident clarity.
Regarding the mutation of the 'powers' section, I now comprehend why it must reside within 'Powers' and not as a standalone. Though it might introduce some complexity, unifying under one distribution channel seems to be the most effective approach.
Did you manage to make any progress with the AI integration?