 Let me quickly just introduce the two gentlemen we have here and also give a little bit of a background around this session. So we have Jonathan, who's the lead of the wonderful APM project, Jonathan is the chair of the conference as well. So Jonathan and I were talking about, you know, for the APM light, we would really love to have someone who's recently started contributing to the APM project and kind of hear from their experience, you know, what was their experience like to contribute to the APM project. And Jonathan recommended that we should certainly try and get Ayan. Ayan is the youngest and the most, I would say, strong contributor recently to the APM project. And so we thought, you know, we could hear from him and Jonathan also, you know, agreed to kind of do this as a fireside chat, you know, so without too much of a delay, I think I will hand it over to Jonathan and Ayan to take it forward from here. Awesome. Cool. Thanks, Nuresh. Yeah, this was a fun idea. I was a big fan of it when you brought it up and I think it's always, you know, good to remember that APM is an open source project and we really rely on contributors coming from all places and, you know, some contributors contribute to APM as part of their job and, you know, I'm fortunate to have the support of my employer headspin to, you know, for me to keep working on APM and a lot of other of our contributors are in the same boat. And this summer, well, in the Northern Hemisphere, this last summer we just had, I was able to bring Ayan on board as an intern to do some APM contribution and he had, you know, obviously no experience with APM before, so I thought it would be interesting to talk about Ayan's experience of kind of onboarding as a contributor with obviously the goal of maybe inspiring some other folks to come and contribute to APM and hopefully, and Ayan, this is something you really have to say that it's not too scary to get started. Well, you can say whatever you want. I don't want to be too dictatorial here. But yeah, so Nuresh, you're going to introduce me, but Ayan, why don't you give us a few sentences about yourself just so we kind of get a picture of where you're at in your life and career? Sure. Yeah, thank you, Jonathan, for inviting me for this conversation. I'm really excited to talk about APM and some of the work that I did on APM this past summer. So my name is Ayan. I'm a third year computer engineering student at the University of Waterloo in Canada. And most recently, I worked with Jonathan as a part of an internship for Headspin. We worked on APM and APM related tasks and just APM contributions and stuff. Awesome. Cool. Yeah. Thanks for that background. Yeah. So Ayan had the opportunity to work on both some internal projects at Headspin as well as the APM open source project. So obviously here, we're focusing on some of that open source work. So yeah, let's jump into some questions I had prepared. Obviously, we're just doing this over Zoom, but everyone who's watching can imagine that we're both sitting in couches next to each other with an appropriate beverage and just kind of chilling and chatting with one another. So yeah, Ayan, I think you learned about APM for the first time when you saw the internship opportunity. So what was kind of your first thought about the project? I don't know if you just click on the website. Did it strike you in any way? Did it make sense what APM was trying to do? Yeah. So previously, I had done an internship as a QA developer. And so I had done some web automation with Selenium. And I never really came across APM before this. But when I did read the job description and search up about APM and get to know it a bit, it made complete sense to me because I thought Selenium was a great way to automate the web. And it was very easy to use and very developer friendly. And yeah, to me, it just made sense what APM was trying to do and how it was trying to use the same Selenium functionality but with mobile devices. And to me, it always made sense. Right on. Yeah. I guess, yeah, if you had some background with Selenium. I mean, that's kind of our goals to make it easy for folks that have some experience knowledge with Selenium to get going. So that's perfect. I mean, I guess, besides your background as somebody who'd used Selenium before, did you have any coding or development background or experience that you felt made it either easier or maybe more difficult when you started to approach the APM code base? Yeah. So as a part of, I guess, my curriculum, we do learn some sort of programming and just software engineering and software engineering, I guess, concepts. And I had previously done a developer internship for another company. So I did kind of get used to navigating code bases and figuring my way through the code base. But definitely even, even with some experience prior, it was a bit of a challenge initially for the first week or so, just figuring out where everything is because APM is pretty big and it was probably the biggest code base that I've worked in just because you have to be able to, I guess, you have to know where everything goes and where everything is. So definitely it was kind of, it was definitely a bit tough just to figure out where you have to, where to begin and where do you actually start writing the code? Yeah. Yeah. Yeah. I mean, on that point, tell us a little bit about what your first project was with Appium and how did you figure out where to begin, where to start adding code? I mean, like you said, Appium is split up into a number of different repositories and NPM modules and things like that. So it can be a bit hard to figure out where to make that first change. So how did you go about doing that? So I guess my first commit and push was a part of a larger task I was working on and the task was related to adding the run command to the Appium client interface. And so one of the subtasks of that larger task was to expose a scripts field inside the package JSON of a driver. And so the task itself wasn't too hard, but definitely the most challenging part was, okay, so how does the driver get called? Where should you put it in the driver, in the driver's package.json and yeah, just figuring out, so that's just figuring where to actually expose the field and how to properly expose it. And I guess the way that I went about it was just console.logging slash debugging my way through it. So figuring out where existing Appium client interface commands were written and how they were written and what were some of the existing functions and helper functions that existed in the code base and just starting from the top console, I guess logging my way to when the drivers actually get called and then figuring out, okay, so this is how it's called so I can place the field here and it's going to fetch it like that. Yep, yeah, awesome. Yeah, I love that strategy too, just kind of start adding some logging and you can begin to get a sense of the flow of the code's execution that way and you can read code all day long, but not necessarily know how it all relates until you start running it and changing things. So I guess you were working on this project, but there were other people in the Appium open source team, the group of maintainers and whatever that are interacting with you on this obviously myself because I was helping you with your internship, but then people that weren't at Headspin and worked for other companies who helped maintain the Appium project. So what was it like working on kind of an open source team with random folks spread out all over the world rather than kind of everyone working on the same team at a single company under a single reporting structure, et cetera? Yeah, I found it to be a very cool and unique experience because usually every time that I've worked in a professional environment, it's been with people within the same organization. And so it's just a really cool and unique experience to see people from Headspin, people from Browserstack, people from Sauce Labs and different organizations and just individual contributors coming together and working on one purpose, which is to make Appium better and everybody was super helpful. And I never got the impression that I was asking for too much or reaching out too much. Everybody was collaborating with each other. I got reached out a lot, too, by some other people and everybody was just very friendly and helpful. And definitely, it didn't feel too much like we were working, I guess, that we were too different or working from a different organization or from a different company. I guess everybody had the goal and mindset of, OK, how do we improve Appium? And now let's make that happen. Awesome. Yeah, glad that it felt that way. That's been my experience as well. So, obviously, I'm trying to hype up Appium 2.0 a lot. It's in development and most of the actual co-development seems to be nearing completion. There's a lot of work to do yet on documentation and making sure Appium Desktop is compatible and things like that. So, I'm sure right now exactly when the official release will be, but soon. But you had a chance to work on Appium 2.0 as it was being developed and had a chance to add some features to it that everyone who uses Appium 2.0 will hopefully have a chance to use. So, what was your favorite part about working on Appium 2.0? Or what were you excited about with the idea or direction of Appium 2.0? I guess the main thing that I just loved is that with about Appium 2.0, is that it's no longer about just like iOS or Android devices or just a specific device type. What I really liked and what I was really excited by was the vision and the fact that you can literally use Appium to add automation capabilities to anything. And so, just the fact that some of the work that I did for this past summer related to adding automation capabilities to a custom piece of hardware and just so just seeing that come to life and seeing how Appium 2.0 made it come to life and was very exciting. And just, I guess it just made me realize, this is the right way to go with Appium and just the power of Appium and what it could actually do. Sweet, yeah, that's great to hear. Yeah, and hopefully we'll hear more about this hardware project, this Appium driver that you are working on. I guess in terms of what you sort of took away from your time contributing so far, do you feel like changed or improved, hopefully not worse off as a developer by working on Appium? Any specific things that you learned or will take away with you while reading or writing code in the future? Yeah, it's definitely made me put more emphasis on writing good code and not just code that works and putting emphasis on writing readable code and code that adheres to the code base's rules and code that fits with the code base. So I think that's one important thing. So like something might look good, but if it's not following the conventions of the code base, then it might just seem too out of place. So it definitely made me realize the importance of maintaining code readability and maintaining some sort of code, some sort of guide life of the code base. Yeah, perfect. Yeah, and I mean, for everyone who's listening, I guess that goes for test suite code as well, not just code inside of Appium. I think that's really important. As we start to get to our last few questions here, what would you say to anyone else who's interested in contributing to the Appium project? Any pointers on getting started or things to be aware of? Yeah, I personally recommend everybody who's interested to do so. I think it's great experience and I personally had a lot of fun doing it and something that I had so much fun in that I expect myself to continue doing. But for for newcomers, I would definitely say it's OK to feel overwhelmed. It is a pretty big code base and there's a lot of stuff to figure out and click in. So what I would say is if you are starting to contribute or want to contribute, try to pick up a smaller task, a task that would allow you, I guess, enough time to just get used to the code base, read the code base and just figure things out and then go on to taking the tackling bigger tasks. But definitely if you're not used to it yet, pick up something small, try to find a solution for it and try to navigate your way through the code base and learn how Appium is really connected. Yeah, awesome. Well, I'm glad to hear that you've had a good enough time that you're hopefully going to stay connected with the Appium community. We would certainly appreciate your continued contributions and help. It's been awesome to see some of these features that you've added to help support the Appium 2.0 command line interface and things like that. So I guess to to wrap up here, I'm aware and want to make everyone else aware that you also have a talk at Appium Conf coming up in a few weeks. So tell us a little bit about that talk and get us excited about it so that folks can can make sure to attend. Yeah, so the talk that I'm going to be giving for Appium Conf is going to be related to it's going to be sort of a case study slash overview of of how I use Appium 2.0 over this past summer and how I use Appium 2.0 to automate a custom piece of hardware. And so I think it's just it's going to be a really interesting talk and just and just to highlight and showcase the capabilities of Appium 2.0. And yeah, I guess just to also, I guess, give sort of like a force of insight into what you can actually do with Appium 2.0 and it's possible use cases. Awesome, cool. Well, thanks a lot, Ian. I know that we just have one or two minutes left and I wanted to check in the Q&A box here to see if anybody has asked us any questions while we still have a minute. Looks like we do have one question. Nuresh, should I should I answer this or I'm just kind of taking the reins here? Go for it. Go for it. OK, cool. Yeah, so Prasanta asked about what some of the features are for Appium 2.0. And, you know, one minute is not enough time to go into all that. But luckily, I've been doing webinars for probably literally years what Appium 2.0 is going to be about. It's been a long time coming. So there's lots of information out there that you can search up. But just kind of the the big idea, I guess, I'll say of Appium 2.0 is that we can now have kind of third party Appium drivers and plugins that anybody can write and share with the world and make it easy for other people to find and download and and kind of import those drivers or plugins into their own Appium server to add additional functionality. So as I was saying, for example, you know, this was an internal project. So, you know, it may not be relevant to the wider community, but he was able to create an Appium driver for a custom piece of hardware. Now, if that piece of hardware was something that, you know, the whole world had a need to automate, it would be very easy to be using Appium 2.0 for people to pull down that driver that I wrote and to have Appium access to that hardware. So that's one of the things that I'm most most excited about. OK, well, I think that's about all we have time for. Yeah, thanks so much for for listening to us chat with one another. And I hope that you've learned that, you know, we're we're a friendly bunch at the Appium team and always wanted to support folks who who are wanting to get into contribution. Cool. Thanks, Jonathan. And thanks, I think there's one question that, you know, there's someone from the attendees asking is basically there are a few sessions that are happening at the same time. How do we go through and access them? So don't worry about that. If you've missed some sessions, all these sessions are getting recorded and they will be uploaded and be accessible from the Confinement website and the YouTube channel as well. So you'd be able to watch these sessions later if you missed them or if you want to go back and rewatch something, they'll all be available for you to watch later for free.