Getting Started With Open Source Projects

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey what's going on everybody so today i have eddie with me we are talking to the open source master and i am looking for some guidance here so this is much needed help for me he's a github representative i'll just call him that i don't know if that's official but uh yeah we uh we're gonna be talking about open source getting started and uh contributing to the community and i have a lot of questions myself because of an open source project that i started so i've wanted to do this for a while ever since i got on youtube and started pushing projects and tutorials out i have had people ask me to do something live one second my uh my youtube channel just turned on so i had that five second lag got into my headset so yeah ever since i started i've had people wanting me to do something that's open source and i just kind of went through it or went for it with eddie's recommendation but now i'm stuck with a bunch of questions because i don't know github that well i don't know how to run a discord server which a bunch of people have stepped up and started helping me with so yeah this is what we're gonna be talking about and uh just to give people some context the project that i started was uh it's like a stack overflow slash twitter clone maybe like a medium platform so you can write articles you can ask questions and so on so eddie i've had so many people step forward as moderators people contributing to code which i i'm like overwhelmed with now because i'm like wow like i don't i don't know how to clean all this up or make sure that i'm pushing the right code so yeah it's been a little bit crazy so if you can just give your background with open source and what you do on youtube with your job and by the way eddie uh is linked up with his twitter account and youtube account down below so check him out there yeah if you can just give a quick intro sure thank you so much for having me on your channel dennis i'm super super excited um it's great to geek out with you and your community about open source my one true true love so a bit of background on me um i've been a full stack developer and devops for over 15 years before full stack was a word before devops was a word i i got into open source over 10 years ago before there was git github like it was a very different landscape back then and things are just so much more exciting now so much more collaborative and i've been a freelancer or contractor however you want to call it for over 10 years and i love love doing that and i share my my journey my adventures on my youtube channel as well as you mentioned so open source so i've just been doing open source for ages and my first like over 10 years ago my first uh contribution i won't say pull request because there wasn't a pull request back then so my first contribution old school super old school um was fixing a typo so if anyone says you know i fixed the typo i didn't really contribute that adds a value and open source is about adding value it could be raising an issue fixing a typo and i'll be honest you know between you me and the few people that are watching in your community my tenth contribution was fixing a typo still but then i started to understand how the flow worked and i started doing bigger and you know better contributions uh last year became a github star so there's about 30 of us selected to be a github star and i actually won github star of the year so that's actually one out of 55 million people on github i'm super proud of um so that's really good this is all kind of community based so i'm not a github don't pay me to say this this is um i just love open source i love collaborating with everybody but i'm a completely open book so anyone can ask any questions and i'm more than happy to to share so you're the perfect person to ask these questions to then that's that's amazing that's why i'm excited so uh the the one thing i want to get started with because i have a bunch of my own questions and i want to get through those but the first thing is the first thing that i experienced in that discord server was people wanting to know how to contribute so there's people that are just getting started with what i'm teaching in my case i'm using django and react for the project and they're just kind of getting familiar with that but they're not familiar with github in itself or they don't even some of them don't even know what github is they don't know how to uh send a poll request how to actually contribute so that's what i want to start with is what are the minimal requirements like i know github isn't the only platform where you can do something like this but it is probably the you know by far the number one i don't know what the percentage is uh what's that minimal requirement that people learn like they should probably learn github learn all the local and live commands like what's what do you recommend to get started with there the the minimum requirements is just the passion to learn that sounds really cheesy but literally if you can use a web browser if you can like register on on a platform you know be it facebook or instagram github if you've got an email address you can register then you can use github because you actually don't even need git the the github platform will allow you to create a repo which is like a project um and it will also allow you to make upload files create files on the platform make contributions to other people's projects all via the ui yes you'll eventually get to a limit of what you can do and you'd want to then clone the project locally to be able to do a lot more with git but it is it's a lot to take in i remember when i first got on github it is a lot to take in i first got started with git there is there is loads they're both platforms or both tools are really feature rich and you don't have to learn everything you can just learn a little bit as you need so my biggest advice to everybody is just to register and get started and just click around like the beauty of github and being underpinned by git you can't do anything wrong like if uh if we went to dennis's repo now we want to make a contribution and accidentally delete all the files dennis has to accept that so if he doesn't accept it then then nothing's gone um only in your what we call a fork which is a copy of dennis's project under our account would it get deleted and it's still not deleted forever because you could either undo that you could either delete your fork so your copy and then refork it again so there's nothing you can do wrong and one thing i do like in my live streams if i want to really encourage people to get started is i say right everyone go create a terrible issue one that doesn't make any sense i'll just go through and close them i guarantee you that tomorrow will still turn up as in like you know it's not gonna ruin like tomorrow's events and it's just breaking the ice for people they're worried if they raise a bad issue and an issue is like like a ticket or a task or people watching don't know what issue is it's just like a a discussion point and you've got to think about open source as collaboration first and code second because if you want to make a contribution to your project or someone else's we always recommend raise an issue that's starting the conversations that's the collaboration and once you've kind of agreed roughly what's going to happen then you you make your changes you raise a pull request and a pull request is just like an issue but it has some code oh my mic has some code attached to it and then you're just having the conversation again about the changes so it's collaboration changes and collaboration again and that's just the thing that people should look at is you can't do anything wrong just just try so github for sure then you said at different levels is definitely one of the like the minimal requirements then as far as contributing that's one area where like my insecurity kicks in right now because like we were talking before he was on a different stream and just personally or on a twitter spaces and uh i don't know github that well like i have very bad practices and this is where when i was starting it that was like my biggest concern i'm like there's people that are like oh i just forked your project and i was like what the hell is a fork i've built out applications this is where insecurity kicks in because i i worked on a project for two years like i've sold a product i've built real things but i was the one contributor and the people that helped me the people that i hired just kind of worked within my ecosystem like i just never did that like that's a huge flaw but in theory like like what you said like i i worked with what i was able to do but it wasn't the best but you can start at some point so getting those basics learning like what a clone is like you mentioned that's just to or to fork a project which is to make a local copy of yours on your github account clone it make a change push a commit or a pull request things like that are definitely necessary we can we can do that if you want if you're happy to share your screen i'm happy to fork your project and make a contribution to you we're more than happy to do that right now live if you wish sure we can actually do that yeah yeah let's uh let's do that in a couple of minutes here i want to set that aside that'd actually be cool and uh if i looked up if i look up uh open source like you're like the first person that comes up you're on traversing media you're on your channel i see you on free code camp so anybody looking to get started like you can't miss eddie when it comes to open source so go check out those like entry-level projects and and what they need to or what you need to learn i guess you get started i mean there's a lot of content out on youtube on that but yeah definitely definitely needs to get started then you'll see eddie and if i can add one more thing to that i want to say like the benefits of open source so i think you were talking about you know people contributing to your projects and it's great as a maintainer and you'll get to learn i find that as a maintainer i learn different skills um when i'm reviewing stuff it helps me when i submit issues or pull requests to other people's projects i feel i do them better because i see the ones that come in like oh that's really great how they mentioned that or described that or laid that out and vice versa i think oh that's really bad i will do that differently and it just helps reinforce it in my mind but for everyone watching the number one thing that has helped me to get where i am and is it get clients that i don't chase after they chase after me they don't negotiate me down and negotiate me up is from open source they literally find me on github be it i've had facebook contact me i've had google i've had github i've had smaller startups and they all contact me via github they can get to see not just only my work but also my communication and collaboration and that's really important a lot of companies nowadays they do want to see how you collaborate will you be a fit for their team and the only way to get better at raising an issue or raising a portion collaborating with people who have you know different languages or just explaining things in text asynchronously is is to do it and i can really see when i interview someone from my clients if they've contributed to open source because they will explain themselves very differently they'll always give context there's um so i go on dennis oh no i was just just kind of nodding along to what you're saying oh okay sorry um but just i just want to recommend to people that it's it's it's so beneficial you're going to learn tech you're going to learn communication and you're going to grow your network so everyone just get involved in open source contribute to dennis's project and remember it's about adding value if you find a bug and raise an issue that is adding value and you will get a green square and if someone raises a pull request and you know you want to review it you can review it you won't be able to merge it that's only for the maintainers but you can still review it give feedback what i love about my open source projects and the eddy hub community is by the time i get to review a pull request it's already had three or four people review it and it's in an amazing state and either i can hit merge or one of my maintainers already merged it in and they've taken care of it and it's i feel that everyone's collaborated really well and learn and learn so much that's really cool that you talked about that i wanted to get into the benefits of it because that's where i feel like i i feel a little bit overwhelmed and guilty it's weird because i have people committing their time like this this is not a small task that they're doing and random strangers that you know followed me somewhere got to know me are spending their time on a project and this is an open source project it's not like i'm i'm not paying them at some point i would like to find contributors that i can see who stand out and allocate some kind of budget to them if the project does go but that's kind of intense and that's where i kind of struggle with like where do they see or where do they find the benefit and you mentioned that employers look for that you found jobs that way or people have reached out to you what does that look like so far for the contributor these people are getting what you would call green um the green squares right so i want to pull that up i'm pretty sure most people know what that looks like but let me uh share my screen here so as you're contributing you're getting these green squares and that is telling somebody what about you it's telling them that you're contributing to the community that you know what you're doing or what does that say to an employer so the green squares themselves don't have value but it's that first impression like if you've got a grid on your on your profile that has lots of green squares it just shows that you're you're collaborating with people and contributing to the community and open source and at the same time you're up skilling so the squares themselves you know doesn't someone says i got two thousand green squares it doesn't mean they're they're good or they can collaborate with people but it's the first impression you get so when you look at this and you see right there's some green squares let me dig deeper and let me see what they they they do so you want people to dig deeper and you got to have the the green squares to to encourage them so at first glance it just shows activity yeah you're right like they can be you know a spell check or a correction um they don't really necessarily say something about you but once people look into it uh you're probably not too proud of my green squares huh we need to talk dennis we need to talk hey i'm getting involved i'm getting involved we'll definitely see a lot more yeah so do people find you on this is this something that when you're sending people like when they're checking checking out your let's say a portfolio website like i have github linked up i think i do everyone probably should have it linked up because you're showing your projects but this is where that impression comes in yeah for the um for especially for the bigger clients the one who's who paid more they they want to look at this because they don't just want to look at my code today they want to look have i improved from today versus six months ago so i tell everyone to share as you go along even if it's not perfect even if the project's not finished and actually especially if the code is not perfect and especially if the project's not finished because if you're still learning you'll always look back at your code and think that was awful and the project will never be finished um you might give up on that project and work on another project but the point is that your next next project will always be better so definitely share as you go along you don't want like a whole weekend of like i don't know 100 green squares and nothing for the next six months it needs to be kind of spread out and so people can see the how you've appro improved as you go along how you've raised best issues and just collaborated with people and that's really really important that's one thing i look for when i'm hiring for my clients is how do people collaborate with other people you don't want an amazing coder but can't work with a team on most projects there are multiple people on a team yeah that's that's what i'm learning right now is is the team contribution or the contribution like dealing with other people's inputs like i'm always so used to making the decision and then that's it but it's forcing me to take a step back and actually yeah start working with somebody and try to i guess meet in the middle on certain certain assignments and so on that's definitely fun to see so you said uh people have found you but have they found or have you heard of anybody directly find somebody on github like to somebody that's contributing to my project right so instead of just building up their github portfolio or let's say they're green squares they're trying to make everything look pretty by contributing to my project is there a way that people can find them directly on github because i know it has a social feature i know you can even take in donations like if you have a cool project or some kind of open source project people can actually contribute directly through github and donate or give a tip whatever but how does that look what does that look like yeah so github has github sponsors where you can sponsor someone um they have different tiers very much like patreon but the great thing is they don't take any commissions or whatever you sponsor someone on github they get the full amount and actually at one point github were matching all your sponsors so when i was getting like i don't know i've got like 12 or 15 sponsors i was getting like 100 a month github at one point were also sending me an additional hundred dollars to match all the sponsors that i got which was which is awesome and i sponsor loads of people on github as well i just think it's uh it's really really cool um but yeah people have found me so you know i think hr recruiters definitely head of engineering departments they're not just going to look at your linkedin or your twitter obviously they want to see that but they actually want to see you know what you do and with linkedin and twitter and your portfolio you can write whatever you want right i could write hey i'm president of the uk or whatever um but uh on on github it is what it is right there's no no two ways about it and and i think that's why it's so great and it is a social network it's a social platform it is you know you can start someone's project like liking someone's photo on instagram um i didn't know that for the longest time like i had no idea about the social feature i just used it because i needed to push some code and that was it and then all of a sudden i'm seeing like all these interactions and you can look up projects like i never i've never done that like this is how new i was to it but i think there's lots of people in that boat which is why it's such a great great way to have this conversation and yeah um it's quite interesting how and we'll have a look at this in a second but along the tabs on the top on a repo a repo is called a repo because it's a git repo but when i started on github it was just a git repo you like had no tabs on the top but now it's not really just a repo it's actually a project because you have the issue tracking you have the project board which is like trello or kanban board you have github actions which is ci and cd you have a wiki um you just have so many things and i do appreciate it's quite hard for people to pick that up because when i got started they weren't there and every time they kind of brought out a new tab effectively i could just learn that tab rather than trying to learn i don't know eight tabs or whatever they've got at the moment so i do appreciate it's hard for people but i just recommend everyone get started and don't worry about all the extra stuff um just get started and you'll pick it up as you go along yeah i look at your portfolio and it uh it intimidates me right away like there's so much customization that you make it's it's impressive like i'm looking at it you're you have your own banners gifs in there all these custom links i'm assuming that's just a readme file is that correct it is yes so if you make um if you make a repo the same name is your username as you can see eddie child forward slash eddie jiled then whatever you put in the readme will appear on your on your profile but to be honest i didn't make all of that i started that and people improved it for me so what i suggest to everyone if you want like a customized github profile people cannot contribute and help you until you create that repo and that file so once you create that reaper in that file actually github will give you a template that you can get started with there's some icons and you just fill in your name and your email or whatever you want your website and just leave it there if you want but then someone else can come and make contributions and and don't assume people won't i see so many people who say i'm not going to sign up to give up sponsors no one's going to give me money i don't add much value and then they say eddie i finally signed up like you said and i got five sponsors already like yes because you add value for you it's easy to do something but if someone's stuck it doesn't matter how easy it is for you for them it's really really hard and so that's why i think people shouldn't belittle what they do if you add value it's um it's it's going to help someone out a lot if they're stuck i mean to give an example when i first started freelancing one of my first freelancing clients was i've got this website and i've paid someone to build it for me and i've bought this domain but i can't put the two together i can't host it and i said well that's fine i can deploy it to you back in like ftp and all sorts of old stuff and i did it and i did it in like i don't know an hour or something and they said oh my god you're a genius that's amazing and literally it's not because for me i've done it a hundred times in my projects and my and so forth that it was easy for me but for them it was impossible they said they'd spent months trying to do it for these steps but they don't know what dns is they don't know what ftp is all the rest so don't everyone shouldn't belittle their contributions it's going to add value to somebody else in the community if i may talk for one more second and give one more example there was a project a few years ago that i saw they said step one clone the repo step two npm install and they got so many requests and confusion by people who were new to to node for example who would say i do npm install but this package not found and because there's actually a missing step which is cd into the directory that you just cloned and the maintainers and a lot of people who've been in industry for a while just assume that's easy and again it's easy when you know how but when they added that step in they got a lot more contributions they got a lot more people using their project because it's just made it easier for people rather than people walking away going this project doesn't work well it does work but it's just kind of a missing step where people made the assumption so yeah everyone watching don't make the assumption if something's missing even no matter how small it is it's going to help other people in the community like lower the barrier to entry for everybody that's a really good point like i'm having people contribute or they're showing like where they're talking about features that they want to add to this project and some of those features are not like extremely complex but they're things that i still have to do research on so i'll just reach out to them and i say hey i see you added for example somebody's working on a notification feature right so if somebody comments on your post or likes a post you'll see that notification pop up immediately like that's something that i'm going to be working on that might take me a day or two to implement but somebody else has already worked on that and it's very simple for them but for me i just haven't made that time to do it so that connection we just expedited this process by probably two days like that's really cool to see i see there uh that this project right here so i'm looking at your help repo again this is to your personal website so you have 13 contributors wanting to customize your website which is eddie how do you spell how do you pronounce your last name uh eddie giled but actually this is not the website this is this is done with low code for different reasons um but this is this is not my website this is um my customization of my github profile so if you click on the my first at the top left where you have eddie jiled um oh oh yeah just that one yeah click on that i'll go to my profile and you'll see the same thing that you see here so that getting pulled into here to customize it um but if you want to go to an interesting project uh if you scroll down there should be one called stargate i started quite recently so here's the people sponsoring you right there that's that's pretty neat i'll have to sponsor some of the people contributing to mine like i don't have a crazy budget but i want to but even one dollar right if i say to people if you want to sponsor someone i would rather like if someone says to me hey i got ten dollars to sponsor you sorry it's not anymore i'm like whoa whoa whoa just give me one dollar and then give one nine other one dollars to other people because it really motivates that person it really means a lot so i i value my one dollar donors as well as you know the the sponsors who give me 25 so yeah i don't think it's the value so much it's more of the actually making an effort to to do that so definitely do that but this the reason why i say bring up this repo because this repo is actually a client reapers it's a real project i'm doing it with best practices in mind i'm sure it's not perfect i'm sure uh people i will have some suggestions and if you do please raise an issue and you'll get a green square for raising an issue but what i love about this is when people are and this is done in uh in typescript and if people don't know typescript like i know dennis is a python person i know you do front end as well but let's just assume you do python only at the moment then for me that adds value because dennis for example could look at this and say this doesn't make sense we should do this we should do this and that adds value so if you don't know a technology don't see it as a negative i actually really see it as a positive because you've got a fresh pair of eyes you look at it from a different point of view but what i love about this project is it's fully automated so it gets dockerized when when something gets merged in to the default main branch it gets dockerized it gets pushed to the github registry then um a release is taken with the same number and then also it's deployed to a kubernetes cluster and then on it's a discord bot so when you type in like the display discord bot command version it would output the same number so everything's in sync documentation is deployed to github pages even our labeling in the issue section uh is all from code in or json in the repo so if someone wants to add a new label they can send a pull request and therefore the maintainer i don't have to be the only one that adds a label someone else could add a label and we're actually following um the open source labeling standards uh and that's the only github action so you can automate anything on the github action and we can go into that in more details if you want i'm more than happy to show you some examples because that's just yaml files people go ah give up actions automation is literally just yaml files and you can automate anything so in in javascript we have the package.json file i'm sure in python you have something similar anything that you automate with your commands put them on github actions to run linters to run automated tests whatever it is automate everything is really really important so you're saying you have uh you would add in contributors like how do you find those people because that's what i struggle with because if you're adding a contributor to the project right you're saying like you're not having to push everything or taking every pull request do you make sure that they have limited permissions to the project that they can't just crash it or let's say commit to the master branch or how does that work sure so sorry maybe i explained that slightly slightly wrong um so everyone who contributes comes via a pull request okay so um they could be on the project that could not be on the project it doesn't matter because the main default branch um which used to be named master you're right uh is protected even i can't push or sometimes i override it which is a bit naughty but if i got no one to review it or it's just a simple change he says famous last words um everything has to go viral our report requests so in an idle situation everything should go even the even the maintainer because i've raised poor requests before and i get people to review it and people have spotted things that i didn't spot or they make an improvement to it they do say you realize there's a better way to do this and i'm like oh my god i actually didn't know about it so although my way might have worked it wasn't the the most efficient way the cleanest etc and so on and just to go back to the automation i just remembered one more thing when we create the the release which is like um a git tag what that means is it's like something that doesn't change you've got version 1.2.3 and that can't change you can add more to it and create the next version it doesn't change but we also generally automatically generate our change log so in our change log we'll know what bugs were fixed what new features were added and the numbers are all automated incremented up so um yeah with that project it's a really good example if people want to automate everything you have to worry about should i take a tag what's the next version number is it a minor is it a major or is it a build number it just happens all automatically and again with a few lines of yaml um you can you can do that wow i feel like that's a little bit out of what i you know it's well it's definitely out of my scope for now like i'm just trying to maintain a project here make sure nothing breaks i'm definitely going to have to dig into your project and have a proper look you'll be surprised if a little bit of just a small bit of effort um you can you'll make it stand out makes you make your life a lot easier so before we get into that then i want to show you my approach i'll just i'll talk about my approach and i want to know because this is where i'm getting inside now i want to know if i'm going about this the right way so i i started this project i let everybody know i created the discord server it's got a bunch of members in there now and the whole idea by the way that discord server is linked up if you want to join the whole idea is to build build out the mvp so the minimal viable product and then have people start contributing to that and i'm assuming that's the right way like you don't want to just start a project and then have people just start shooting code left and right like you need some kind of foundation and do that so my plan is to build out that minimal viable product set the scopes to that project and then allow people to really start contributing it like or contributing to it like one thing that i did before that though is i also decided to build out our own ui kit and i had some some people join for that and they built out this ui kit so this is actually on that github repo for things like the buttons the cards we're gonna use on the website like this isn't done by me this is complete i guess not strangers anymore but this is people that just completely volunteered their time to build this right here so we have that so the ui kit i'm allowing people to contribute to even though i did have to set like the standard of like what are the colors we're using uh what styles do we want to stick to for the content and what the actual cards on the website look like but is that the right way to go about that like i'm assuming you want to have that bass first you don't want just to start from scratch you i think you're right about the bass but my bass is different so i used to uh think like you as well i think i usually want to put kind of how to run the automated tests how to do this how to run the lender have it all set up and then get people started whereas now i'm more about like do i have um husky so therefore the commit messages for the right standard and and stuff like that for me it's actually less about the the code because we can make improvements to that so given let me think of an example if someone is giving a really crude example and we'll take your ui as an example if someone puts a button on the page and it hasn't got curved corners but it but it works it's clickable and maybe it's off to the left doesn't look the best but that's already adding value to the project right it works people can click it it can do whatever it needs to do if you want to move it to the right make it bigger a bit more padding make it have grounded corners that can come later and the value that that adds is a little bit less actually would you rather have it had curved corners looked wonderful on the correct side of the page but didn't work no the value is actually in it working and when you when you log into i don't know github or facebook if the button was i don't know not a line just like to the side and didn't have rounded corners you wouldn't care you could log in and do what you needed to do so for me you're right about the foundations definitely but i think over the over the years i've kind of of open source i've thought the foundations of the actual code is less important because as long as it's it's good enough i'm not saying you know put in any anything bad as long as it's good enough and adds value to the project we we get it in and then we get someone can make an improvement later and that's why i really like small features and small pull requests because we can get them in in faster if i give another crude example we had someone who said look eddie you haven't got a contributing.md file let me uh let me make that for you i'll get back to you in a month or two it's going to be like two pages long it's gonna be epic right so the value for the project in the community is gonna have to wait like one or two months and then the open source world might mean three months people get busy no just create the file and put one line of value in it like it might just say any questions asking discord here's the discord link but that's already adding value to the people who are new to the project and because you've got that file now other people then can add more lines um and then add more value to it and then over time it will probably grow a bit maybe shrink a bit as more people add improvements make it more concise grow a bit but over time it's going to get better but the value to the community straight away so yeah i agree with you but i do also understand try and get value to the community sooner and try and get people on board sooner as well make sure that what they contribute is tiny so that it still adds value but it's small enough that you can review it really quickly like if the if the pull request is over i don't know over a page i'm like well i'm more likely to say you just split this up into multiple programs there are exceptions to that but really rule of thumb yeah wow i'm doing a lot more than that as far as like the pages like i'm i'm i i'm waiting until i have like a big pull request to send up and then i'll make the change it but i guess my example would be this like i made the login page let's go to the website actually so i make this login page or i built out you know the standard page right now if we check this one out now it does have issues here but what happens is i build this page and then people will start making changes with it but they started completely redesigning the page and that's where i was like whoa whoa okay we need to set some kind of standard because i can't have the ui being changed every every single couple of hours like they would completely redesign this and that's where i'm kind of having the issues because at one end somebody put their time and energy into this and made the changes so i don't want that to go to waste i don't want to just to i don't want to block their pull request or what's the term cancel it or um but i do need to set that standard so that's where i decided okay once i build it out once i go through the basic functionality like we have our login page we can go to a user what does a user look like what does a a discussion look like then i can have people contribute to that so that was more of my my thought process was get that structure out i mean that makes sense and if you've got the time to to do all that then i kind of you've got a really good vision but you could have i suppose um done something in like adobe xd where you show them what it looks like and then they could have could have done it that way and if you had set up a lot of the classes maybe they could have just you know reused that and then they could have built it so it's more i think as a maintainer it's more about setting the standard so you're absolutely right you want that consistency but also i encourage people to raise the issue first so therefore they raise an issue before they do the work because someone might say hey i to move the profile icon at the top and notification of the parts up i want to put it in a footer along the bottom they might spend a week on that because that's how long it takes them to learn how to do it understand the project get up and running all that sort of stuff and then you might say no thank you and you're right that is really hard like it's awful to say no thank you to something you definitely don't want it but you know they've put in a lot of work so i always encourage everybody to to raise an issue first and check with the maintainer that it is what they want and they might say great idea but actually could you do something slightly differently so they still kind of want the basis of the idea but it might tweak it and you're only having a conversation in the issue rather than actually making the changes which could have taken um a lot of time so you're saying i've never done that by the way so you're saying it's good to if it's a big change to raise an issue first maybe ask the question if this should be done and then submit the pull request work on it and submit it right i think for almost everything raise the issue first for two reasons one because um the maintainer or someone else in the community might have an idea of how to improve it or say this actually a duplicate of this or this conflicts with this whatever the reason definitely raise the issue first and also you get extra green square for raising the issue so you get green square for the issue you get a green square for the commit and you get a green square for the pull request so maybe um the the pull request you'll submit tomorrow but if you raise an issue today you've got a green square for today and the green square for tomorrow and it also shows good practice because then when you raise the pull request at the top of the description you can say closes hash and a number like one two three of the issue so therefore when the maintainer closes the pull request or merges the pull request automatically closes um the issue so it makes it a bit easier so again as uh well not again how can i say this as a suggestion to a maintainer i would say raise some issues that you want people to work on and maybe give them like levels like this is either you can give them t-shirt sizes like easy medium or hard or you could give them story points like you know fibonacci one two three five eight thirteen and some people might pick a five some people might pick a one but they know they don't know what the size of one is or what size of five is they know the five is five times the work of the one if that makes sense so yeah um that's quite good and i think people like that because it's a it's a standard that people use a lot at work and or they might not use it but they might use it in the future um yeah so raising it and you can use a project board there's a project tab at the top you can put your issues on my project board and you can move things around um i have a lot to learn you definitely definitely want to use that if uh any of the moderators from the discord server are watching definitely take note of that we'll have to because i had a lot of people reach out and say hey i'm really good at maintaining discord projects or github projects so take note let's do that let's apply it because that seems very useful so before we get to it i see people are wanting us to clone the project i do want to get to that right now one other concern just i'm assuming i kind of know the answer to it it's just something that you're gonna have to deal with but uh for example the design right like i'm assuming you want to add in like hey this is how we name our classes this is what we're using in the ui kit treat please try to follow these standards um but yeah things like that like let's say like right now i'm building in the comment thread here let me i thought my screen was open so i'm building in the comment thread here so when you click on this right here it's gonna expand it um i would love to just ask somebody to build that out for me but they also don't know what the api calls going to look like so it's hard to understand how to build that in until we have that request right um so maybe the classes go ahead when you say they don't know what the the api call is is that because the api has been hasn't been built yet or it's built and there's no documentation yeah it's being developed right now so that's kind of like what i'm trying to do both like in theory what i'm doing right now actually is this is all from a javascript file so i designed the api by just creating like a json file so i designed that first and then i designed my my database based on around that because i have to turn that into an api anyways it's a relational database i turn it into a json file by serializing it so i'm doing that and it's it's making sense but once the actual code comes out what if they start using class names that i'm not familiar with or things that aren't up to par like you want to probably always add a note and say hey please rename your classes or design something that looks more like you know abc or something like that let more of a concern i guess i don't think there's necessarily a solution to it but yeah i just wanted to see what you thought about that no that's a really good point so you're right i like the how you did the json because then you can kind of work in in both directions you've got the middle of your app where the front and back end talk and you can um you know if you agree the contract then someone else can do the api and then someone else can do the ui and they know what data is going to be be sent that's brilliant but in terms of uh with components on the front end can you not have a lot of components that are that are potentially probably reused um if you try and get someone to build a component but it might not be i don't know react but i'm assuming it's similar to angular um can you not get someone to build the component that isn't maybe in in place and then you can agree and put it in i see what you're saying so basically add that like to the ui kit like make a components library for that so like right now we have we have a standard for buttons right like if you want to use this button right here you see the code you just do btn btn main so if we had like a comment component like we have a card here so you're saying build them out in different sections and then that way when i'm implementing it it's easier to update my code base and the ui kit okay i i see that that makes sense exactly and this this it's it sounds like i'm saying oh you know i'm probably really sounding really preachy and this is the way it should be done i think every project does it slightly differently but i think you know there's a lot of overlap and on the way to do it but then you might tweak it for your community for your workflow for your needs your speed there's so many things so i think it's um if you do tweak certain things and i'm saying that it that is that is fine and i'm always learning every time i do a new project as well i get feedback from other people and i'm always kind of making improvements to that um so it's not it's not easy definitely not easy i mean one thing that i also like to do sometimes is you've got the json file that agrees the contract between both of them so in the ticket for the ui if you're doing them as a separate issues then um because sometimes we do vertical uh vertical steel thread so i'd have someone whoever does the ui we'll do the back end and i'll make it as simple as possible just to kind of get it get it working and have a lower fidelity and add more and more facilities to it but sometimes you have different technologies if you've got python and javascript you have different people do it so um what you might do there is yes have to have the json contract and then in the front-end ticket you'll say this is the data that you're going to get from this endpoint and you could always have a branch on on git and on github where you have uh the python backend just returning some some hard code adjacent like the work hasn't been done but then the front end can actually make a http request and from their point of view it is real and you could also then we i use um cucumber and gherkin from automated testing wrapped around cyprus for the front end and so i can actually write the test of what i want to succeed in plain english so i can say given i'm on the what page was that was that the feed page do you call it yeah so that's just like the the home feed like when you log into like let's say twitter this is going to be what you see here so like what everyone's posting i guess yeah like a feed okay so i would say given i'm on the feed page um when i click on the item and the button whatever then i expect to see this and it will look for it and then that test will fail but that test will be part of that front-end feature so that person will will will um um will know their work isn't complete it still might need reviewing and improvement but they won't know it's functionally complete until that test automatically passes if that makes sense so i'd create a branch like if this was issue one two three um then i would say issue one two three we might even put like i said the gherkin syntax i mentioned given when then what we call it and then it would run on ci and it would fail obviously there's no code there but when they add the code to make it work it should then pass and they know that theirs is functionally working it might need some reviewing in terms of you might want styles changed you might want the coding style changed as well but hopefully you've got linting you've got you know all the other uh stand you know prettier and linting all the other bits that you need to make sure all those kind of boring things like when you see a pull request and you're seeing extra space extra blank line missing you know i don't know should be formatted differently i just think that's kind of waste of energy and time from people so i try and use automated tools like um yeah linter and pretty and so on that gets that out the way so the person will not know that they need to sort that out already and then when you have a conversation talking about the actual kind of more in-depth valuable stuff okay yeah as far as like best practices i i would follow your method because i know everyone has their own style will customize it but i fully trust yours you clearly have the experience yeah but this looks really cool though i do like the look of this i'm gonna maybe i will um contribute some automated tests uh do you what are you doing automated testing yet no no no no we're i'm building out the front end i have part of the back and built out but i'm pretty much merging those two so my style is to like when i start a project because a lot of people were curious about how that flow even goes i'm not to go too far into that i always create like a sandbox environment so what i do is like um i don't really draw up my code like i'll maybe put it on paper what the scopes are what it should look like but i just like to get coding and get started and i will just start with like the template what it's going to look like and then i'll just go to the database and i'll code the database up and start building out the api for like half a day and then i'll go back and forth and i'll add in a feature then what i'll do is i'll take a copy of that project cue it somewhere just kind of save it for myself start a completely new project and start working off my old code base take all the things that i didn't like from that project and this is that time where i'm not i'm not having anybody contribute this is like just for me to see and i'm trying to get an idea in my head of what the project is going to look like so that's kind of what i've been doing and that that the database and the api that i have it's not public it's somewhere in my folders because i have like three different versions of it now because each time i'm taken away and sometimes it's easier to start fresh than it is for me to fix my code so that way like i might not like how i did something in the last project but at least i have that stored so i can go back to it and see how i did that one specific part like in this case i'm working on like a like a share option and a retweeting option so i already built that in but i need to look back at my old code but i don't want to delete it either so yeah that was just kind of a i guess my method of going about that but whatever works for you i think so i think that's really good if that works for you then i think you know maybe you can like tweak it maybe use github more you might better use github gists you might be able to use branches you might do other things but it sounds like it works for you so that which is the most important thing i think some people try and force something because someone else said it it's the perfect way to do it but doesn't work for them makes them go slower makes them hate the project which is definitely not not the right thing to do yeah so you want to try to clone it and uh give this a test because i think it'd be cool for people for uh for everyone to see that let's do it i see we've got mercy pink from the eddie hub community got so many people from the hub community hey everyone collaborate and communi network of all of dennis's awesome community and they're asking can they contribute to the project yes you can because i'm going to do that now as well so we have a link right now so i'm going to post that in the comments section the only thing that is on github right now is the ui kit what you're seeing right here is still locally so this ui kit is the only thing that's live so if we want to just clone this right now contribute push it i'll uh accept the pull request i'm assuming so i'm gonna go ahead and post that that's in the comments section that's our ui kit in the ui kit you're gonna see a link for the github repo right here if you go to this this is the github repo to the project now pretty soon probably tonight let's i don't know i don't know if i'll be able to make it tonight i don't want to make a promise but by tonight i should have the front end code right here and i'm going to to work on the back end so this is a yeah this is something that was made by by somebody in the community this ui kit here so let me close all this out and should we share your screen here should we jump to that yeah we can i know someone asked also about my camera just i'm using the sony a7 r3 and this is kind of like the behind the scenes setup if you want to kind of kind of have a quick look and i can geek out that's crazy iran yeah i see myself back there okay um yeah let me let me share my screen as well and we can start uh geeking out i've missed so many awesome messages in the chat so i really uh apologize everyone it's just chat's going so fast and i didn't want to miss out on what dennis was was saying as well we'll have to we'll have to jump into that by the way so yeah i see some of the contributors right here they're already on uh one of my moderators nice okay so you got the link should i i'm gonna try to pin that maybe uh yeah if you could actually um okay so let me see if i can do that from youtube oh no i've got it now actually i'm okay i think i've got it okay so i just pinned the message for anybody else that wants to see that so that's just the ui kit cool okay and this is the let me make it a bit bigger we're going and see that okay so this is eddie's screen now so he's on the project he's going to go to you're going to go to the github repo and then clone it right or 4k clone it awesome yep so i'm going to fork it i'm not going to clone it because by cloning it means i bring it locally i'm gonna do this all within the browser it's like yeah within the the browser on um on github so i'm gonna support dennis shirley by giving a star i think people don't realize that adding a star really helps support people so do do that um so yes if i want to make a change this is how this is how simple it is to if you make a change let's let's see what we can do what what improvements can we suggest so let's have a look you've got links you've got screenshots love the screenshots really good um let me see if i can find an improvement everyone have a look around and see what improvements uh you you think i guess we can add the discord server link to that yeah let's let's do that join the discussion and that's in the youtube comment description or comment section yeah let me uh i can post that in here too well i've got that so everyone all you need to do is find the file you want to make the change to and if you've if there's loads of source files in there and you know you what you want to search for you can also search the top it can search the repo or it can search the whole of github so in this case i want to add it to the readme so i'm going to click on the readme and then you get a pen at the top right and i'm going to hit edit and it's going to tell me that it's going to fork it into my account automatically for me so github takes care of this for me you can do the steps manually yourself by clicking fork and then it will add it to my project but i want to be a bit lazy i'm just going to hit the full button hit the edit button and it goes straight into edit but it says you don't have permission to write to this so we've created a fork can you zoom in a little bit it's a little bit short tough to see i think something's on the phone i better yeah something's a little bit better yep cool so um yes and i see people suggesting contributing guidelines i want to show you a trick to some of those in a moment actually remind me in a second i think it was faisal and so forth remind me a second we'll look at that so link so we've got the ui kit okay so i'm going to add one underneath i want to do it in bold keep consistent when you contribute someone else's project it's really important to follow their style even if you don't agree with the style it's good to follow it so for me i don't agree with it because the whole line is in bold and i don't like that i prefer any part of it being involved but it's not my project and if you were to make an improvement to someone's formatting do that in a different pull request to if you're adding a line so in this case i'm adding a line say for example this chord there's no point me reformatting the line above it because it makes it harder for the maintainer to understand what's going on but also they might want one of them and not the other so say for example i added the discord link and dennis didn't want the reformatting and i've done the reformatting in the same pull request where he's going to say no to the whole thing or ask me to make more changes whereas if we do it's two pull requests you can accept one and say no thank you to the other really good point by the way because i've had that where i've liked the changes but they've modified so many other things in the same poll request that i've had to sit down and try to modify that pull request or just completely block it or i guess decline it and say this this isn't going to work because i can't fix all this and just maybe write that in the comment but that makes sense to have smaller pull requests yeah if people want their pull request to get merged make it smaller and in the description put a screenshot before and after if it's a visual make it as easy as you can for the maintainer and if you chat with the maintainer in discord and then you go raise an issue or a pull request please please please do not say following our discussions i've made changes a it's like great we've had 100 discussions today which one are you talking about you can say follow our discussion but go get a screenshot or copy and paste from discord the actual discussion and therefore other people who weren't involved in the discussion can also understand your issue or your pull request because if there's more than one maintainer they might not have been involved in that discussion so when they're reading that they think well what discussion whereas if you've got the the kind of context it's really important it will help you find the job and do interviews better and all the rest so i've made a change i just hit on preview at the top so before i submit this or i could submit it badly and dennis can write a comment and i can make some more changes if you want but this is what i've done dennis what do you think so far i'll approve do you want me to make it bad so you can put an inline comment in uh sure yeah let's give it a shot does that mean that i can't accept the pull request or am i modifying that uh it means you're just gonna you're not accepting it you're not rejecting it you're just gonna say actually i kind of want to accept it but i need you to make a change first so i want to remove the bold so it's inconsistent with the top so now if we look ui kit is bold but discord is not so i'm going to submit that so you scroll to the bottom and this uh this is going to make a commit and what a commit is it's like saving the file or saving the changes this is really good to be descriptive there are conventions for this and so i do use conventional change conventional commits where you write like feature or you write fix or you write docs so in this case i don't know if you want me to just use this or you'd rather i didn't i could just say no i love your methods i'm hoping my community sees this i'll post this in that server so whatever you feel is best do that that way they can follow it awesome so the great thing about doing this from doing the commits like this you can generate change logs you can generate the releases like this is like underpinned so much of the automation so it's really good to get this right even if you don't use it straight away so i'm going to go docs and docs wouldn't bump the the version of the release a fix would bump the build number uh a feature would bump the minor number and then and then a major would be bumped manually so i'm gonna say docs uh discord um discord link there's no point saying like when people write sometimes if i just cut that people write sometimes updated readme we know from the pull request and the commit that it's been updated so it doesn't add value remember everything you do has to add value so in this case it's going to be me too me too and then people you know i might say this and kind of preach it and then people say eddie this didn't make sense to me and you just get better each time that's why giving people feedback is i love getting feedback because it's just always improving and actually the other thing i should do has anyone pointed this out in the chat um i'm surprised vive iv you didn't point this out you're usually eagle-eyes i didn't raise an issue first so i want to get an extra green square and i want to make sure dennis is uh happy to accept this i'm gonna say uh discord link in the readme i say uh i think we should add this okay cool and i've got the link somewhere i did have it open somewhere i've lost it again here we go um and really we should have issue templates to make it easier for people but we can get into that later on and i'll show you how you can create some templates so you raise the issue i should get the alert right okay yeah so i want to submit that i even put the link that i want to add because you might say that's the wrong link i want to add a tracking link i want to add a different link so when people say so everyone watching when you say you want to add a link be specific about the link you want to add so therefore the maintainer can make sure it is the right link it's just saving that kind of back and forth so collaboration and communication is important but you want to have it on the important stuff not on the you're missing a space you're using the wrong link like little things you because that kind of ties everybody out so now so i was just saying so now on my end i can see that issue but go ahead and finish your what you were saying no no i was going to say now dennis should have a notification and hopefully we'll reply right there that's something that was just done that's why i laughed about that okay so we see an issue so we're in the in the project or in the repo i go to issues and i see two of them so these are both committed by okay so somebody said add a site description okay so this is uh what's the name thank you vibe thank you okay so description so what i do i'm typically just responding to the description or just saying yes we need this no we don't yes you might say great idea thank you very much with the repo description um only the maintainer can update it so uh there won't be a pull request unless this is yeah um this is gonna be on if i go to the repo i'm guessing there isn't one oh there is a description so maybe there is i didn't read the whole issue let me read it properly okay so i'm responding to your thing i gave you a comment right responding to your your issue so this lets you know that okay yes we should we should make this change and you're going to get the notification i'm assuming here if i go back to yours yep so let me see yeah you can see that it's come up let's do it that's all right um and then what you what i'm gonna do now is okay now i'll go and make the edit and um you know dennis is happy with it so i'm actually gonna make the pull request this is the commit that we were coming to a moment ago before i raise the issue uh discord link and so now what i would do in my commit is i would include the reason why i paused and wanted to raise the issue i want to use this number and this is the format the reason for this is when you generate a change log when you look at the commits history you can github will automatically make this into a link to the issue so if you want to see what discussion was on behind this it just makes it convenient so um i'll show you that all in a minute so now i want to propose the changes github will take me to the pull request and you'll see it's populated it from eddie mumble and it's automatically named my branch to patch one into uh dennis's mumble and the branch master that's so i had a question about that is that i mean i'm assuming that's not best practice should i open up another branch for that how does that work no that's fine you can have a develop branch if you want it depends on on the project um i started using that a lot less now because i want smaller changes i want to get them in faster so no that's fine because it's not gonna end up in master until you accept it so i'm just proposing this goes from my branch in my repo to your branch in your repo it's just a proposal make sense and then uh github is just it says i've got commit so you can see this commit and we'll get back to that in a second and it's showing me my changes so it's showing my changes i'm still happy with that so i'm going to raise a pull request hit create and it's already pre-populated the name and the title and i could take a screenshot as well if i want to just to save time i'm not going to but i'm going to say closes just to help the maintainers and so issues don't get left behind it closes issue 10. so when this gets closed or merged github will automatically close the issue for us automatically i recommend putting a screen scratch screenshot or description and so on but just for time i'm going to leave that out um i'm learning so much i love it i get excited when i learn so this is cool awesome so now that's created there are no um automation checks so it's uh it's kind of passed it's got the green tick if you had automation checks it would be running all those automations uh and that's it so you can see the file changes that's what i did no it's okay and then i want i want dennis to review it and tell me that i didn't keep into the same formatting that was there already okay so here's our conversation i see that eddie liked it made a couple of comments here i see a pull request right here that's a good point actually sorry if you could go back to that that's a really good point so because i put closes in the repo in the history of the issue if you look down the logs you can see that commit um my commit message but you can also see the pull request as well so it's all tying everything together so definitely use the issue number to tie everything together the commit the pull requests in the issue therefore it's really easy to navigate around so before we get to eddie's then i see a couple other ones right here martin just added i think we should add dependencies yes i agree uh i'll just say yes all right i'm assuming you're watching a live stream so i don't think i respond that lame i would normally say something maybe a smiley face okay so we'll go back to the poll request now so eddie submitted the pull request now i see a few others here this was number 10. so in here i can see the commits that you made i can see the files that changed or that were changed and i can see this is a github readme this is what added or what was added okay i like it but what i would suggest if you hover over the line the green line so green will be added red will be removed and then you'll have an updated one will be a light green with dark green of actually what characters would change but yes there's a plus there so um you could put a comment in there if it's specifically for that line or you could do it in the conversations for the whole of the pull request but i would say do it in line and you can do two things here so if you click on that plus you could write um thank you but it's not the same formatting but don't don't submit it in a second i will tell you why but yeah let's make it bold like the line above for example yeah and you could submit that and i can make the change but there's some awesome powerful things you can do again to reduce that kind of conversation back and forth so what i would suggest is if you um go to your next line you can actually sorry hit by hitting enter sorry is what i mean so yeah the next line in the comment uh yeah and if you look at the toolbar on the top there's a plus minus sign and that means suggesting a change there's the first one before the h plus minus so if you click that github will put that into your um into your comment and then if you'd copy that line and duplicate it so inside the suggestions inside the backticks copy that whole line um and just change the without the suggest yeah oh just modify this basically you're saying oh no no no keep that line you need the minus and you want to add a plus so copy the copy the minus discord join here and the link put it below and change the minus to a plus and change it to what you want so wrap it in the double asterisks to make it bold so basically what get what you're telling github of me is that you've made the change like sometimes it's too hard to explain like what you want or they might get back to you in like a few days it just delays everything so dennis has the option to actually make the suggestion he can't commit it because it's my repo now so although i'm suggesting that the pull request goes into dennis's repo these changes are not in dennis's repo they're in mine so actually dennis cannot make changes to my repo because he doesn't have permission but he can make a suggestion so this just makes it easier and then i'll show you on my screen i can just hit accept it will come into my repo and then dennis can accept the actual whole pull request if you want yes let's do it so it's just like that right uh and the closing one at the end as well was it just one or two at the closing two so they match a bit like html start reviewing right a start review starts with more of a conversation add single comments what i usually use okay it's a lot simpler and then on my screen so it shows that i remember technically we're trying to remove that and then i see the modification okay exactly um and so on my screen um in fact this is actually a great example for some reason it's uh it's got it twice i don't know why i didn't actually you only had it once i don't know why i think i i copied and pasted it without removing it right or something like that it should have usually have both but either way i can just i don't want a suggestion right i can just say um thank you i will make the change and i can show everyone how to make a new change to an existing pull request so i'm a single commit and that's fine i don't have to accept it but to make a change to this so you don't want to go back to dennis's repo because if i went back to dennis's repo um and she did what we did before and hit the edit button it's probably going to make a new pull request you don't want that so what you do is you go to your existing pull request that you've got open and you can just go edit file and then you can just make the change there and then and i can make the change double quotes back and forth check the preview always check it and it's showing me what i've changed so you modified the pull request right the initial pull request exactly awesome and then i'll do another commit and i can say it's a docs change and i can say um discord link in bold and i want to say it still belongs to issue 10 because the what will happen is if you do the change log and you get multiple commits because you don't squash the commits then it will group them together for you so if i put 11 here it would keep it as a separate like change in the change let me automate it later so it's good to be consistent i could start a new branch if i wanted to but i'm going to commit to the same branch and if i hit the commit changes now it's still only showing one line change oh i need to refresh it's telling me to refresh i still only doing one line change but you can see there's two commits um so there's two commits as the first one i did and the second one um and dennis can now chew the comments gone and if you look if you go to the conversations pet tab it will say that it's outdated okay so here's a change right here we modified that if i go to back to pull request link so i approve everything everything looks good all i have to do is hit merge request right and there's two types of well actually three types of mergers you can do in gear i just stick to two one is merge pull request what it will do will take both my commits and in your history you'll have those two commit but if you click on the right drop down next to the merge thing um you should have squash so you could squash my two commits into one if you wanted it's entirely up to you it depends on how you manage things and how you how you want it so and also just to let people know so i'm gonna click this right now um but if there is a conflict in that that was kind of interesting to look at if two people commit to some code or something was modified before you made your changes that will usually show you so right now we see that there is no conflicts it tells us that everything looks good right somewhere here should tell us yeah the green square because you've got the button open i think you'd have to if you scroll down a bit more yeah it's got the green tick there above it this branch has no conflicts with the base branch yeah okay perfect okay so we'll squash and merge and i should do it so now if i look at my github repo submerged it looks good there we go you have the discord link now on my github repo there we go awesome the issue would have been closed but people can can see uh that in the history if they wanted to um the pull request is gone the issues closed but you can still get to both from the the commit history um as well so it's just that kind of having that i guess that um convenience of getting getting around around the project uh so yeah that's um that's cool so that's how simple it is to make a an improvement someone else's project so everyone i do make improvements someone's project to reduce conflicts uh keep your pull requests smaller that if the more lines you change the more chances you're gonna have a conflict there's nothing worse than and a lot of people say hey i want to contribute to react because it's the biggest and most popular project a project like that moves so fast so even if you make a few lines of changes you'll probably likely get a conflict because by the time it gets reviewed say two days later and by the time you get back to it a day after that a hundred proquests have probably gone in and they're more likely to get a conflict so don't just go for the biggest projects um until you get used to the workflow because it's really disheartening as well yeah you can definitely imagine that okay so well i have a i have a few more questions i'm going to start again comments and if you have time let me know we're at an hour and six minutes let me know what your time is this is open source i enjoy peeking out this is me i'm on holiday now this is perfect perfect okay so uh i had a few of them written down you were talking and ideas were starting to kind of flow here i had a suggestion right now where i had somebody suggest in the get in the in the discord server about the front and back end right so i'm going to host them all on the same server so i'm going to have the the django backend the react front end and django is just going to serve that now there's different ways you can do that you can create the api separately and completely separate that my my question was should i keep that separate as far as the github or as far as the what the community sees so for example we have a bunch of front-end developers we have back-end developers should they all see the same project and try to maybe filter through those files or should i try to completely put that out differently for them like in our case um in my project right now all i have is the ui kit let me just add this right here so we have ui kit and i was going to add a front-end folder and a back-end folder would you recommend completely separating those there's pros and cons to both so having multiple projects in one like a front and a back end maybe a mobile in the future etc um is we call monorepo where you have uh one big reaper lots of stuff there are pros and cons to that it is convenient that you keep everything in sync so therefore when you know you update your api that the front end is going to work with it it makes things like that a lot easier the downside is it's very off-putting because someone in the front end has now cloned a repo where it's got python in it they might be a javascript developer or a react developer for example yeah and then they've got this code and you know they just want something to work there's one api up and running there's one like a docker image where they can just run it and it's just running there or mock it out whatever they're gonna do and so that can be quite off-putting for a lot of people and vice versa right you have the python people might not want reacting there um so i i'm always on the fence it depends on the project depends on the people and so forth um i've done done both many times and to be honest it depends also how you're deploying it so for example with with the stargate project that i'm doing um it's using uh astra the stargate is is their open source project but it's using like their cassandra database in the cloud called astra but we're actually moving hopefully we're going to move our other project like a discord bot and other bits and pieces to that too so i want to deploy them at different um at a different time i don't want to deploy the the whole lot i want to deploy them at different times so having them separate makes more sense and they're different technologies you've got different people i've got different maintainers because if you've got a maintainer for the back end you probably have to give them access to the whole repo but they could merge stuff in the front end where they shouldn't do and again it comes down to trust that might not be an issue but i i think they'll get notifications for for everything you can do code owners so you could say right there the backend folder i get notified for example and if it's a front-end folder you get notified rather than us both getting notified for everything so you can customize it further but i might not want to know about the pull requests to or the issues that are raised from the back and i only care about issues on the front end or vice versa so i think having them separately is is better sometimes it's worth bringing it together but i think only once you've got a pain point i would personally advise everybody to have them separate and later on if it becomes painful then potentially bring them together rather than bringing them together and separate later because even automation becomes a bit harder because if there's changes you have to now check for folder changes so because if you want to run say the python automated test or the front-end cypress tests you're gonna have to they're not gonna want that one to run that if you know certain things aren't changed after then in your github action then not only check for which branch has a change you have to check for which folders and files i think it makes it a bit a bit harder so i personally would have it have i would have three repos what you said the ui kit because if you're deploying the ui kit you're probably not going to want to redeploy the python and the um you're not going to want to bring your app down for a few seconds because you're deploying the ui kit which might get deployed 10 times a day for example yeah absolutely so at some point i think i'll completely separate the ui kit and make it its own thing but yeah i get your point it definitely is project based but the fact that the the option of separating them makes sense and that the fact that you approve of that that gives me comfort and that's that's probably the direction i'll go i'm looking for reassurance there because i i don't see any issues with it i can absolutely do that but um i just want to know i guess what the what the king of uh github or open source thinks about that yeah i think monorepo makes something slightly easier but i think it makes some things are many more things harder so um yeah having them separate first and then if there's a reason to bring them together then do it otherwise have them separate because you can have different actions you're going to have yeah just different notifications otherwise you have a longer issue list because you'll have issues the front end back end and it'll be confusing for people you can just you can put labels on it yes you can separate them different boards but again it's just more admin i think rather than then it's not probably not needed that many benefits okay so i also had an issue this is i guess more for the maintainer of the project but i also had an issue when it comes to security you know in the back end like there's going to be things like database passwords api keys and so on um those are not not in the project itself those are going to be put into environment variables but i was wondering if there's things that that are so if there's something that i should look out for if there's maybe a way to go about that just curious if i'm missing something there because for me the method would be to use environment variables and with that also comes the question of what about back-end development like what if somebody runs some kind of migration to the database like is it like i guess separating that code because when you come when it comes to databases that's where things get a little bit tricky i don't know how much in back end you work but or how consistent you are there that is like a huge like headache for me to think about like man if i if i let people start modifying the database and if we have a live let's say we get you know 2 000 users on this thing whatever that count is if one thing goes wrong in theory you could fix it but databases can get can get tricky like when something goes wrong there that's not fun that means the site goes down and really you can't just rebuild like if it's if it's the front end you can't just rebuild a component like you're having to fix all of that that's a really easy answer to that i love that they shouldn't run migrations and nor should you not because you shouldn't have migrations but everything should be automated should be no human interaction i don't have access to my production servers i don't only github does and that does i don't even know what my tokens are if you said eddie i'll pay you a million pounds right now log into your service i actually couldn't do it because i don't keep the tokens anywhere they got generated i put them into github secrets and the actions use that to deploy things out but i've lost i've kind of lost them right you cannot get them in a to see them now um so i would definitely have everything automated no one should be running um no one should be running any actions and uh i know we had sid here earlier who is massively into devops who actually helped me deploy from github actions to my kubernetes cluster in a live stream which was just epic really really good and it's crazy how i thought it was going to be so hard but he made it he explained it so well i made it so simple literally i think like six lines of yaml but and another yam or file like of config and just managed to push it all through to live and how i never have any downtime because it kept the container up while it brought up the new application new container and then switched them over immediately like it was epic like it was amazing to see that all but it's fully automated so i couldn't do that manually if i tried i have a lot to learn there i'm seeing the answers this is why it's nice to put it out publicly because you have people like joseph branch who's always amazing in helping me out but i post up the concern and i just start getting all this insight and usually what i'm doing is i'm i'm sitting with a notepad here it's empty right now because i just pasted some off but uh i'm taking notes like i love it because when you're talking about all this like you're giving me the idea but it doesn't mean i just know how to implement it i have to go back and think how do i do this in my environment yeah i'll just start adding it in but cool yeah it's things you can add in as you go along and with the automation it's so good because even if you've got like maintainers on your brand on your repo you could say that um a release is is what triggers the deployment and runs the migrations does all that sort of stuff um but only certain people have access to do that and you can then lock things down that way so someone could raise a deployment pull request but only you have the access to hit that merge to actually trigger off that deployment which will run all your tests make sure it is all happy and then deploy out because i never roll back i only roll forward it should be so quick to make an improvement even for my client projects it should be so quick to make an improvement i never want to roll back because migrations rolling back is you could lose data right like so imagine you add a column people start using it and then you go ah something's not working let's roll it back the migration is going to destroy that column you're going to lose that data to to roll back that migration so really it's about always rolling forward if you can deploy within a few minutes you can always always roll forward and you don't have to go did i did i push to that service i pushed to that one is it the right one forget it get up action is just going to go boom boom boom in one minute just deploy everything out completely okay so we touched on this topic uh a little bit ago more towards the beginning but having other maintainers to a project like let's say for example right now i just moved across the country i'm getting my condo rebuilt and i have to go back back to my old place i'm gonna go see family but i might be out for a week maybe even three at some point do you recommend i know i asked you this but do you recommend adding more maintainers because we kind of went on a side topic there there's some people here like i see them in in the comment section that i feel like i can trust to maintain at least at this small level like the project doesn't have anything crazy in it um but basically should i allow anyone else to make those requests to my my master branch to actually completely watch the project i would say yes having maintainers really helps because they can get things keep things going and you might want to done some something done slightly differently but you could make that improvement later right to say if someone i don't know writes an sql query in in a way that you don't want like you want to use a sub they use a sub query you don't want to use a join or whatever it is it's not the end of the world if you if that goes in it might not be as performant etc but if it goes in you can make an improvement later on it's not the end of the world so um like i was saying i get like 1200 if you have notifications a week but most of those 90 of them have been taken care of by the community already even ones that are maintainers and ones that are not so i still look through them and just check that i'm keeping in the loop because getting something reviewed is not just about getting improvements getting feedback from people it's also about knowledge transfer so if someone if you make a change and you raise a pull request and someone one of your maintainers or your community says hey dennis i'll do that slightly differently maybe this is a bit better you could say oh that is better but i haven't got time to do that now merging you're happy with what you've done please raise an issue for your suggestion we'll make the improvement later on and so it's always about little and often and moving that forward as long as it's not security risk as long as it's not anything detrimental we shouldn't be i used to be really picky and everything had to be super perfect and then projects just don't move along people lose interest and so on people some people want to make those improvements like you could say hey i've written this sql query i know it's not very performant i know it's not the best i've done it i've put it in so we can get this feature out but can someone make an improvement you can raise an issue for that and someone will make that improvement or make some suggestions on how to improve it like um you know vive iv in the chat just is eagle eyes just spots everything doesn't necessarily always make the pull requests but then helps people to make that pull request so i said i haven't got time to do it but i would suggest looking at this documentation and this resource and i think you could do it with x and then the other person will then go make that improvement and um so it's it's about collaboration really and adding value and it's not about actually making the changes yourself or themselves so i would add a maintainer if you want to be extra extra cautious you could have your your master branch you could then have a develop branch so the master branch is only for you and that's what gets deployed out and then ever then other pull requests can get merged in by your maintainers into the develop branch they'll never go out to production until you've reviewed it you could raise a pull request um from develop to master yes it will contain multiple commits not you just yours it contain the communities but you could just have it once over and make sure you're happy with it you can even check out that branch locally and just run it make sure you're happy with it and so forth so you could have an extra step okay so basically you're just giving permissions to that specific branch or to run that part i have to look into that that makes sense yeah because i i i have about three people that are very active in i mean they i don't know why they're so willing to help it always blows my mind but i'm thinking okay these people have helped already so much why not just put them forward and i obviously let them know hey be very careful don't accept anything right now like while i'm here i'll take care of that but let me figure out how to run this thing and then we'll try to adjust a little bit well yeah that's that's definitely going to be helpful it makes sense just do you don't have to like kind of go all guns blazing right you could bring one person in get some feedback see how that works you might improve your process and then bring another person in rather than trying to bring 10 people in in one go again with everything little and often just like try and like do one step in that direction and then you'll you'll see kind of what works what doesn't um yeah so how about the discord server let's uh let's switch gears here a little bit because i started that um moderators there was about 10 to 15 people that absolutely stepped up uh one thing that was kind of hard for me is because now i feel obligated to be in there all the time the moderators did a very really good job of saying hey don't bug dennis for this ask these more publicly that was amazing to me because i felt like i had like a security wall over me like that was awesome because as much as people you know want to reach out they they get excited there's no way one person can respond to all of those comments like that i start feeling like like a personal guilt for not being able to do that but it's just not practical anymore like that it's gotten impossible um but yeah like i'm assuming you probably have the moderators moderators take care of that yeah yeah we've got um i mean you're probably your discord's probably going to grow much further than mine i think you're at like 400 members i looked earlier um i'm at two almost two thousand but i'm sure with your 100 plus thousand people on youtube you're gonna like zoom past me but you still have the same problem even with like 400 or 2000 uh you're going to have that problem you're right just too many people you know you want to engage with people but you haven't got the time you just can't do it yeah my moderators again vive iv's in the chat i can't remember had some others they just do so much i think i have about ten or so mods maybe four or five of them are the most active ones and they do so much and they'll just we have a private channel and they'll just let me know if i need to get involved in something like look i'm on the fence about this person they're being a bit rude or aggressive should we ban them or not but i give them i trust them so i just said look do what you you think um if you think they're they're they're not they're not part of them they haven't got the community and they don't add value then you know just just do it i'll back you up with whatever you need but i think they're all quite cautious which i think is really sweet and really nice they don't do anything like so drastic about but touch wood we've only had like about 2 000 people i think we had like two people that we banged that was it um but yeah it's really good server too i want to show that if you don't if you don't mind sharing it publicly sorry i didn't want to help you yeah i think we should post it but i just wanted to show that because i need to check it out i can probably i guess if you can open it up i can use yours as an example because clearly you know how to run things and i've been loving it so i can join it or is that open to the public yeah no it's open to the public um let me uh i won't better post it on youtube because it will it will um oh it'll flag it it will kick it out but i could send it to you on um discord i think as well uh okay so i'll send it to you after oh no i sent you i've got it here we go yeah i can definitely use some tips from you and i've left the moderators up to that like i set some standards they went a little bit crazy in the beginning and they added bots for everything and i was like okay like i can see the point let's slow down a little bit let's keep it simplistic you know but i give them the leeway to add in their music bots and their you know whatever else they feel like should be added there yeah i love it though yeah bots bots are really really useful um i'm gonna try and put this in the chat but i think it's going to boot me out it's going to be not even a c i don't think what if i added it would it it wouldn't like it allows the moderator to do it right yeah allow moderators or yourself to to do yeah send it to me then and i'll just uh i'll add it okay let me let me find you i don't think i have it can i send you on twitter i haven't opened yeah sure let's do that well i'm trying to find you on discord and i gotta send you now here we go and we'll get to questions here in like two three minutes here let's just finish this part up awesome so uh yeah so we have various spots uh let me scroll down to the bots um so yeah dennis if you want to join i can add you as a community partner so then people can go you've got sid there as you can see we have siddharth and other other community partners um we've i know some people in their discords are like you can't talk about any other community in here it's all about that one community i'm the opposite right if you add value to our community you can share your github links you can share but if people come in just to dump their links then and leave and then we don't allow that yeah we have various we have various bots as well i highly recommend getting some bots um yeah we've just categorized things we're making improvements and tweaks all the time i'm learning um i'm learning uh discord as well as we go along it's pretty pretty awesome i've actually stopped using slack and trying to move everything over to discord um like we have a hackathon going on this week with mlh and we have so we have a channel down here which is um on that so people can see you know what's going on talk about the hackathon we won the last mlh hackathon in january which was awesome everyone got loads of free swag but i have joined yours as well so let's have a look at yours so yeah you've got your mods at the top which is awesome you've got loads of bots wow you got more than me they went crazy with it i'll have to have a moderators meeting and see if we need all of them i'm not sure i told them this when i started i let people know hey i don't know what i'm doing here i just know we need a place to communicate for now i do not run discord i've used i have a couple of uh communities that i'm a part of specifically the one that you and i are part of the secret one i guess but other than that like i know nothing about it so i give them the leeway to do it and uh i'll just try to fix up what i can no that's awesome i mean you could probably you could even write your own custom uh bots i mean viva v writes his own custom bots i write mine as well for our arts we have like um an eddie hub uh bot eddie bot here we go not id hub eddie bot here we go um then you can do whatever you kind of want you want in javascript or python and so forth and you can customize it even even further but uh yeah i think just creating a safe space for people because some people do come in and do trying to kind of you know agitate people to um get a kind of reaction from people and those are the people your mods have to be kind of on and just not allow it because it's really really interesting how whenever we got like one bad apple um it kind of discord went quiet for a couple of days until people kind of got the courage yeah i know i know what that's like for sure i've seen that yeah yeah so that's that's not so good but i'm sure you've got some good mods and they seem to have customized your discord load which i think is uh which is awesome it's nice to have it have it customized so that's uh that's great okay well um i i see uh okay say it again vyv right yeah if i find v yeah by okay i was watching one of your streams and i saw them comment i just added them as a moderator i see they're responding about somebody oh holster booted i don't know i trust him if you trust him i just added him yeah vive iv definitely vibrates one of what um so that's awesome i just added them yeah okay so i want to go into uh some q a then um anybody part of my discord group want to say hi or just uh ask a question um go ahead and jump out here i know we've been talking so maybe give your give you guys some time to come up with those i'll try going through some old questions but let's try to keep it related to to what we're discussing in open source maybe the discord group i love it that you're doing open source though now it makes you so happy and you've got a discord community as well it means we get to geek out more because i only geek out on open source stuff so um i'm sure some of my community members will geek out on your projects and vice versa and i just i just love that kind of you know cross-collaboration because everyone's always learning more so um i think that's uh i think that's great and you you said yours is in python and i think vivo v does python as well so um they'll definitely get involved in that as well so thanks i just remembered uh remember one of your your tips here so anybody in my discord group i guess anywhere please use your your real name your real username i guess uh midi right here or middu i think that's how you pronounce it um he's a young high school student i think he had a different username i want to know who you are when i'm interacting with you try to keep your profile picture consistent through all of your content here like this is mitu's uh profile picture here and it's also the one on discord so now i recognize it but if you change up your name like eddie you talk about people reaching out to you and you might be talking to them on one platform and then you know on on one platform they're john john 12 and then the next they are you know sexy chicken too i don't know what the hell is um you don't know who you're talking to you know the people have these usernames that are like so it's it helps i think when you're trying to get a job to your github profile i told mido to put try to put your face on there try to keep it consistent because even though you're a high school student you might as well start building that up and try to yeah not to use something so custom to you i guess absolutely yeah make it easier for people to discover your github your linkedin and join the dots like if you have a great conversation or great collaboration with them on github they might come across you on linkedin if they go oh that person's great yes let me connect with them and offer them the job or whatever it is make it easier for people don't make it hard yeah yeah because i try to look up a lot of these people too right like if their name is custom like this i have no idea who i'm even talking to and it helps to to understand that that person i guess i'll try to find him on twitter maybe i can connect with him there okay so competitive programming i see somebody asking that i've never done that eddie i think you've mentioned that right you were just talking about these these competitions here yeah so competitive programming i don't think that involves hackathons so much unless people correct me very wrong because everyone's perception of this is very very different i see people talking about competitive programming when you go for an interview and you're trying to you know do something like uh code wars and all the rest i don't like those things so much i've done it a few times um i just find it's not very realistic um is in it's not something you do in a job where that's why actually i like um the hackathon that mih do they do loads of them every weekend but the specific one they call like local hack day share and build and the reason is it's um collaborative so you get into guild so our guild is like i don't know 500 people and they're all collaborating together to get points some people might just do a hello world in a new language but that gets them one point for the guild someone else might build a discord bot and i guess some 10 points but it all adds up and then you win as a community and you get swag as a community rather than a team of three and four which has its benefits as well i'm not saying not to do that but i think never go to a hackathon or do anything by yourself one you're gonna learn slower two it's not realistic you're never gonna go to a company and just work this is like a small startup you're never really gonna work by yourself you need to work with other people and three if you go to a hackathon you've got a team of say four for example make sure half the team are different disciplines to you either different language or not coders if you're a coder it's really important the hackathons i've won so before kovid i won six hackathons in a row which is unheard of for the 10 years before that that used to do it and the only difference is half our team weren't coders because they thought about the presentation they thought about the user they thought about so many different things that we didn't um think of there before those six hackathons i won the one before i had four coders and we were we had a plan we were going to build the most best thing ever and we did technically it was awesome it was automated had ci had cd it was deployed had versioning like it was epic but we lost and they said technically engineering-wise it's really good but as a user perspective and the presentation was and we couldn't really understand it we're not techies it sounds great and wonderful but it's not so great so you need that mix of people makes perfect sense it's just like in business too if you have two people that are good with the product but no one has the business side of things taken care of yeah it makes sense if you're putting a bunch of coders in they're not going to think of all the other parts makes sense so somebody's asking this is probably a quick one here you have to have a big project before you begin a discord and i personally don't think so i mean i'm not the discord expert but if you want to start a small project there's constantly people in fact here's a perfect example there's constantly people that are just getting started they just want somebody to talk to and somebody to maybe work on on this lowest level of applications let's say you're trying to start up a hello world application or to-do app find somebody that's completely new in my youtube comments section that's also just getting started create a discord server and invite complete beginners and work on tiny little applications that way that's my opinion on that i don't think it has to be anything big now you're connecting with people that are in the same phase and hopefully eventually you learn from somebody that's more experienced but it's nice to connect so i don't think so so joseph is asking asking me directly do you feel open source can be a way to replace income or place a regular 40 hour work week so i'm i'm asking eddie open source questions so i'm that should be directed towards eddie if you want to answer that what do you think uh absolutely um but remember it's a marathon not a sprint like with our open source projects like with our careers and our journeys but yes i mean i get paid to do open source i get paid to do what i what i love and it is absolutely possible um like if you if you want to get a job at a company you want to get paid to work on their open source projects go find the open source projects like twilio and lots of other places they all have loads of open source projects even netflix um etc go contribute to their open source projects their documentation i've heard so many people get jobs at these places because when they want somebody to work on their project they're gonna go i mean can i share my screen one more time absolutely so if we go to i've got dennis's project open so i'm just going to pick this so one thing i quickly wanted to say is also dennis with your project a good thing to check is if you go to the insights tab along the top i think vive iv mentioned this in one of one of the issues and then go to community these are the suggestions from from github to make your project more inclusive so code of conduct you can hit propose or give you some templates contributors file license et cetera license is really important because if you don't put a license it is not open source and it is not proprietary it's in this kind of middle ground so definitely have that license um but what you can also do is in the insight you can go to contributors so what i do for my clients be a high street bank in the uk be it um i don't know a company in the us whatever it is what i say to people if you want to hire someone who hits the ground running who has the same you know attitude and collaborates with your team really well go to insights go to contributors and look who the main contributors are yes the first two people for example might be employees of that company but then after that you want to go to the next bill contact those people why would you not want to hire people who are already contributing to your project and my clients to go oh wow we don't have to use like recruiters we don't have to search around for months no and actually we've hired so many amazing people literally come in like a week later and the first day just get on because they've been doing it already and documentation is enough don't think you have to contribute the next biggest feature remember it's just about adding value so yes you can earn from open source there's github sponsorship that dennis mentioned um there are so many other things you can do but you got to think long term i think marathon don't try and think you're gonna do all in one weekend so i want to add to what you said if you scroll up there's one contributor here can you scroll up a second yep there's a what's the forgot what his actual name was again this is why you want to put on your real name not mr s p shuvo um i have his real name so i found it but he is somebody that built he's the person that built out that ui kit when it comes time to hiring if i can get funding for this project whether that's from crowdsourcing the project let's say goes big who do you think i'm going to in in this case right here to hire somebody that knows my system somebody that's contributed i work with them and i i feel like it's weird because i i don't even give him a task i just mentioned a need and he's solving it immediately that's the kind of employee i would love to have so absolutely i'm going there so what you mentioned if you're contributing you're putting yourself out there um you're building yourself up a good you know good opportunity for a job so yeah that he's a perfect example i love this so is it sharier or sherrera i think but the other thing to do is you know um dennis already knows that this person contributes to his project and does a really good job but then dennis can also have a look and see what else are they contributing to um okay so they've done lows here what else are they doing let's go further back and they can they can kind of see what they've been up to and it looks like they're mostly contributing to yours so you know that they're focused on yours and they've contributed to one here for example and so forth so yeah with github you do have this history so it is your portfolio this is better than any resume any cv any portfolio is your github account but the one thing they don't have a customized um github profile so they're losing that kind of real estate of adding in more about themselves because just on the left you can add a link to your website your location all the rest but if you can um add more maybe like your your i don't know what you're learning at the moment technologies that you use you can make it easier make it easier for people to hire you people want to give you money like let them give you money i'm assuming you you talk about this in those videos right and that video you have with traversing media free code camp i would recommend people check those out i'll probably link those up in the video description go check out eddie's stuff on this it's i'm assuming you talk i need to watch it by the way i've never sat down and watched a tutorial on github this is why i know so little because for me it was like i need to push my project live what i do use github okay how do i push a project on github like i just googled it and did it i need to sit down and take at least at least a couple hours and and study it watch these videos and i feel like i'm just gonna you know my knowledge will just shoot through the roof and it's already went up like crazy just from having this conversation with you and hopefully others are benefiting too i have loads of like shorter videos on my youtube that are specific as well yes and on your channels yeah i've just started a second channel where it was just only youtube shorts so they're one minute or less tips like two weeks ago and every couple of days i'm trying to put out like one minute like vertical videos on like tips on things so to give an example uh a new tip that has come out let me just see if i go to your project and i go to go back again um here we go i go back to your page a new thing that's come out recently you'll notice there's an icon here on the left on the readme that never used to be there and if i scroll down it should stick at the top and if you click it it's actually your table of contents which is recently a few days ago so as you scroll down it also changes it's all in sync so it just help write like people should write like good documentation so therefore when these features come out it's easier people to navigate around and use them and so forth cool and uh this is where you got to check out eddie's channel here so go check that out the github master so i just want to make sure people can find you awesome thank you i appreciate it okay so all right we have some more questions now so we just went through joseph's um let's see how to get people to contribute to your project smaller no matter how small um i i think it's kind of like what i mentioned it if you have any tips here just to just get involved with people try to get active comment on their projects whether they're on twitter on github i'd imagine if somebody like if somebody contributes to my project i usually go and follow them i want to know who they are so i'll usually go go and respond so yeah if you have any other tips for that i think that's the the best solution and it's also how easy is for people to understand your project like when they go to your readme do they understand what their project's about do they understand how to set it up like if anything's too hard they're going to lose interest and you might want to eat you but i get other people in the community say look i've just started this new repo can you please let me know what's bad about it i think it's in a good state but and then people say well where do i get this token from you say to run it i need a token from firebase for example i was like well you go to firebase and you get a token said yeah but i've never used firebase before so i had to get the tokens really hard for me can you put a link to the documentation or can you abbreviate it so yeah just make it as easy as possible for people to contribute to your project and that only gets better as as people use it so don't spam your link everywhere um it doesn't work i find when people just keep spamming links i just start ignoring it even if the project's good it's just yeah you just kind of don't pay attention to it so i think make it as dennis said those are great tips you know follow other people and get involved in their projects and so forth but make your project easy for people to get involved and your repo could be tiny in that it could just be i've seen repos of like 15 000 stars and i know 5 000 contributors and it's just one markdown file called readme with a list of information of useful resources whatever it is just start small and you can just you never know where it where it goes yeah well github also i mean they have a search engine too so if you're if you're using the right keywords if you're building projects that people are looking up like for example right now if you look up django ecommerce website like that's a popular topic that you know there's i don't know how many projects they are holding that name right now but if you build something that's good you will rank for that keyword and people do they do search things up on github too exactly it's a very powerful search engine and when people start starring your project github will recommend it a bit like kind of youtube will recommend it to other people you can then start trending i've seen projects explode because they appear from the trending page um on github and then those people start following it and all the rest so yeah just just get started little and often so i'm not sure how on topic this was but i want to get to it just because he's such a regular contributor so good knowledge good it's valuable more but but more than i think i well sorry i'm trying to paraphrase it here so he's asking about moving a project to production is that right yeah i think so i think we'll need you more when the project will move to production right oh i see i see okay yeah so yeah um once once that's set up absolutely like i'll i'll let everyone take care of the i guess the front end part little things like the api and so on and building the thing out but when it comes to production i already have a plan in place that's something that i would imagine i'm gonna take care of unless somebody like specializes in that area because that's not even like a github thing like that's setting up my aws s3 buckets getting that heroku server set up you know what i would also recommend for that actually is what i like to do is i like to do hello world across my uh full stack so what i would recommend i know you started work on this already but say you hadn't i'd say get like i don't know a version number um from an environment variable in doc in your django project coming out through an api like i don't know status endpoint or whatever you want to call it just return the version number that comes from a file or an environment variable and then i'll get the ui to read that and display it on the page effectively kind of like hello world all the way through but actually maybe reading from the database maybe reading something from the database i don't know and then i would get that deployed to production because then i know that is now deployed to production and working yes later on you're going to have to maybe add some tweaks to that but you've kind of got it going end-to-end in your stack and end-to-end in your pipelines you kind of got that kind of cross that's what i personally recommend um and then once you've got that as you add more features most of them will just go out as you allow them to automated but then if you need say i don't know either you're adding a caching server in or something like that i think of an example then yes you might have to modify your deployment slightly but that way it's if you're making a slight tweak to it rather than you're trying to do it all in one go so because if you waited like a two months into your project now you might have caching server database you've got python backing you've got you know react front end and you might have some other things and now when you're doing deployment you're right i've got to spend like a week during the deployment whereas if you did it from day one you're kind of doing it again in increments in little stages and then you get lower yeah i see what you're saying so it's like anytime i put out a deployment video or we finish up a project like when you deploy it because that's usually the last step right we just launched the project there's all these yeah see well i mean i guess i can't start a tutorial with just deployment if i'm teaching people how to i mean i could but um yeah like if it's like an ecommerce website there's more dependencies like there's libraries that i might need in the project so deploying a small like a static website let's say if i'm just doing like a portfolio website that doesn't really have that much that's going to take two seconds to deploy but then those same people will watch a deployment video of me deploying a static website not static but a very simple website sure and then they'll try to deploy a large scale application and they'll say well i'm getting all these errors now heroku's telling me i'm missing dependencies that's because that's specific to your project they'll tell me there's an error in my video it's not the video it's the fact that there's a dependency so i absolutely get what you're saying you deploy it and then once you're making those changes you just start pushing them and i probably will start doing that once i start getting that template up like what we saw here for the the mumble demo i'll probably just add this because right now this is all just using a json file it's not the real website but i might as well start start hosting this yeah absolutely you should get sid and me we'll automate this through github action so you never have to deploy it manually again and all your deployment will be in like config files in your repo so if you want to make a change you can make a change you can raise a pull request and say hey sid eddie i've made this change is it going to make sense yeah it looks good let's try it and it can then you know deploy it all out all via so your whole infrastructure is code you don't have to like worry about like yeah i've got a kubernetes cluster on docker ocean that costs me like 10 a month and from that i can deploy like a database i can deploy my back end node i can deploy my front end it's all just going out i can scale it up like i could have two containers running on for the front end and i might have five containers on the back end and just by changing a config it just scales up and down as i need to it's like it's awesome so that actually brings up a question on my end i guess or i have a question now so i had somebody that that person that was contributing to who built out that ui kit originally they built it out in in sas right that's how you pronounce it because there's scss and there's sas which i don't work with i'm not a front-end developer i mean i know how to work with it but it's not my skill set how do you deal with with your contributors who are trying to use technologies that may be better but aren't something that you're familiar with as the maintainer because i i see no reason to it like i've used it one time i went in for an interview and they happened to use that they wanted me to know it so i learned it in an evening but that was like a year and a half ago it's not what i'm comfortable with how do you say no to a better feature that isn't what you're comfortable with or do you say no like do you just because if i'm trying to make changes and they're working in something that i'm not familiar with yeah i can't do it if you and let's say you and sid help me out with what you guys are talking about in that in the devops side um if i'm not familiar with that what if i run into an issue i don't want to be bugging you guys i need to make sure that i can maintain the project as a project maintainer so do i say no to good features that's a really good question and i don't know if i have like the right answer that's a really good question um i would say yes say for example if you were building a plane let's take a plane as an example it's quite a drastic example but there's a reason for my madness and you were this uber engineer like you knew how to build a really good plane that looked good that was efficient enough but you would get an expert who does the aerodynamics the expert who does like the tannoy system who does i don't know the interior design because although you might have an appreciation for those you can't be with our projects and technology now it moves so fast i don't think we could be an expert everything i'm not claiming to be an expert on front end back end full stack to combine those two together uh devops but i feel i know enough to ask for what i want maybe to get started and then get someone else to review it because what i did with so i dockerized my my node app and then again i think it's a few lines of docker file nothing like massive and then i built the kubernetes cluster and this lotion with a couple of clicks it said like you know create a new cluster it crazed all but then join those together i couldn't quite figure out how to make it work and it was really surprisingly how i ran through a sid before the live stream on a call and i can't remember 30 minutes 40 minutes my world was like i was like wow the power of this and facility was really easy like really simple it was like me creating that pull request from your repo earlier like for me that create that pull request on your um on your repo i don't do a hundred times a week so it's straightforward for me but i appreciate other people it's quite hard and so when sid was helping me deploy my stuff connect my my docker the github container registry my dockerfile to my kubernetes cluster for me that was like really hard um but having gone through that i now know that i don't know everything about it but i know how to do that for one of my containers so then i can do it for a second container third container but i appreciate i'm gonna have to reach out to sid or other people in the community it sounds like your community is huge you will know people who can you know help you and give you advice and i think that's just a great way for us to learn fast for me to learn what i that what sid did was taken me like i don't know a whole weekend or a week but he showed me in 40 minutes and and so i think we all like to help each other yeah i like the they like the approach of learning from it like i absolutely agree with that um i'm gonna i'll have to learn that really quick but because it wasn't my focus here's the like the conclusion that i came with was let's just use css when we can get to a point where we have enough sas developers when i feel like i can get the support and i can go hands-off on the front end and focus on different parts then i'm okay with it and also at the same time if i can find regular project maintainers that i know i can trust on because i don't know who's going to be there next week you know let's say this person implements it then they're gone what do i do i can't i can't go out and ask for support because this is open source i'm not actually hiring anybody at this point so that's where i kind of just came to the conclusion of let's hold back and then we'll see what we can do later i think that's a good choice as well again it's it's a difficult one every situation is slightly different um i have had that happen once someone came and said we're going to use this framework i'm going to do it they said it up they disappeared no one else knew how to do it yeah yeah so so i do agree with that and that that is a conscious decision of you saying actually we're going to keep it simpler for people because we want it easier for other people and other people to contribute so yeah and that was it too like i was also considering the develop the skill level of the developers joining too like there's some people that are just getting started with django they're getting familiar with front end stuff and i don't want to throw sass at them i want to say okay you learn css you can contribute at this point and then we'll see kind of where we scale to but i'm trying to also keep it lower level for everybody okay so yeah i had that question i want to throw that in i will pull up another one um i'm not sure what angle you're coming with this question but would you consider developing collaborating with a django developer from ghana africa um if you look at the discord server i i like i'm from the us i think i think there's like five people maybe from the us i don't know what the number is but they're all over the world i mean everybody's contributing that that's not even a it's open for everybody yeah i just wanted to just clarify that okay let's see how can we go about committing prs using the get cli yeah that's something that you'll have to learn um i like that's the way i'm doing it what eddie just did in that that example i don't i've done it that way but that's not the the way that i stay consistently with it because i'm usually working on a local branch so there's if you create a project you can actually it usually starts off like if you create a git project it starts off with the basic commands of how to connect to a repo how to clone one and then how to actually push commits there too but you will obviously need a little bit more than that and we can show that if we need to but yeah it's uh when you want to do more you have to use the git cli and there's probably only six commands that you that you really need the kind of the clone the push and pull for your um for your uh repo if it's an original repo or a fork it will always be on origin and that's what you clone that's the remote it's called origin but if you want to keep your fork up to date with the original repo it's known as upstream you need to add an upstream as well and then you push and you usually fetch from the upstream um but i've got a video on this i can share a link afterwards do reach out to me i've even got a one minute video on my second channel let's do it and we'll link it up yeah i'll link that up so hopefully that's to your channel too so that way people can find you through that video too okay let's see joseph's asking about devops i think so where does your devops devops knowledge come from probably from sid right recently from syd yeah they're awesome exciting stuff with kind of kubernetes and so on uh from syd um it's something you know being 15 years as a full stack developer i've been doing devops like almost from like near the beginning just needing to deploy things there was no devops obviously the name at the time and just as i got on bigger projects bigger clients you collaborate with more people and you just kind of learn all these different different things so it's something that i've always kind of done and sometimes i do it more sometimes i do it less and it's always changing and i think collaborating with people in the community you're going to learn from each other and so devops is not my speciality but it's what i can do enough to get my projects deployed or my clients projects but i know who to ask or where to look books i used to use books a lot but they go out of date really quickly youtube videos are quite good but again check that they're quite recent i think after six months a year don't worry about you know um youtube videos probably our date same with blog posts books are probably out of date as soon as you bought it um so yeah um just see there's loads of different ways to do the same thing as well which makes it harder um and even if you do kubernetes like there's like so many different ways to do it sid was showing me some stuff i was thinking he goes you can use you can use ingress or you could do it this or you can do it natively within i was like oh my god it's so much so um just just get started um one thing probably just start doing whatever you're using haruku the shlosh aws use um a github action to do that for you one because there's already action to do it for you so you can just like put your tokens in and just takes care of it all for you or if you want to do it manually yourself the command you run locally do it on a yammer config and therefore you just get into that that more i think just practice it oh thank you thank you tommy here okay so um i see a couple other questions i see some that are unrelated some that i feel like we've answered would you want to do a clone real quick for uh for that question sam the fam yeah asked about that i figured we might as well do that real quick yeah let's do it let me pull up your screen so eddie is going to clone in he's going to use a cli so you have to download the get cli just go ahead and look that up and once you get that installed it'll give you access to the commands yep so what i will do i'll go to my directory where i want this to go so i've got a repos directory and all i'm going to do is this is um you're on a macro i'm on a mac yeah so this is dennis's repo so i don't want to i can't commit to this so i want to clone my fork um so what i can do i can click on this it should take me to my fork there we go so earlier on yeah earlier on you forked it which is a copy of my project okay just so you're working off of your own version not mine which it says right there forked from the ivanov 11 forward slash mumble exactly so you've got that here but one thing that we'll notice which is really really good um which i've just noticed let me bring up yours again uh i've lost it now when i do what i do i'm going to click on the repo not your name so if you look uh the last commit in the repo was one hour ago by me but if you look in my fork the last commit was four hours ago by dennis so my fork is out of date so this will probably be um the commit previously because i got 24 and in the original it's 25 so i'm actually one out of date so before you make any changes to your repo to the forked repo make sure it's up to date and i'm going to show you how to do that that's the hardest part and it's not hard when you know how so up today just to just to clarify that that means that i made a change or i made another pull request that is not up to date with yours so let's say you fork my projects i you forked the project i made a change so they're just yeah they're they're not in sync so just to clarify that yes let me see if i can draw something on my screen i don't know if i can will this work yes so you've got let me take a think about this you've got the original repo which is here which is dennis's repo i took a fork of that so this is my repo now and but i made changes in the branch and it went up to dennis's and he emerged and accepted it but i haven't brought my change back down i know what everyone's thinking i could have made the change in the default branch therefore mine would have the commit and so would dennis's but what you'll notice is mine would have had two commits and dennis's would have won because when dennis accepted my pull request he squashed the commit that's why you must never commit the default branch you um again if this is my repo you want to go up in another branch whatever you call it and then you want to bring the changes down from the original repo in the default branch so never so i'm going to get my changes that i made but i'm not going to get them in the default branch from the branch that i made does that make i try to explain that really badly i think no i i mean i'm following but okay cool i guess once they see it they'll understand there's a lot of there's a lot of diagrams so i don't think you have to reinvent the wheel people can look out okay perfect yeah just look up like git flow or something like that get branch flow yeah exactly yeah because that made sense to me cool so if i go to my patch one branch which is where i made my changes it will show 26 and dennis's will show 25 because he's squashed the commit and so this branch now could be destroyed and that's the good thing to do once your pull request is merged delete that branch so i want to go back to the default branch and i don't have that change if you look in the readme there's no extra extra discord link there so what i'm going to show you to do is what you do so i'm going to fork uh sorry enough i want to copy i'm going to clone my fork and i'm going to pull down the changes first and then we can make some more changes if we want so i want to clone the repo and remember it's my replay if you look at it it's eddie and then it's mumble so i'm going to clone that it's going to ask me for a password because i use ssh keys i'll just type my password in wrong so that's just a project url right usually you just want to get that by going to the project for anybody that's completely new there yeah it will be from here so you click on code and you can choose https or you can choose ssh i always recommend ssh so now i've got the project next thing i want to do is go into the project um so let me just clear my screen so what i also want to show people is i talked about remotes earlier and it probably didn't make much sense if i do remote minus feed this will show me where my local git is connected to in the cloud it could be big bucket it could be git lab it could be github this is where it's connected to so when i push and pull by default it's going to go to my forked version not to the original repo so now if i try to pull down the changes or fetch the changes i'm not going to get anything new because i've just cloned it and i've still only got 24 commits in here i need to bring down the original repo which is called the upstream and then update my fork so let me show you how to do that so what i do next is i need to add dennis's fork to my git um get copy get repo locally so i'm gonna go to dennis's repo i'm gonna hit on code and i'm gonna copy um his repo url but i'm not going to clone it this time i'm going to go get remote add and the the original repo is always called upstream double click um so origin is either the original repo under your account or your fork under your account so origin should be your account always no matter what it is and upstream will be uh the original repo and you can have more you can have deploy people deploy via git so you could add deploy you could add i know digitalocean you could add haruku you could do all sorts of things but for the fork you add upstream and then i want to paste in the original uh link of dennis's reaper reapers if you look now it's dennis's mumble docket i'm going to add that nothing's changed uh if i do a git remote minus v again it's going to show me i've got two so i've got origin and i've got upstream so now i want to fetch changes from the original repo so what i'm going to do and just to clarify everyone a fair a pull is a fetch and a merge so i want you can do it in one step but i recommend doing in two just in case you know you get conflicts or something like that i had a question uh sorry i had to make off yeah you you did that in the in the main branch though right like that's you didn't create you didn't check out a new branch at this point uh no so the remote is for the entire repo it's not branch specific gotcha because i usually um i'm gonna follow your methods but typically i would check out a new branch clone the project branch branch and then merge it so i did it a little bit differently so this is actually interesting for me to watch sure so because the default branch in this case master i never want to commit to it i'd always commit to a branch you're absolutely correct but because i'm going to pull down the new changes in your repo i want to bring the changes down into the default branch because i'll never make any changes to the default branch myself so if i did a git log i will my commit isn't here in a minute we will get my commit here but my commit will in the default branch will never come from my repo it will come from your repo that makes sense okay because that's why people end up with lots of weird conflicts it's because if i merged in so if i do a get branch um i want you to minus a so i do a good branch my patch one is here so i could merge it into my master but it will have two commits and in your repo you only have one so we'll get all these weird conflicts on the lines that i changed but they'll be the same line it will say well this line has changed and this line has changed and they're kind of the same because you squash the commit so we'll have different histories so it's important to keep the default branch aligned with the original repo so no one ever commits the default branch even if it's your project to create a pr you need to be in a branch anyway um so i'm going to go get fetch i have to remember this now uh upstream uh i think that's just it just upstream i think that's it i can't remember now let me see that works so that now yeah that's that's now brought down um another branch that i didn't have and it also brought down some some changes but if i do a git log it still won't be there because although i have it locally it's not in my working directory so next i want to do i might have to check the chat i'm sure vive iv or someone's going to tell me what it is but git merge and i'm going to merge upstream master i think is the command i always forget the path let me see yes so now you can see it's fast forwarded and if i do get logged you will see one commit from me not two because i brought down my squash commit that you did when you merged in but i brought it down via your repo so if i want to make more changes to your repo i would definitely do that in a branch don't do it in um in this so for example if we look at github and if i hit refresh that's your project if i hit refresh you'll see it still says 24 because now i have got changes locally my local origin not upstream origin my one is ahead by one commit so i can then go get push origin master and then it will update my my github so that's taking your local code all the changes you made let's say if you modified if you worked on the project you built out like let's say a header in your application you would do git add add the changes commit push and then all of a sudden that's all updated yeah and i can show that in a second as well if you want so if i refresh my one you'll see it go from 2425 i now have my commit in there but it came down from your repo so if i want to make a change let me clear this make a bit simpler if i want to make a change i would check out to a new branch and i would call this i don't know you come up with a better name but that's just an example then i would then now i'm going to test branch and now i can make changes so if we open the readme and say if i wanted to i'd make a change let me see okay let me make a formatting change you don't have to accept this you can you can reject doing that straight from the command prompt well you're so um let's say for example i want to make this bold but not the the link bold for example so i'm just going to change that ever so slightly and again you don't have to accept this if you don't want to i'm going to remove the markdown on those sides and there so therefore i've made those changes and so now if i do a status it shows me that i've modified the readme so i want to do a commit um and there's two ways you can do this like five ways but let me just keep it simple um so the m as if people have seen this before the m i don't want to bore people too much but the m is on the right there's a missing column here on the left the left means it's staged and i haven't staged it so you can do commits in two ways you can try if you've got loads of different file changes and you want to commit some of them you can stage them and then do it that way but as i've only got you know one change i have to worry about that um i'll be again docs improved formatting i haven't got an issue number so i want to be really bad about that and at the end if you don't specify a path or a file it will commit whatever stage i have nothing staged so i'm just going to go read me and specify that that's now committed so if i do a get status uh all is good and so i want to push that up so i do get push origin because i'm pushing to my repo and i want to push the test branch to my repo up that has now gone up so if i go to github already github said hey there's a new branch do you want to create a pull request okay let me click it create a pull request it already knows to put the original the upstream repo which is dennis's from my test branch um and just say you do um we'll hit create and and now that's done and so if i switch back to my default branch or to the repos default branch which is master and i do get log that change isn't there um and that's because i don't want the change in my repo until has been accepted in the upstream brand that is really important that will save people so much time so whatever change you're doing do it in a branch and one last tip on that because i've been talking for too long if you want to make a new feature say this pull request is open dennis is not going to review it until tomorrow different time zones etc i want to create a new new change a new pr second pr make sure you branch from the default branch and don't d don't branch from your previous branch because it will contain the changes so if i created a second pull request with more changes and then it goes to review it it will contain all the stuff from the first pull request it looks really confusing unless your second pull request really needs the original changes but uh then i won't get into that now but there are ways to to do that make it better for the maintainer on the rest i can do that later on and we've got steve steven say hi youtube hi steven i keep muting my mic here oh sorry were you talking i talked too much no no i muted my mic and then i started talking and i realized um i was saying that's a really good tip and i'm sure a lot of people are i mean it's something that's going to be the case where you run into that where you make a pull request and then you want to make another change so that's something to consider that's good that you mentioned that all right well thank you for showing that that was that's awesome i wanted to get that demo out and obviously this video is going to be available after so anybody can come to come to that and check it out we have the merge that we use just from from github that we did that from from the cli and we have both demos along with awesome answers eddie thank you so much for for joining here i think we're we're going to end it now i kind of had my questions answered i'm going to see if i'm missing anything we went through the comment sections a little bit somebody's asking how do you choose the right people to help in a project at this point anybody can technically help so i just wanted to address that it's all about who do i accept commits from i guess or a pull request from um and if you have a better answer um that's just it's that's the idea of open source is that anybody can contribute to it yeah anybody can contribute absolutely and it's about them adding value to the project so as long as adding value then most people look will accept those uh those pr's yeah perfect well thanks so much for joining thank you for your time um i'm sure everybody got a ton of value out of it i got a lot of questions answered i i wanted to do this more for myself i wanted to call you up personally but i don't want to take your time i figured if we do this live we can we can assist everyone else more can benefit from it then it makes sense for you so thanks for coming on and no thanks for having me on your on your youtube channel it's awesome to be here i look forward to geeking out again like i said we can we can if you have any more kind of you collect your questions up together we can do another live stream or something and uh geek out everybody have an awesome community here you know thank you everyone for listening to me hopefully he didn't fall asleep and when i talk about open source my wife says um i can get carried away just geek out for ages and we've been going for over two hours but i just i just love it i could go for another two more hours easy no it was interesting for me so i'm sure i've enjoyed it links are in the video description to eddie's channel uh there's gonna be links also for getting started with github some introductory level videos so what we just talked about what eddie showed um i'm sure he's gonna i'm sure the links we're gonna be posting are going to be for that basically so we'll go ahead and add those after the stream take care everyone
Info
Channel: Dennis Ivy
Views: 10,908
Rating: 4.9909296 out of 5
Keywords:
Id: 1oxfgV8e4IM
Channel Id: undefined
Length: 129min 50sec (7790 seconds)
Published: Tue Mar 30 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.