 Hi everyone. I am so so happy to be here. This is really Really amazing like exciting for me because this is the first backstage con This is for me like the way I see this. This is the beginning of the DX era From from he this is the first time probably like even five years ago. We didn't see this kind of enthusiasm for improving developer experience and and What we're seeing now is and part of the reason why we're all here is because our employers are investing in making developer experience a priority and And they're doing is because they're seeing value in what developer experience the impact the developer experience has on organizations and It should be of no surprise to anyone that Spotify the engineering organization that brought us the squad framework should play such a significant role in this in this transformation because fundamentally important technologies, they're made by communities and a Community has a shared culture the culture that Spotify Cultivated within the engineer organization is what produced Backstage and what's really exciting for me is that now by open sourcing backstage and by making a framework available to to for us to use and more importantly creating a community around backstage what we now get to do is create real magic and What I'd like to do is I want to show everyone a demo and for those who are coming in late I'm going to miss out on some of the demo so But so I will I will introduce myself. I am so I'm trust minkowski. I'm the CEO of Ronside We are a DX consulting company and we were doing DX before before DX was called DX and And Charles was the founder of the company has a motto that we want to make developers feel like they're flying and it's always been what we would be trying to do and The way we do that with backstage is we offer enterprise support for teams that are adopting backstage and we're honored to be a professional backstage service a backstage professional services partner so demo time all right, so this demo is something that that Everyone at front side contributed to everyone somehow had a role in Putting together this this presented this demo for me to show you so what I'm going to show you today is Is a New plugin this is kind of a proof of concept at the moment, but it is a fully functional plugin We wanted to validate the architecture. This is and this is show that this is possible This is what we call a platform plugin backstage platform plugin what it is is it's a plugin that allows a developer at a Developer who's using backstage to download a CLI tool to their computer that allows them to use a backstage instance So it's a CLI tool that is created specifically for each backstage instance So you can install this plugin and then what it will do is once install the plugin it will give you this It will give you this command so you can then take this command into your terminal and you can Drop this in here It was going to do is it's going to download the It'll download the binary to your computer and put it into path. So now I can do Which I depia and then I did but the IDP binaries in my path so This binary is generated specifically for for this particular backstage instance and The operators the developers who are building the backstage instance can control which what what commands it has So what you see here is the help that is generated from the binary. So if I do IDP help It will show us the same information and so What what you'll see here is that this binary because it is generated from inside of your backstage instance It has access to the configuration of backstage instance. So it actually has it comes pre-compiled with the the URL of the backstage API built right into the Into the binary and what it shows that you could see is different commands that you can execute. So so for example, you could do like IDP info and what I'll do is we'll go and read the catalog and it will show you the catalog The current the current in the current working directory it will figure out which component you are looking at which component is Associated to current working directory. It will go into the catalog and find out that information and show it to you And give it to you in a console. So that's that's kind of cool. But what's Even cooler is that you could do Let's see if I have it here. You can you can run the scaffolder So if let's say your work you're inside a project you could say, okay What we're gonna do here right now is we're gonna create a new component and it's going to be called the Backstage Con component the capacity con demo Yeah backstage content. Oh, is that better and Then we're gonna run this Demo, okay So what it's doing right now is it's actually using the scaffolder API that's running on your server and it's executing the scaffolder And it's writing the output into your terminal. So Right now what it's it is doing the same exactly the same things that you would do in a browser But it's doing in CLI and it's reporting the feedback in a CLI. This is failing, but it's not supposed to be failing anyway, so So now that we've cloned this component what we could do is we can actually Sorry now that we we've generated this component We can clone it and this is one thing It's really cool is that you can clone it without actually having to leave your terminal to figure out what the URL for this thing is you can just do IDP clone and it shows you the components in the in the catalog that have a have a Compository on the annotation attached to it So if you have if you have bid bucket or if you have a git lab if you have github according to Whatever backing you're using is going to look up those annotations and it's going to report the things that you can clone So here what I'm gonna do is I'm gonna clone my backstage con demo and So now what it's doing is it's it's using the platform API that's provided with a plugin to figure out what the What the URL is where you can clone this and it picks up the URL and it just clones the clones the Clones clones the project for you. And so now we have in our working directory here. We have our backstage con demo and We come in here. We can go. Okay. Let's do Backstay. Let's do IDP Info and so now we're getting the catalog info for the current working director for the component of the current working directory and here's where I think like this is What we've done here is we've set up the kind of the shell of what we can do But I think with the real meat of what we want to be doing here is we want to be able to go into a Component so a developer working so a developer who is your user Has this has this has this we can have this binary on there this executable on their computer And they can go into any working directory where That is connected to a like a deployed service And then you could just go IDP logs And what they'll see is logs that are being streamed directly from their service So this is these are the logs of the of the service that is currently running on our platform This is the This is the workflow that we kind of this is the workflow that we're after Thoughts who thinks this is cool because I've been working on this for like three weeks Okay, okay, awesome. Okay, great. Thank you very much Okay, so all right, so now the demo is finished. So let's talk about let's talk about why why would you actually want to do this? so Why is it not enough for us just have backstage app because because the backstage app is pretty awesome and And but but the reality is that our developers are not developing in backstage They are not using backstage as a development environment. They're using backstage to get information So when they are in their editor, they're doing code when they're in backstage they've context switched into backstage and As amazing and like I think backstage catalog is an incredibly important piece of software that it that every Organization needs but the reality is that developers are writing code in their editor and If we can bring the information that we have from the catalog into their editor We can empower them to focus on the work that they're doing without having to switch out into a different system to get the information they need so and the other the other challenge with with With backstage currently is that it only supports some of the use cases So like one of the use cases of the catalog is that you can go find the components that you want, but that is going to That is really important and it's a really important piece of part of the work that we have to do But that's only one of the things You know being able to template is also a really important use case But it's only one of the things like the kind of things that it doesn't support for example is being able to get runtime information So if you have a service that's running in the cloud and you want to get information about that service What do you do? You have to go figure out what this thing is connected to go into that platform look at that information Like you have to do a lot of jumping around you can use a Kubernetes plugin, which is great It's very helpful, but there is a lot of other information that goes along to That you need to know beyond the Kubernetes runtime services that is not available just in Kubernetes Our backstage app cannot manage secrets So if you wanted to if a developer wants to be able to Change secrets for their environments. What are they gonna do? They're gonna go to AWS secret manager, or they're gonna go to Azure vault They're gonna go has your core vault like they have to jump into a different system to do the work that they need to do If they want to manage releases Managing what what they can deploy and what is available for them to deploy is not something you can do in backstage today and and you know one of the things that is most tedious is having to go into Kibana and like typing just the right query to be able to get just the right logout But you actually be able to see you know did your service start or not? and that information What ideally what would happen is that we have all this information in our backstage app but also It would be available in in our editor And Well, we really are after here is not replace the backstage catalog UI or replace the backstage UI because both Tools play their role in the actual process of making software But you want to give developers the opportunity to choose and then the option to choose is Really important because what you're doing is and this is what backstage catalog has done really well already is it's taken the Infinite number of tools that are that make up the internal developer platform And it was able to it provided us a place where we can condense all that information and stick it into a single page So you can see so instead of having to look You know going to the AWS and look at information specifically to or going to Cube CTL and look for information specific to your service You can get all that information displayed in one page So you're going to one page and it get it fans out and shows you information from all external services That is really really powerful But we can do more because or there's an opportunity to introduce a new context because The editor context has additional benefits that we do not have if we're just using the browser The editor allows us to say this developer is working on this thing specifically right now They are the code that is open in their editor is the project that is open So instead of it being like you know when you go to the to the catalog page There are multiple different kinds of people interact with that different, you know the SREs You know product managers different kinds of people get value from that different from that page But when a code when code is open in the editor, you know It is a developer looking at that code and their work They're sitting down to do their work. So that added context is Actually helpful because we could use it to distill information in such a way that it's going to give them for developers Exactly what they need when they're working in the editor so that so that they could they can choose whether they want to Go into Backstage app or they want or they they choose to stay in there in their CLI Or if they find that they need to go to the platform and look at the dashboard that that is somewhere outside of backstage They can do that But the ability to choose the size of their context to be able to go from their terminal to backstage to to the You know to the tool outside of backstage is a way for developers to throttle their Throttle the cognitive load associated with parsing all the extraneous information that they have to see when they're looking at When they're looking at any given system because it every time you go further away from the editor There is more information the developer sees that is unrelated to what they need to do Sometimes it's important that sometimes that's very useful because you know if you're don't if you don't know what you're looking for You got to be looking places where you're gonna see information that is that is going to help you find something You don't know you need but when you are looking for something very specific the best-case scenarios You just get that thing and you move on and that's what That's that's a problem that's kind of it's a really big problem specifically on internal develop platforms because internal developer Platforms are they are a combination of all the tools that developers use to run their software so and there's a lot of tools and in some cases there are multiple tools within a single Like in a single internal developer platform There might be multiple tools doing the same job So like it's not unusual to have AWS and Azure or That's usually a combination Google Cloud people tend to use Google Cloud But for but you know, it's quite common to have or maybe AWS and Google Cloud like that's that's something that happens Like the same thing happens with you know for like at each each aspect of the of the platform There is lots lots of things that developers have to interact with you know in orchestration There's Kubernetes crossplane observability. There's all of these different aspects of their developer workflow and all of these tools have All of these tools have a role to play but it's a lot of information to parse and so What backstage allows us to do an internal developer platform is to is to really focus the what developers sees in backstage on the things that they need to see to do their work and From all the different things that are available that you could integrate into backstage the things that are probably like the thing that we see people asking for and the thing that Developers need to know about it are things like what are our runtime environments? Where is my service running? We see this in every every customer that that has backstage deployed They're they want to show that information because the developers won't need to know that information How do I edit my secrets and this is particularly you know challenging in environments where you have a internal developer platform that's in flux or or it's moving because the because you might start off with doing a secret manager today and you might use HashiCorp vault tomorrow, but now You had developers who had to learn two different tools just to put their secrets like most developers Just want to put their secrets and move on with their life and so if we can make secrets available in backstage We can eliminate the the the need for them to have to learn those tools to do their work but also If they want to they could still have the option to like we can still link to the original source of data and if they need to access that information they could still go there, but they don't have to and Of course, there's you know the ability there are lots of tools involved in the process of releasing software so if we instead of having to jump into Instead of having to jump into Something like flux to be what they could do is they could see okay here There's three things that are available We're having to look into the container register like they could just look in their backstage UI and say here The things that I can release Can I press a button to release it? That's the kind of workflow the developers are after and of course the same you know goes for logs because Kibana is fantastic But what you really most of the time what you really wants you want to see like can I can I see the thing? That's that I need to to see to understand if my service is running properly Or did it start or did it not start and being able to see that within within backstage Really focuses developer on seeing the information they need to see within the context of what they're trying to Trying to accomplish at the moment And so this is what I think this so like what I have here Just kind of concepts to get folks thinking about like what you know, what would it look like to have the To have these features integrated into backstage So what what we're looking at here is the is a essentially a card that shows the different environments that are deployed There's a couple of interesting features that you might you know your developers I probably want what are your platform supports that are not it's a different question But the kind of things you might want to be able to do is you might want to be able to clone environments So if you want to be able to make like in a formural environment, so it's nice to be able to say like here's my development environment Let me just clone this thing and then be able to Be able to You know associated with the with the branch and now anything that's pushed into that branch gets deployed automatically to the To this environment, of course being able to edit secrets for a specific environment that's really helpful too because sometimes you want to be able to experiment and to be able to experiment you need to be able to configure your system to use a specific token for example and and being able to focus your focus your Allow you developers to edit environment specific secrets could be really helpful Same goes for for logs. I'm time check. How am I doing for time? Five minutes. Whoo. Okay. All right. Thank you very much. Okay We're gonna go through this quicker. All right So all right We're gonna be able so of course the same thing with secrets, you know Being able to see secrets in backstage and be able to edit them what I really want to get to is I want to get to how do we do this because this is a lot of things that are that we can kind of iterate on as a community but But the really the really juicy part isn't like, you know, how does how does that what the demo that I showed actually works? so So these are some of the UIs that I'll share the slides so if folks could check out this and we can talk about these Things in the future as well. It's a really ripe topic for conversation So these are these are but you know logs might look like in backstage as well So here's what this is the part I wanted to get to is the the this This is what this this is what cloud native has been after for a long time Like Hiroku has been an inspiration for people for for the last 15 years And part of this is because Hiroku provided a lot of functionality that was really valuable And has essentially become part of every internal developer platform like every internal developer platform can now basically allows developers to provision databases when they need them you can push a repository You can push a commit that is going to get deployed to it via CI or that's going to get built various via CI You can you can deploy a container Using something like flux DB You you have automatic rollback built into Kubernetes you have auto scaling built into Kubernetes The what we don't have is we don't have clean UIs So this is one of the things that people really loved about Hiroku is that you have the you have a clean UI That gives you all the things in one screen But it also you could do all the same things from the CLI and that's really what that's really this This is what we're with what I believe is the missing piece in this our cloud native ecosystem that this community can can really fill in The gap with in and so what is it? What does it actually look like at the implementation level? So what we'd have is So we have a we have front-end components that are consistent. So Regardless of what back in you're using on the front end, there's a same set of components for for editing secrets You have a CLI that you can download from your platform and then that that CLI is Yes, this is good. So these are the components. You have you have a CLI that you can you can download and the CLI runs on every and every platform so like with the binary the What you saw that I downloaded it adjusts the installation script downloads appropriate binary for each platform So we're using Dino which which allows you to write in TypeScript But Dino will actually create a binary that is that has no dependencies that a developer can download directly from platform API and And so then what what happens is there so these binaries are provided by this platform plug-in That is Responsible that provides a platform API that gives all the data that the binary needs to run and it empowers the front-end components as well and The binaries I mentioned they're written in TypeScript and Here's here some of the some of the juicy bits because each each each internal develop platform is different How you integrate your internal develop platform into your backstage instance has to be different so there's gonna be resolvers that you can specify which are basically functions that are going to that are going to Return data that matches the API that the front end and the CLI expects And those resolvers are backed by adapters. So you don't have to the idea is that you wouldn't have to Reimplement everything from scratch so we can reuse or someone implemented AWS secret manager API for for the for these plugins you can just Install that it's installed that adapter and it gives you the functionality We want to be able to as much as possible reuse the work that we've done so the the design of this should allow us to allow for that reuse and That is me. I hope you like my presentation and Thank you everyone Thank You Tarras. Maybe we have a couple of minutes for questions Yeah You can get it tomorrow But that's sorry but for everyone else So it's so it is software that is like we have it in our like our repo our backstage instances open source It's all there, but it's it's I mean It's a good example of how this could work It is works I showed in a demo, but there's still a lot of work to actually make this like robust as you Damon know Any other questions a local workstations That's that's one side, but what about virtual workstations? Have you considered like a git pod or code spaces like this types of Developing environments Yeah, I mean it's that's an important piece of the Ecosystem, but I think what's in more I think in both of those systems You can in you can run you would be able to run the binary in those environments because they're basically Linux environments so There there are lots of use cases that I can even think I can even see like this kind of binary being useful for running in CI So for example right now we have to to configure tech docs We have to we have to give tech docs access to s3 buckets or some kind of storage container So instead of using instead of giving it instead of accessing the bid bucket through the storage container we could you could upload the Documentation using the CLI directly through backstage Authentication system so that would that would reduce some of the friction. I think in setting setting up Tech doc so there's I could see a whole bunch of the environments with that that could work