From 0bcb6fddd2fb023fab72f7c4542ea7fb5a497cf8 Mon Sep 17 00:00:00 2001 From: Amigo <49749100+aamigo@users.noreply.github.com> Date: Thu, 24 Oct 2019 13:54:46 +0200 Subject: [PATCH] Updated 063 Proposed Collaborative Workflow in JCB (markdown) --- 063-Proposed-Collaborative-Workflow-in-JCB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/063-Proposed-Collaborative-Workflow-in-JCB.md b/063-Proposed-Collaborative-Workflow-in-JCB.md index 87776e8..315f13c 100644 --- a/063-Proposed-Collaborative-Workflow-in-JCB.md +++ b/063-Proposed-Collaborative-Workflow-in-JCB.md @@ -3,4 +3,4 @@ [00:00:00](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m00s) (Click on these time links to see Youtube video) -I want to talk to you about a collaborative workflow now JCB Like any other Joomla component Can function in a shared environment quite easily Were you have one website or one system that is online And people can login And they can [00:00:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m22s) Edit documents Say let's say components They can Click on a component And while they're working on that component No one else can Because it will in effect Lock the component out to them so if we open That list view again you see that it's checked out And so this functionality [00:00:46](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m46s) Is available in JCB already So with it whether it's an admin view whether it's a field If your login and someone else opens it up it checks out the item and so people can work together Quite easily In a shared environment Where they have 1 JCB But multiple users More than that It's also has a very strong Permissional structure [00:01:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m13s) Which if you open the component Builder Permissional area you'll see that it has quite a long list I suppose longer than One might anticipate But it's huge List of permissions And that means you can have different groups in your Joomla You know groups and they got into these But I have access and is allowed to work on only certain areas And [00:01:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m44s) So your possibilities Of setting up a development workflow with JCB In one Joomla website is endless And that was the whole idea behind here was to make JCB A place where you could have teams work together In Joomla Developing components So this is the The one that's worked from day one this this approach And it is it is very powerful and [00:02:11](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m11s) I've already been told by quite a number of developers that they are using that they got teams working together On components and it is excellent So I'm happy to see that working But like we all know JCBs most Desirable environment is an offline environment Where you do development in your own local developing environment Where you maybe have a virtual machine running And you can do docker deployments Or something like that when you run Joomla and You're safe within your own network [00:02:48](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m48s) And when you do that The collaborative concept of working together other developers Sort of doesn't come to its right And That's what I've been working on And the whole idea of the JCB packages was birthed out of this need The need to collaborate with others around a specific component So we've also started working on a area called service In which we now have actually [00:03:21](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m21s) Added This option For sftp which is Oh really smart you know protocol And it's purely PHP so it it will function In Moving At the moment only moving zip files and things around But the idea would be in the long run [00:03:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m44s) That we could possibly create connections between different JCBs Which could automatically synchronise things like almost like they're on the same Yeah system But ok I did have a tread open on that On Github Connecting JCB's with each-other to sync development on agreed Project That was The issue that I opened up issue 233 And [00:04:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m14s) Then there was basically discussion between me And one of my coworkers And then Some other from the community Which ended up in Saying that this is a premium feature And although we have sort of put it on the back burner Like you see me say here I am still very much thinking about Taking this and making this a reality [00:04:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m42s) I'm so part of doing that Is taking a specific area of JCB And that area is the import of JCB packages And to improve this area so considerably that we basically The synchronisation will be nothing else but a JCB package traveling from one to the other And updating each other automatically and so To achieve that I started working on a feature Which now is available in the latest version 2.7 9 Auto Wait where's it [00:05:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m17s) Development method right that's the one And what we called it is the default is the way that is always used worked And then there's this expansion there's a tutorial about this Which really explains that you can select Specific Components That you've developed And then On the Frequency of this [00:05:39](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m39s) Cron job It will actually build and install This project automatically So that that is the first step of needing to Sort of make that connection between two projects possible Now projects I'm literally talking out different Joomla websites right One being offline one being online and then This one that's online to serve like a hug And I'm everybody that's offline Would be pushing the changes to this online and pulling Again from it so that is the [00:06:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h06m14s) Long-term aim so then if you listening Did you'd realize where I'm heading I'm I'm trying to get to the point where I can have a team of developers All having their offline environments Doing development on the same project And as they feel they achieved a certain level of stability in the project in a certain area They can make Literally a pull request To the online environment where JCB is running And then others can review those changes and [00:06:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h06m47s) Made that component can come in as a clone And they can play around with it until they feel ja this is good enough And then it can be merged into the main branch somehow So it's somehow putting git in a in a sort of an interface And Then obviously at some point I became So overwhelmed with the task That I started doing all these other little things that you now see coming about One of them being That I added a VBM package area which basically takes all the packages that we have [00:07:23](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h07m23s) Available online and put it right here easy to So get hold of it And So there are some free ones between them at the moment like this demo package here All of the packages that Are actually available on GitHub The actual Joomla component of this package Will have the source code link Showing up so that you can actually go look if you If you let say use select [00:07:53](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h07m53s) Which one question and answers Then there's actually a source code Area we can go look on GitHub To this program and you can actually take it and install it on Joomla website to see it's functionality And to see it's features And if you then Yeah that's how you can evaluate the package easily Basically it means that this JCB package produces this source code that's really what it gets down to So now today The [00:08:25](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m25s) The current workflow Model Looks as follow First you need to realize there is the JCB mapped just add the two p's there Mapped component and then there is the Joomla component This is the one that is sort of the fields the views the code everything inside of JCB That can be moved between [00:08:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m49s) JCBs Being One On one website one on other So you can actually extract a package And give it to someone and you can import it into his JCB And this is what this Is Where is the Joomla component is the produced package which Then when you compile that mapped component it produces a Joomla component and these are two [00:09:15](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m15s) Different things Although they are the same thing Now When I think about the workflow then This is affecting this But this cannot Effect This So you can Change here make changes to this package and it would uses a different [00:09:35](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m35s) Result In this package But if you make changes to this package it does not immediately would make any difference to this Package unless you make Use of what we have Call the custom code implementation We do editing Within the IDE Then yes then making changes to this package will affect this one But that's a whole different story [00:10:00](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m00s) And a little bit Beyond what I want to explain here So when I think about a workflow then I would like to see that we make it changed to this package It gets validated by what we have here And then everybody Updates again this package to be the same as what we decided on Here now that may not make sense So let me add some arrows And demonstration to this [00:10:31](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m31s) I'm gonna use this question and answers Package as an example So if you were going to become A Collaborator on the question answers package Then you'd first need to go to the source code of it So on GitHub you would go and open the source code And you will fork This source code Which would then [00:10:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m57s) Give you the option of making changes to this But not directly Manually But instead through JCB Now That means that you will then clone this repository that you have forked Down to your local development environment And doing it as follow The first thing you then do Is you go back to your component where it's installed on your local developing environment [00:11:26](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m26s) And you open the options area So that you can set the Folder path For your Get Files You gonna have a place Where all you get files basically the component unzipped Is going to be placed automatically for you So here you would [00:11:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m45s) Add that So I'm gonna place it in my Basically my User folder I'm going create a folder they call Joomla I have to do this manually And then inside of that I'm gonna add another folder called Git So that's what I'm gonna do and I'm gonna save this And then I'm quickly gonna create those folders and So I'll show it to you in the command line Ok I need to first add the [00:12:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m18s) Company information here Ok now save and close oops it got another one to chose This is just the language make sure To put it to British at this stage that is The Best practice And oh yes another thing I don't want to have any prefix at this stage And [00:12:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m42s) Yes Save and close Ok now we've got our Git path setup Now I need to actually create those files In my local developing environment So I'll do that via Command line So first I'll Make a directory [00:13:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m03s) Then I'm gonna change to that directory Now In that directory I'm gonna create another Directory called git And Change the add directory as well So this is a directory where in my components are going to be placed Now at the moment if we look inside of this directory there is really nothing showing But The first time I compile a component [00:13:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m34s) And I say to the compiler to add my Files to the git repository is going to create A folder with all the code inside it Automatically So you remember that I Cloned This repository on GitHub Joomla questions and answers Now [00:13:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m54s) to continue I need to get The JCB package for this Installed into my JCB Program The way this is done obviously we we go to the JCB package area And we select The Questions and answers package And we Get the package [00:14:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m18s) Then we add the key And we At the moment there is not really any components On this in install so it's fine to leave this to yes I'm gonna also Force local update of anything And so we can just check again that it is the right package yes it's to correct the package And the checksum You can read this Basically there is a checksum for the package and at the moment it seems that everything is fine you can make a final check of just clicking this link [00:14:50](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m50s) And make sure that this number is the same as the one seeing On the page here And yes it is So all is good And then we click continue And there you have it we've got the component in our System Now this component now If I compile it for the first time Let's again just this for [00:15:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h15m13s) For your sake let me show you That there still is No File here whatsoever Ok Now I'm going to compile this component And I'm gonna say Add to repository folder Ok so this [00:15:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h15m30s) Should the component been moved to your local repository folder now we already set the path for this So now we work If we add Say yes and then compile this We see that it's actually been done and it's all well And we now go back to that folder And we check again we see that ah now there is a folder with its exact name So if we changed into that folder We'll see that it is at the moment ls-la [00:16:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h16m03s) There's no git Information here so this folder is basically just a source code without Any git Connected To it So what we gonna do now At this point We are gonna connect your forked version That you have on GitHub [00:16:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h16m22s) To this folders here And that from now on If you make a change to the component It will be and you'll have to push the changes in this folder to the GitHub repository The way to make this the GitHub Link the two to each other Is to use the following commands Making sure that you're in the correct directory com - Questions and Dash and [00:16:50](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h16m50s) - answers - - Joomla - 3 You can run the command r m - f Capital R * Now I know You might say why Did we Compile it in now delete everything Well unfortunately [00:17:10](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h17m10s) That is the only way to do this Without difficulty you first need to get the information down from GitHub And Then you might ask why didn't we just do that first and that was because I'd seemed easier to just let JCB build folder for you And then You use the folder And so I'm gonna just wipe out all the files if we checked there now Basically no file left [00:17:35](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h17m35s) Then we going to Start by Actually pulling The The files down from GitHub First is to say git init Then to actually add the remote branch And to get the remote branch is URL your type out git remote add origin Then go to GitHub Where you forked the branch [00:18:02](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h18m02s) So and then here you get the URL just copying it here You can either use the HTTPS or the SSH which in my case is what I prefer So your pasted in there and click So to save it If you now would check the the config information You'll see that this remote branch is being added Now the next thing to do is to pull down the master branch This is done with git Pull origin Master This will now get all the information from Github [00:18:37](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h18m37s) Which basically is the same as what you have Here behind my Command line screen So if we were now to gonna do LS la Will see that there There is actually The files all back as they should be but now we have git here as well And my My [00:19:01](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h19m01s) Command line shows us that we have a git repository and we are on the master branch Ok So that was to get As linked to this repository Now we can go and compile it again at the moment if we do git status It should say that everything is fine and clean And there is no difference between these two But The moment we now Do another compile [00:19:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h19m30s) Is going to change the files obviously So now if we do git Status We'll see that all these files were modified And we can check to see what is it that was modified by doing git diff And we'll see mostly ok it added More lines The compiled version Was the 24th of April [00:20:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h20m03s) And now it's the 5th of May Ok scroll down Ok So the most ok here is another one that changed Ok so there's some XML that changed oh yes we made a improvement To the json to string in JCB So it also updated those functions And we removed the privative sorry prefix [00:20:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h20m41s) To the name so that's been updated So you can look through the diff to see all the changes that has been made The reason why The XML file format is changed Is because we are using different XML compiler here And I can show you that and a moment That you might understand OK hold on Here in the global options There is two ways to compile the XML in JCB [00:21:12](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h21m12s) It's really about well the reason why there are two ways it's because some servers don't support this one This simplexml Option It doesn't support it and mostly because it doesn't have all the PHP Models of things applications Activated So What we then have as a string manipulation option Which basically doesn't use the simplexml but does actually [00:21:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h21m41s) Still replace most of the time Building all these XML field string by string This one is how JCB started And is most certainly Working very well so I like using it But It's not necessarily The best option It's faster So if we compile it again now [00:22:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h22m03s) We will most probably see less changes to the XML Because I remember that package actually did Have Yeah it did use the string manipulation option So to exit this just press q And then again now to go back in And let's see what changed now dates And yeah there's much less [00:22:28](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h22m28s) In fact I don't see in XML changes Now Ok So Basically it's just the date That is changed And it's talking about the build date Now this is something we might need to look at Because the reason why it's changed is because we imported it Answer your your application things to build only started [00:22:51](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h22m51s) Today Wait no 24th of April Times flying that's all I realize that date is actually correct Ok So here we have All the changes is really primarily Just the built date And there's a little bit here there we JCB itself has improved So [00:23:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h23m14s) It's improved with this variable here Determines that that it's external Value that's with the json string remember I said to We've done a little improvement there So it really just actually reflecting the JCB improvement Which is really the way it should be Ok So that means If you now we were going to make a pull request We'll most probably will say thank you because you basically just updating [00:23:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h23m44s) The JCB improvements to the component Ok so let's show you how that will work You would now make a commit We should look something like this and remember I always show you the the simple easy way to do it There are more precise Better maybe but Difficult more difficult ways So update a component with improvements made to JCB And we click that obviously you sign [00:24:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h24m19s) Your commit and Git Push So this point You have made a change to component via your JCB Install And you're pushing it back To your forked version Of this components Joomla component which is on GitHub [00:24:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h24m42s) Now that means That if you refresh this page now It'll say that it 1 commit ahead Now I think at this point we need to discuss how many changes should you make before you make a pull Request And if 5677 people make the same changes Regarding Implementing Joomlas JCBs improvements Who is it we accept [00:25:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h25m09s) Yeah all those kind of things I suppose we'll still be ironed out as we go But at this point you could click make pull request And it will automatically take Take the Components and show that it can be emerge then you click On that make pull request And your comment should usually end up here in the In the title area We will for every package that we manage we'll eventually add a pull request template [00:25:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h25m42s) With instructions And how to manage it from here further And at this point you're actually saying I've made changes to the JCB Program Package Whatever you wanna call it And these are the changes of made tested and please let me know If you Like what I've done and [00:26:01](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h26m01s) There will be discussions here and please do not be discouraged if it doesn't go You know quickly There there obviously reasons for us to always go through things quite slowly and thoroughly I know in our own In-house developing team Things are going quite fast at this point because we have Sort of come to a place of understanding each other's Perspective so it goes quickly But Working with strangers and people we don't know [00:26:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h26m30s) Is obviously going to be more difficult and slower You won't have the option of editing all these values like I do because I actually own this repository But you must probably will be able to Come up to here and actually put in The necessary information that will ask for And then click here create pull request So this point If I did that It will create a pull request and [00:26:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h26m57s) The developers will be notified and will start communicating from here Now when this pull request with your changes have been Fully accepted And obviously you haven't made further changes To this component Then The next part of the Process needs to happen So If I can illustrate what has happened so far [00:27:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h27m22s) Your first forked The component then you imported that components JCB package Then you made changes in this case we didn't make changes but you could have added a new field or a new View The new compiled It Then in your local development You committed to changes to the Git repository so there's The here is also Linked [00:27:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h27m47s) And commit the changes to Git Then you put the changes to the forked A version And then you made a pull request And now the next step And this is the place where the json package manager is going to really come into play Because now You want to contribute this changes not only To the actual Joomla component which already is now being [00:28:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m13s) You know this this Pull request Is contributing it To this area of the component When this has been finalised The Next Step Is to also contribute it To the JCB mapped component And this one is Crucial because then everybody who's [00:28:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m33s) Helping to develop The mapped component Get this update Via JCB package manager And Ok so we're going to now demonstrate the next step So let's say at this point your commit is been accepted and merged into the Root The master branch Of the repository [00:28:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m55s) Then it should look like this it will say merged And if we were gonna look at this here It says now update the component with the improvements made by JCB Ok so Really That was The the point and which the next step must take place only once The changes you've made has been accepted In the Joomla component [00:29:20](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m20s) source Of the project Now The Next Step is to do that with JCB package as well Now all very VMS JCB packages are kept In the JCB packages repository So the next thing you need to do is you need to fork this repository Now I already forked this repository a few weeks ago a few days ago But you'll see that [00:29:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m47s) It's already 4 commit behind the master branch I can't really do anything Until I get in sync again With this master branch Making any commits now we'll mess things up and so First thing I'm going to do is make sure that this group this repository Is In sync With the master branch So obviously I"ll needed to be this repository needs to be cloned down to my local system [00:30:16](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m16s) Those of you that have quite a number of repositories and keeping them all in sync is a pain When is the shell script update forks Which is very useful Even if you're gonna run the Shell script itself you can at least sort of Peek at some of the commands How to get this done The way this does the moment what it does is it runs I know gets all the repositories that you You have forked and then it also updates them So there are a number of [00:30:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m49s) SSH files that you should have a look at I'm I'm just gonna open this Update repositories Well now I got the file open here I realize ok this is not gonna work Unless you are able to understand Bash You must probably not gonna actually Be able to follow this So et me rather do the commands one at the time [00:31:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m13s) Inside of that Repo But at least you know that there is a package here And if you do know Git a Sorry I mean Bash Then this is most certainly something to try out It's working very well I'm using it quite a lot And It's keeping all my forked repositories up to date and then sync With the master branch so that if I work with them That that it already is ready and I'm able to just you know Jump in and do it [00:31:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m42s) But it's not that hard to do it manually anyway So let's do that If you haven't cloned down the repository to your local developing environment Then you need to do that first nothing of what I'm gonna show you now will work unless you've done that Now few documentations that GitHub has that helps with us quite a lot so if your windows or Mac or Linux Yeah you can actually go to these URLs or just type in Google update my fork repo And do a search And then look for the one Which sort of [00:32:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m19s) Well this is a place you want end up at I then I'm gonna tell you that you must first configure Your repo to actually see the remote upstream So click on that and do this first And then we'll come back to this one First we do is we gonna just check out In a repo what is the remote branches And so we see that it only has this To remote branches And it fetch and pulls from those [00:32:52](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m52s) Now we want to add the remote branch Which is the upstream branch And we gonna use This one and Add the original owner so this one is your name This one must be the original owners name And the original repositories name So those two Values you need to You know update The way to get them is go back to your Repo [00:33:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m17s) And just Click on this Value here This should take you to To that Original branch And then you can just get it by copying This value here So then your type remote [00:33:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m33s) Add upstream Like it says there on GitHub And you will Control shift v To paste in command line Or those of you you can also paste With the mouse And so there is the repository I have a little [00:33:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m54s) Change to my SSH which means I use VBM To identify the server name That is something most of you wouldn't need to do And we'll click enter Ok so now If we do that Remote branch will now see that there are two Remote branches Two branches that are remote [00:34:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m17s) And the one is the origin in one is the upstream And that now is Time for The Next Step Which is the sync the fork So first what we will do It will fetch the upstream This will basically fetch the files That has changed From the upstream Which at this stage we know [00:34:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m42s) Is the Main Master branch Then just to make sure that you are on the master branch We are going to Say Git Checkout Master To make sure you are on the master branch next We are going to [00:35:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m09s) Merge The upstream branch into your master branch Now this will look differently depending on what happened But It will give you a bunch of emotion and then This branch is now basically The local branch is now in sync With master branch Upstream Master branch now To get this [00:35:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m34s) To also update your Branch on GitHub you just need to get Push And this will push the changes Back to git Now there are many things that can actually Go wrong or Sort of work out different In in Git And so I'm not here to teach you how to use git [00:35:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m57s) if you run into Some Grey areas or difficult issues You need to Google and Figure out how to get this done This is just sort of Illustrating The Proposed workflow Of developing components in JCB while collaborating With the greater community [00:36:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m18s) Around a JCB package Those of you that watched The tutorial on how to contribute To the community Directory Of JCB packages Then much of what I'm gonna be explaining further Is already covered in that previous tutorial And So we are almost finished with the circle [00:36:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m41s) We started by forking the JCB sorry the Joomla component And importing the JCB package Then making changes to that And then compiled it And pushed those changes to the Joomla Repo And when those changes were accepted Into that Repo We now Went to the place where we found the JCB package which in VDMs case [00:37:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m06s) Is the VDM package area Where if it was a community component then you would follow The explanation given to you in that previous tutorial and at this point what we going to do is we basically gonna export the JCB package Add it to these packages that we have here And run our hash so if we look at this LS - LA We've got a Hash.sh file here But if we want it now There there should be no changes to the repo [00:37:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m42s) And Just as we expected nothing changed So everything is up to date at the moment And so the only file we are going to change Is basically these three files here Because we are gonna update this package by exporting it from JCB With the changes we've made Now Since you've contributed those changes to this Question and answers [00:38:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m09s) Joomla component repository Those who are gonna validate this Push switch we're about to make I'm gonna go back to that repository And make sure that you're not changing things other than we should contribute it there in fact But some point my Anticipation is to actually build a bot which would validate this for us so that this stage it will still be live with manual so be slow [00:38:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m36s) But eventually will speed it up and the validation will happen faster and more efficient So you and JCB We now basically click on questions and answers And there is one little snag here which I realized I haven't actually resolved it And that is that you now need to actually have the same Key for this package Set in the admin or rather in the component As the one that the developer uses And that can only be given to you by the original owner of this package [00:39:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m13s) Which in this case is myself So and where does that what is that mean it means that this export key Must be the same one As the one that the package was compiled with originally Now if you have imported this and you see a key here You can be 100 % sure it is not the same key Because this is encrypted field You are basically just seeing the encrypted value Not the actual key The actual key was never exported [00:39:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m45s) Unencrypted it always remains encrypted and that's why we have the encrypted Fields all around JCB Not because we think is gonna make the database more secure necessarily That is because when we export and move data around That which is secret stay secret And only within that specific component developing environment of those keys unique So the way you get this is you need to communicate With that developer and actually ask him permission Whether you can extend on this package and then he needs to manually give you this key And so [00:40:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m22s) Since I can ask that From From for myself I'm gonna just add that key here to be sure that it is the same key With which it originally was compiled with Ok so now we've got those keys to be the same And it's sort of the way to tell everyone that you and that other developer Are an agreement That this in fact it possibly could happen That once your pull request To the JCB sorry to the Joomla component [00:40:53](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m53s) Repo Has been merged and accepted Then that team needs to give you the key That's how I think it'll work I'm not hundred percent sure this gonna be cemented Always got it changed But you do realize that trust and collaboration goes hand in hand So they need to give you the key if it's not a JCB package that actually requires a key Then it is a different story And yet the same sort of procedure will reply except the exchange of keys won't be necessary [00:41:27](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m27s) But now that you've got the key in place we basically click here And exported the JCB package So we now have this package Here in this folder And we now need to move it Into the repository Which is also Obviously the one we have now synchronised with our forked version So I have it here I'm gonna copy it actually gonna cut [00:41:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m54s) let's cut it From my temporal folder in my Joomla website To this repository paste it in And he is gonna ask if it should be Replace and we're gonna say yes Replace it And there we go we've got the package updated Now And we go back to command line And we do [00:42:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m17s) Git diff We'll see that That file is changed Now we also need to run this sh This hash file To update the And Now git Status [00:42:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m36s) we'll see if those files have updated So You'd possibly I'm not sure what VL Convention but I think Your pull request to the Joomla Repository of this component The ID of that could possibly be useful here It's just to sort of give a heads up and validate that you did First Contribute the code To the actual Joomla component and it was accepted [00:43:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m08s) And now this is the change to the package Which also now needs to be looked at So our case This is the pull request URL I think we just gonna use that in our commit message And Use the same commit message So it should looks something like this Update the component with the improvements made in JCB and maybe say ref [00:43:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m45s) And then The repositories username or organisation name The repository name With this Hash one Since the The pull request was number one Ok that would Do and then Will submit that [00:44:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m08s) And Now we push those changes to our Version of the repository Going back to GitHub then after the push has been submitted and we've look at this commit You see it actually has a link And this link is to that issue on GitHub To be easy for us to trace where you have contributed it to the actual Joomla component And why it's all happened being the same comment message [00:44:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m45s) Now this stage you again would make a pull request To the master branch Where we will basically review The changes Now again at this stage We don't have pull request templates and everything in place But as soon as they do get to be placed there then please follow those instructions Will try to be as thorough as we can But obviously being a community is always up for discussion and we will Try and [00:45:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m17s) Do this The right way At the moment we can put the ref in the description and then just again the comment in the Title if it's a long comment then just put Maybe a summary here short one and put the wrong comment back in here Ok and then you basically created the pull request At this point discussion will begin Validating to see that you followed all the procedures And that this package is stable and ready to become part of the Actual [00:45:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m49s) Repo And then once accepted it will be merged into the master branch Become available to the rest of the community So that's At the moment Illustration of what I consider a collaborative workflow in JCB So we Where at Next Step [00:46:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m09s) And we had to move to JCB Where They have now accepted and merged The Changes you made To the Joomla component And now the owner has given you the original key Because they trust The changes you've made And [00:46:28](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m28s) you know forked the JCB package repository Make sure you have it in sync if it's an old fork Then update the key with the key from the owner Then export to JCB package Add it to the local repo with a commit message and the reference As illustrated Then push the changed to your forked repo and make a pull request So here Is the workflow This could [00:46:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m55s) Become nicely documented I suppose Someone can take that upon them to even Make some nice chart I maybe not the correct guy for the job And this might Expand and become maybe much more advanced or it could be made more simple But in a nutshell just [00:47:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m19s) Below an hour We're at 47 minutes sort of This is the explanation of the collaborative Workflow with external Partners Around a JCB package Once this pull request gets merge we are basically back At the that this is in sync [00:47:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m42s) And This is in sync And this will continue and I'll go on and on And obviously others will contribute so There there are some other complexities also In this process But that is sort of what I can see happening I know that when you Pull the changes from the previous package you know this Where is it [00:48:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m09s) You know the import the JCB package There is the option to import it as a clone Or to import it with a merge Now the idea would be that you will only import and merge your JCB package With the global Repo As they accept This pull request And so that You would always stay in sync with what actually is currently the community version Of the package [00:48:37](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m37s) And you could import it it as a clone and make changes to the Clone and effect that will not effect the Main Master Version But this all is a trial and error process which You would Sort of show, teach yourself how that works And so my idea is to do that within a blank install try it out Pull in some of the free version play around with it Until you become confident [00:49:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m06s) And then you are able to also start contributing To not only the community packages But also VDM packages to which you've got access And so help improve those components For everyone Well thanks for watching I hope this is insightful And I'm sure there might be things that some of you would not able to follow And I would encourage you to just Google that and do some tutorials and [00:49:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m33s) Then I'm sure your will Manage. Ok thanks for watching. \ No newline at end of file +I want to talk to you about a collaborative workflow. JCB like any other Joomla Component can function in a shared environment quite easily, where you have one website or one system that is online, and people can login, and can [00:00:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m22s) edit components. They can click on a component and while they're working on that component, no one else can, because it will in effect lock the component out for them. If we open the list view again, you will see that it is checked out. This functionality [00:00:46](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m46s) is available in JCB. So with it whether it's an admin view whether it's a field If your login and someone else opens it up it checks out the item and so people can work together Quite easily In a shared environment Where they have 1 JCB But multiple users More than that It's also has a very strong Permissions structure [00:01:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m13s) Which if you open the component Builder Permissional area you'll see that it has quite a long list I suppose longer than One might anticipate But it's huge List of permissions And that means you can have different groups in your Joomla You know groups and they got into these But I have access and is allowed to work on only certain areas And [00:01:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m44s) So your possibilities Of setting up a development workflow with JCB In one Joomla website is endless And that was the whole idea behind here was to make JCB A place where you could have teams work together In Joomla Developing components So this is the The one that's worked from day one this this approach And it is it is very powerful and [00:02:11](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m11s) I've already been told by quite a number of developers that they are using that they got teams working together On components and it is excellent So I'm happy to see that working But like we all know JCBs most Desirable environment is an offline environment Where you do development in your own local developing environment Where you maybe have a virtual machine running And you can do docker deployments Or something like that when you run Joomla and You're safe within your own network [00:02:48](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m48s) And when you do that The collaborative concept of working together other developers Sort of doesn't come to its right And That's what I've been working on And the whole idea of the JCB packages was birthed out of this need The need to collaborate with others around a specific component So we've also started working on a area called service In which we now have actually [00:03:21](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m21s) Added This option For sftp which is Oh really smart you know protocol And it's purely PHP so it it will function In Moving At the moment only moving zip files and things around But the idea would be in the long run [00:03:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m44s) That we could possibly create connections between different JCBs Which could automatically synchronise things like almost like they're on the same Yeah system But ok I did have a tread open on that On Github Connecting JCB's with each-other to sync development on agreed Project That was The issue that I opened up issue 233 And [00:04:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m14s) Then there was basically discussion between me And one of my coworkers And then Some other from the community Which ended up in Saying that this is a premium feature And although we have sort of put it on the back burner Like you see me say here I am still very much thinking about Taking this and making this a reality [00:04:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m42s) I'm so part of doing that Is taking a specific area of JCB And that area is the import of JCB packages And to improve this area so considerably that we basically The synchronisation will be nothing else but a JCB package traveling from one to the other And updating each other automatically and so To achieve that I started working on a feature Which now is available in the latest version 2.7 9 Auto Wait where's it [00:05:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m17s) Development method right that's the one And what we called it is the default is the way that is always used worked And then there's this expansion there's a tutorial about this Which really explains that you can select Specific Components That you've developed And then On the Frequency of this [00:05:39](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m39s) Cron job It will actually build and install This project automatically So that that is the first step of needing to Sort of make that connection between two projects possible Now projects I'm literally talking out different Joomla websites right One being offline one being online and then This one that's online to serve like a hug And I'm everybody that's offline Would be pushing the changes to this online and pulling Again from it so that is the [00:06:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h06m14s) Long-term aim so then if you listening Did you'd realize where I'm heading I'm I'm trying to get to the point where I can have a team of developers All having their offline environments Doing development on the same project And as they feel they achieved a certain level of stability in the project in a certain area They can make Literally a pull request To the online environment where JCB is running And then others can review those changes and [00:06:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h06m47s) Made that component can come in as a clone And they can play around with it until they feel ja this is good enough And then it can be merged into the main branch somehow So it's somehow putting git in a in a sort of an interface And Then obviously at some point I became So overwhelmed with the task That I started doing all these other little things that you now see coming about One of them being That I added a VBM package area which basically takes all the packages that we have [00:07:23](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h07m23s) Available online and put it right here easy to So get hold of it And So there are some free ones between them at the moment like this demo package here All of the packages that Are actually available on GitHub The actual Joomla component of this package Will have the source code link Showing up so that you can actually go look if you If you let say use select [00:07:53](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h07m53s) Which one question and answers Then there's actually a source code Area we can go look on GitHub To this program and you can actually take it and install it on Joomla website to see it's functionality And to see it's features And if you then Yeah that's how you can evaluate the package easily Basically it means that this JCB package produces this source code that's really what it gets down to So now today The [00:08:25](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m25s) The current workflow Model Looks as follow First you need to realize there is the JCB mapped just add the two p's there Mapped component and then there is the Joomla component This is the one that is sort of the fields the views the code everything inside of JCB That can be moved between [00:08:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m49s) JCBs Being One On one website one on other So you can actually extract a package And give it to someone and you can import it into his JCB And this is what this Is Where is the Joomla component is the produced package which Then when you compile that mapped component it produces a Joomla component and these are two [00:09:15](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m15s) Different things Although they are the same thing Now When I think about the workflow then This is affecting this But this cannot Effect This So you can Change here make changes to this package and it would uses a different [00:09:35](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m35s) Result In this package But if you make changes to this package it does not immediately would make any difference to this Package unless you make Use of what we have Call the custom code implementation We do editing Within the IDE Then yes then making changes to this package will affect this one But that's a whole different story [00:10:00](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m00s) And a little bit Beyond what I want to explain here So when I think about a workflow then I would like to see that we make it changed to this package It gets validated by what we have here And then everybody Updates again this package to be the same as what we decided on Here now that may not make sense So let me add some arrows And demonstration to this [00:10:31](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m31s) I'm gonna use this question and answers Package as an example So if you were going to become A Collaborator on the question answers package Then you'd first need to go to the source code of it So on GitHub you would go and open the source code And you will fork This source code Which would then [00:10:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m57s) Give you the option of making changes to this But not directly Manually But instead through JCB Now That means that you will then clone this repository that you have forked Down to your local development environment And doing it as follow The first thing you then do Is you go back to your component where it's installed on your local developing environment [00:11:26](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m26s) And you open the options area So that you can set the Folder path For your Get Files You gonna have a place Where all you get files basically the component unzipped Is going to be placed automatically for you So here you would [00:11:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m45s) Add that So I'm gonna place it in my Basically my User folder I'm going create a folder they call Joomla I have to do this manually And then inside of that I'm gonna add another folder called Git So that's what I'm gonna do and I'm gonna save this And then I'm quickly gonna create those folders and So I'll show it to you in the command line Ok I need to first add the [00:12:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m18s) Company information here Ok now save and close oops it got another one to chose This is just the language make sure To put it to British at this stage that is The Best practice And oh yes another thing I don't want to have any prefix at this stage And [00:12:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m42s) Yes Save and close Ok now we've got our Git path setup Now I need to actually create those files In my local developing environment So I'll do that via Command line So first I'll Make a directory [00:13:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m03s) Then I'm gonna change to that directory Now In that directory I'm gonna create another Directory called git And Change the add directory as well So this is a directory where in my components are going to be placed Now at the moment if we look inside of this directory there is really nothing showing But The first time I compile a component [00:13:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m34s) And I say to the compiler to add my Files to the git repository is going to create A folder with all the code inside it Automatically So you remember that I Cloned This repository on GitHub Joomla questions and answers Now [00:13:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m54s) to continue I need to get The JCB package for this Installed into my JCB Program The way this is done obviously we we go to the JCB package area And we select The Questions and answers package And we Get the package [00:14:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m18s) Then we add the key And we At the moment there is not really any components On this in install so it's fine to leave this to yes I'm gonna also Force local update of anything And so we can just check again that it is the right package yes it's to correct the package And the checksum You can read this Basically there is a checksum for the package and at the moment it seems that everything is fine you can make a final check of just clicking this link [00:14:50](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m50s) And make sure that this number is the same as the one seeing On the page here And yes it is So all is good And then we click continue And there you have it we've got the component in our System Now this component now If I compile it for the first time Let's again just this for [00:15:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h15m13s) For your sake let me show you That there still is No File here whatsoever Ok Now I'm going to compile this component And I'm gonna say Add to repository folder Ok so this [00:15:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h15m30s) Should the component been moved to your local repository folder now we already set the path for this So now we work If we add Say yes and then compile this We see that it's actually been done and it's all well And we now go back to that folder And we check again we see that ah now there is a folder with its exact name So if we changed into that folder We'll see that it is at the moment ls-la [00:16:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h16m03s) There's no git Information here so this folder is basically just a source code without Any git Connected To it So what we gonna do now At this point We are gonna connect your forked version That you have on GitHub [00:16:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h16m22s) To this folders here And that from now on If you make a change to the component It will be and you'll have to push the changes in this folder to the GitHub repository The way to make this the GitHub Link the two to each other Is to use the following commands Making sure that you're in the correct directory com - Questions and Dash and [00:16:50](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h16m50s) - answers - - Joomla - 3 You can run the command r m - f Capital R * Now I know You might say why Did we Compile it in now delete everything Well unfortunately [00:17:10](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h17m10s) That is the only way to do this Without difficulty you first need to get the information down from GitHub And Then you might ask why didn't we just do that first and that was because I'd seemed easier to just let JCB build folder for you And then You use the folder And so I'm gonna just wipe out all the files if we checked there now Basically no file left [00:17:35](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h17m35s) Then we going to Start by Actually pulling The The files down from GitHub First is to say git init Then to actually add the remote branch And to get the remote branch is URL your type out git remote add origin Then go to GitHub Where you forked the branch [00:18:02](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h18m02s) So and then here you get the URL just copying it here You can either use the HTTPS or the SSH which in my case is what I prefer So your pasted in there and click So to save it If you now would check the the config information You'll see that this remote branch is being added Now the next thing to do is to pull down the master branch This is done with git Pull origin Master This will now get all the information from Github [00:18:37](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h18m37s) Which basically is the same as what you have Here behind my Command line screen So if we were now to gonna do LS la Will see that there There is actually The files all back as they should be but now we have git here as well And my My [00:19:01](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h19m01s) Command line shows us that we have a git repository and we are on the master branch Ok So that was to get As linked to this repository Now we can go and compile it again at the moment if we do git status It should say that everything is fine and clean And there is no difference between these two But The moment we now Do another compile [00:19:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h19m30s) Is going to change the files obviously So now if we do git Status We'll see that all these files were modified And we can check to see what is it that was modified by doing git diff And we'll see mostly ok it added More lines The compiled version Was the 24th of April [00:20:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h20m03s) And now it's the 5th of May Ok scroll down Ok So the most ok here is another one that changed Ok so there's some XML that changed oh yes we made a improvement To the json to string in JCB So it also updated those functions And we removed the privative sorry prefix [00:20:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h20m41s) To the name so that's been updated So you can look through the diff to see all the changes that has been made The reason why The XML file format is changed Is because we are using different XML compiler here And I can show you that and a moment That you might understand OK hold on Here in the global options There is two ways to compile the XML in JCB [00:21:12](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h21m12s) It's really about well the reason why there are two ways it's because some servers don't support this one This simplexml Option It doesn't support it and mostly because it doesn't have all the PHP Models of things applications Activated So What we then have as a string manipulation option Which basically doesn't use the simplexml but does actually [00:21:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h21m41s) Still replace most of the time Building all these XML field string by string This one is how JCB started And is most certainly Working very well so I like using it But It's not necessarily The best option It's faster So if we compile it again now [00:22:03](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h22m03s) We will most probably see less changes to the XML Because I remember that package actually did Have Yeah it did use the string manipulation option So to exit this just press q And then again now to go back in And let's see what changed now dates And yeah there's much less [00:22:28](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h22m28s) In fact I don't see in XML changes Now Ok So Basically it's just the date That is changed And it's talking about the build date Now this is something we might need to look at Because the reason why it's changed is because we imported it Answer your your application things to build only started [00:22:51](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h22m51s) Today Wait no 24th of April Times flying that's all I realize that date is actually correct Ok So here we have All the changes is really primarily Just the built date And there's a little bit here there we JCB itself has improved So [00:23:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h23m14s) It's improved with this variable here Determines that that it's external Value that's with the json string remember I said to We've done a little improvement there So it really just actually reflecting the JCB improvement Which is really the way it should be Ok So that means If you now we were going to make a pull request We'll most probably will say thank you because you basically just updating [00:23:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h23m44s) The JCB improvements to the component Ok so let's show you how that will work You would now make a commit We should look something like this and remember I always show you the the simple easy way to do it There are more precise Better maybe but Difficult more difficult ways So update a component with improvements made to JCB And we click that obviously you sign [00:24:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h24m19s) Your commit and Git Push So this point You have made a change to component via your JCB Install And you're pushing it back To your forked version Of this components Joomla component which is on GitHub [00:24:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h24m42s) Now that means That if you refresh this page now It'll say that it 1 commit ahead Now I think at this point we need to discuss how many changes should you make before you make a pull Request And if 5677 people make the same changes Regarding Implementing Joomlas JCBs improvements Who is it we accept [00:25:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h25m09s) Yeah all those kind of things I suppose we'll still be ironed out as we go But at this point you could click make pull request And it will automatically take Take the Components and show that it can be emerge then you click On that make pull request And your comment should usually end up here in the In the title area We will for every package that we manage we'll eventually add a pull request template [00:25:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h25m42s) With instructions And how to manage it from here further And at this point you're actually saying I've made changes to the JCB Program Package Whatever you wanna call it And these are the changes of made tested and please let me know If you Like what I've done and [00:26:01](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h26m01s) There will be discussions here and please do not be discouraged if it doesn't go You know quickly There there obviously reasons for us to always go through things quite slowly and thoroughly I know in our own In-house developing team Things are going quite fast at this point because we have Sort of come to a place of understanding each other's Perspective so it goes quickly But Working with strangers and people we don't know [00:26:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h26m30s) Is obviously going to be more difficult and slower You won't have the option of editing all these values like I do because I actually own this repository But you must probably will be able to Come up to here and actually put in The necessary information that will ask for And then click here create pull request So this point If I did that It will create a pull request and [00:26:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h26m57s) The developers will be notified and will start communicating from here Now when this pull request with your changes have been Fully accepted And obviously you haven't made further changes To this component Then The next part of the Process needs to happen So If I can illustrate what has happened so far [00:27:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h27m22s) Your first forked The component then you imported that components JCB package Then you made changes in this case we didn't make changes but you could have added a new field or a new View The new compiled It Then in your local development You committed to changes to the Git repository so there's The here is also Linked [00:27:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h27m47s) And commit the changes to Git Then you put the changes to the forked A version And then you made a pull request And now the next step And this is the place where the json package manager is going to really come into play Because now You want to contribute this changes not only To the actual Joomla component which already is now being [00:28:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m13s) You know this this Pull request Is contributing it To this area of the component When this has been finalised The Next Step Is to also contribute it To the JCB mapped component And this one is Crucial because then everybody who's [00:28:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m33s) Helping to develop The mapped component Get this update Via JCB package manager And Ok so we're going to now demonstrate the next step So let's say at this point your commit is been accepted and merged into the Root The master branch Of the repository [00:28:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m55s) Then it should look like this it will say merged And if we were gonna look at this here It says now update the component with the improvements made by JCB Ok so Really That was The the point and which the next step must take place only once The changes you've made has been accepted In the Joomla component [00:29:20](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m20s) source Of the project Now The Next Step is to do that with JCB package as well Now all very VMS JCB packages are kept In the JCB packages repository So the next thing you need to do is you need to fork this repository Now I already forked this repository a few weeks ago a few days ago But you'll see that [00:29:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m47s) It's already 4 commit behind the master branch I can't really do anything Until I get in sync again With this master branch Making any commits now we'll mess things up and so First thing I'm going to do is make sure that this group this repository Is In sync With the master branch So obviously I"ll needed to be this repository needs to be cloned down to my local system [00:30:16](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m16s) Those of you that have quite a number of repositories and keeping them all in sync is a pain When is the shell script update forks Which is very useful Even if you're gonna run the Shell script itself you can at least sort of Peek at some of the commands How to get this done The way this does the moment what it does is it runs I know gets all the repositories that you You have forked and then it also updates them So there are a number of [00:30:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m49s) SSH files that you should have a look at I'm I'm just gonna open this Update repositories Well now I got the file open here I realize ok this is not gonna work Unless you are able to understand Bash You must probably not gonna actually Be able to follow this So et me rather do the commands one at the time [00:31:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m13s) Inside of that Repo But at least you know that there is a package here And if you do know Git a Sorry I mean Bash Then this is most certainly something to try out It's working very well I'm using it quite a lot And It's keeping all my forked repositories up to date and then sync With the master branch so that if I work with them That that it already is ready and I'm able to just you know Jump in and do it [00:31:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m42s) But it's not that hard to do it manually anyway So let's do that If you haven't cloned down the repository to your local developing environment Then you need to do that first nothing of what I'm gonna show you now will work unless you've done that Now few documentations that GitHub has that helps with us quite a lot so if your windows or Mac or Linux Yeah you can actually go to these URLs or just type in Google update my fork repo And do a search And then look for the one Which sort of [00:32:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m19s) Well this is a place you want end up at I then I'm gonna tell you that you must first configure Your repo to actually see the remote upstream So click on that and do this first And then we'll come back to this one First we do is we gonna just check out In a repo what is the remote branches And so we see that it only has this To remote branches And it fetch and pulls from those [00:32:52](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m52s) Now we want to add the remote branch Which is the upstream branch And we gonna use This one and Add the original owner so this one is your name This one must be the original owners name And the original repositories name So those two Values you need to You know update The way to get them is go back to your Repo [00:33:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m17s) And just Click on this Value here This should take you to To that Original branch And then you can just get it by copying This value here So then your type remote [00:33:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m33s) Add upstream Like it says there on GitHub And you will Control shift v To paste in command line Or those of you you can also paste With the mouse And so there is the repository I have a little [00:33:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m54s) Change to my SSH which means I use VBM To identify the server name That is something most of you wouldn't need to do And we'll click enter Ok so now If we do that Remote branch will now see that there are two Remote branches Two branches that are remote [00:34:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m17s) And the one is the origin in one is the upstream And that now is Time for The Next Step Which is the sync the fork So first what we will do It will fetch the upstream This will basically fetch the files That has changed From the upstream Which at this stage we know [00:34:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m42s) Is the Main Master branch Then just to make sure that you are on the master branch We are going to Say Git Checkout Master To make sure you are on the master branch next We are going to [00:35:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m09s) Merge The upstream branch into your master branch Now this will look differently depending on what happened But It will give you a bunch of emotion and then This branch is now basically The local branch is now in sync With master branch Upstream Master branch now To get this [00:35:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m34s) To also update your Branch on GitHub you just need to get Push And this will push the changes Back to git Now there are many things that can actually Go wrong or Sort of work out different In in Git And so I'm not here to teach you how to use git [00:35:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m57s) if you run into Some Grey areas or difficult issues You need to Google and Figure out how to get this done This is just sort of Illustrating The Proposed workflow Of developing components in JCB while collaborating With the greater community [00:36:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m18s) Around a JCB package Those of you that watched The tutorial on how to contribute To the community Directory Of JCB packages Then much of what I'm gonna be explaining further Is already covered in that previous tutorial And So we are almost finished with the circle [00:36:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m41s) We started by forking the JCB sorry the Joomla component And importing the JCB package Then making changes to that And then compiled it And pushed those changes to the Joomla Repo And when those changes were accepted Into that Repo We now Went to the place where we found the JCB package which in VDMs case [00:37:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m06s) Is the VDM package area Where if it was a community component then you would follow The explanation given to you in that previous tutorial and at this point what we going to do is we basically gonna export the JCB package Add it to these packages that we have here And run our hash so if we look at this LS - LA We've got a Hash.sh file here But if we want it now There there should be no changes to the repo [00:37:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m42s) And Just as we expected nothing changed So everything is up to date at the moment And so the only file we are going to change Is basically these three files here Because we are gonna update this package by exporting it from JCB With the changes we've made Now Since you've contributed those changes to this Question and answers [00:38:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m09s) Joomla component repository Those who are gonna validate this Push switch we're about to make I'm gonna go back to that repository And make sure that you're not changing things other than we should contribute it there in fact But some point my Anticipation is to actually build a bot which would validate this for us so that this stage it will still be live with manual so be slow [00:38:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m36s) But eventually will speed it up and the validation will happen faster and more efficient So you and JCB We now basically click on questions and answers And there is one little snag here which I realized I haven't actually resolved it And that is that you now need to actually have the same Key for this package Set in the admin or rather in the component As the one that the developer uses And that can only be given to you by the original owner of this package [00:39:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m13s) Which in this case is myself So and where does that what is that mean it means that this export key Must be the same one As the one that the package was compiled with originally Now if you have imported this and you see a key here You can be 100 % sure it is not the same key Because this is encrypted field You are basically just seeing the encrypted value Not the actual key The actual key was never exported [00:39:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m45s) Unencrypted it always remains encrypted and that's why we have the encrypted Fields all around JCB Not because we think is gonna make the database more secure necessarily That is because when we export and move data around That which is secret stay secret And only within that specific component developing environment of those keys unique So the way you get this is you need to communicate With that developer and actually ask him permission Whether you can extend on this package and then he needs to manually give you this key And so [00:40:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m22s) Since I can ask that From From for myself I'm gonna just add that key here to be sure that it is the same key With which it originally was compiled with Ok so now we've got those keys to be the same And it's sort of the way to tell everyone that you and that other developer Are an agreement That this in fact it possibly could happen That once your pull request To the JCB sorry to the Joomla component [00:40:53](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m53s) Repo Has been merged and accepted Then that team needs to give you the key That's how I think it'll work I'm not hundred percent sure this gonna be cemented Always got it changed But you do realize that trust and collaboration goes hand in hand So they need to give you the key if it's not a JCB package that actually requires a key Then it is a different story And yet the same sort of procedure will reply except the exchange of keys won't be necessary [00:41:27](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m27s) But now that you've got the key in place we basically click here And exported the JCB package So we now have this package Here in this folder And we now need to move it Into the repository Which is also Obviously the one we have now synchronised with our forked version So I have it here I'm gonna copy it actually gonna cut [00:41:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m54s) let's cut it From my temporal folder in my Joomla website To this repository paste it in And he is gonna ask if it should be Replace and we're gonna say yes Replace it And there we go we've got the package updated Now And we go back to command line And we do [00:42:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m17s) Git diff We'll see that That file is changed Now we also need to run this sh This hash file To update the And Now git Status [00:42:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m36s) we'll see if those files have updated So You'd possibly I'm not sure what VL Convention but I think Your pull request to the Joomla Repository of this component The ID of that could possibly be useful here It's just to sort of give a heads up and validate that you did First Contribute the code To the actual Joomla component and it was accepted [00:43:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m08s) And now this is the change to the package Which also now needs to be looked at So our case This is the pull request URL I think we just gonna use that in our commit message And Use the same commit message So it should looks something like this Update the component with the improvements made in JCB and maybe say ref [00:43:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m45s) And then The repositories username or organisation name The repository name With this Hash one Since the The pull request was number one Ok that would Do and then Will submit that [00:44:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m08s) And Now we push those changes to our Version of the repository Going back to GitHub then after the push has been submitted and we've look at this commit You see it actually has a link And this link is to that issue on GitHub To be easy for us to trace where you have contributed it to the actual Joomla component And why it's all happened being the same comment message [00:44:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m45s) Now this stage you again would make a pull request To the master branch Where we will basically review The changes Now again at this stage We don't have pull request templates and everything in place But as soon as they do get to be placed there then please follow those instructions Will try to be as thorough as we can But obviously being a community is always up for discussion and we will Try and [00:45:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m17s) Do this The right way At the moment we can put the ref in the description and then just again the comment in the Title if it's a long comment then just put Maybe a summary here short one and put the wrong comment back in here Ok and then you basically created the pull request At this point discussion will begin Validating to see that you followed all the procedures And that this package is stable and ready to become part of the Actual [00:45:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m49s) Repo And then once accepted it will be merged into the master branch Become available to the rest of the community So that's At the moment Illustration of what I consider a collaborative workflow in JCB So we Where at Next Step [00:46:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m09s) And we had to move to JCB Where They have now accepted and merged The Changes you made To the Joomla component And now the owner has given you the original key Because they trust The changes you've made And [00:46:28](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m28s) you know forked the JCB package repository Make sure you have it in sync if it's an old fork Then update the key with the key from the owner Then export to JCB package Add it to the local repo with a commit message and the reference As illustrated Then push the changed to your forked repo and make a pull request So here Is the workflow This could [00:46:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m55s) Become nicely documented I suppose Someone can take that upon them to even Make some nice chart I maybe not the correct guy for the job And this might Expand and become maybe much more advanced or it could be made more simple But in a nutshell just [00:47:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m19s) Below an hour We're at 47 minutes sort of This is the explanation of the collaborative Workflow with external Partners Around a JCB package Once this pull request gets merge we are basically back At the that this is in sync [00:47:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m42s) And This is in sync And this will continue and I'll go on and on And obviously others will contribute so There there are some other complexities also In this process But that is sort of what I can see happening I know that when you Pull the changes from the previous package you know this Where is it [00:48:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m09s) You know the import the JCB package There is the option to import it as a clone Or to import it with a merge Now the idea would be that you will only import and merge your JCB package With the global Repo As they accept This pull request And so that You would always stay in sync with what actually is currently the community version Of the package [00:48:37](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m37s) And you could import it it as a clone and make changes to the Clone and effect that will not effect the Main Master Version But this all is a trial and error process which You would Sort of show, teach yourself how that works And so my idea is to do that within a blank install try it out Pull in some of the free version play around with it Until you become confident [00:49:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m06s) And then you are able to also start contributing To not only the community packages But also VDM packages to which you've got access And so help improve those components For everyone Well thanks for watching I hope this is insightful And I'm sure there might be things that some of you would not able to follow And I would encourage you to just Google that and do some tutorials and [00:49:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m33s) Then I'm sure your will Manage. Ok thanks for watching. \ No newline at end of file