you
now it's proper green okay now it's a good green okay so so yeah so so when you look at this distribution
oops wrong slide yeah so it's actually it's a number of components and we when you deploy the stack it's for production deployments it's Kubernetes only we do have VM distributions but they're for development only there's no way to upgrade the VM so if you're testing it VMs are fine we're publishing packages that are not available for you.
Red Hat Ubuntu and Sousa but when you put it into production this is really a enterprise deployment.
Just a couple of notes of like who who wants to use this type of thing this is for large scale deployments companies that have economies of scale to operate.
People have custom requirements companies that need to self host who don't want to use a cloud provider or people who want to build a product.
So okay well that's enough about about the background what I want to show today is actually a live demo of a gamma and this is sort of brave majority not you know we're already facing technical difficulties we'll see how it goes here.
But I want to show you actually want to build an agama project and maybe customize it a little.
So let's go here so I'm going to go to our.
So this is a gamma lab as I mentioned a gamma lab is the developer site and so a gamma is a.
So the idea with a gamma project is that it's everything you need in order to build a project that includes the code any libraries any web assets CSS HTML images so all that stuff together is what we call an agama archive.
You take a gamma archive if you're Java people you might know what a war file is a war files are your whole application and you can deploy it on any.
Application server that supports war files so a gamma files are sort of like war files for IDPs if you have this any IDP that supports deployment of a gamma should be able to run.
The agama catalog is a catalog of projects that you can start with because it we don't want you to have to write everything from scratch the idea is is that we can create sort of a catalog of ready to go projects you can fork these and then modify them a little bit and publish them on your server.
The project I want to work with today is called a gamma SMTP so I'm going to actually just go here and fork this project in my personal repo.
And so a gamma lab doesn't actually store any code we're just using GitHub for everything here so we're storing you so you fork it and so now it's forked so now I'll go back to a gamma lab.
And so I'll change the repository.
And I'll say okay where to go.
So this is this is the one I just forked so let's work with this one.
And it says okay you don't have enough permissions so.
We're using what's called a GitHub app I never heard of this thing but basically you can install a GitHub app in your in your project and so this enables us to have very granular permissions.
So I'm going to configure and I'm going to basically have to add say okay where's the gamma this this app.
Save.
Yeah and so now I can go back to a gamma lab.
And I should be able to switch to it now.
Without that I wouldn't be able to read from the from the from the repository.
Okay so now here's my project.
Let's look at it in this is what we call the orchestrator it's the place that you actually write the agama code.
So this this is what a gamma the the low code looks like.
If you actually want to see the agama code itself you can hit generate code here and this will show you the agama source.
But we don't actually want to see this.
And so the idea here is that let's actually.
Let's maybe make a new a new flow file so I'm going to teach you let's just say.
Or dot foster dot.
So.
Say demo.
So.
Every agama flow has a unique name we call that the qualified name or QN.
So when I'm evoking an agama flow using open ID connect we would always use the ACR agama to tell the IDP we're running in a gamma flow.
But then we have an extra parameter called a gamma underscore flow and that and that would be the qualified name of the of the server.
So here's the QN up here.
Now in a gamma these are all the agama commands agamas are very concise language.
So let's say I want to the first step of my flow is I want to display a form I would use RRF and here I would give the name of the template.
And actually in the in a gamma lab we also have form authoring.
So for example here here's the form and this is using Apache free marker.
And this is kind of brave but let's try it.
What if maybe I can.
Drop in a new logo here.
So.
Let's try.
That one looks beautiful way better.
Okay so I just customized my form.
Okay and I'll save it.
So you got the idea.
You can customize your forms.
Now we also have a lib folder here.
So the code folder is where all your agama orchestrator flows go.
The lib folder is where all of your code goes so agama is low code not no code.
That means that you're still going to call classes Java classes or groovy classes are both acceptable or you can drop in a jar file.
And.
Yeah and so when what what is a gamma file basically as we take it we make a zip file out of the code the the lib and the web folder and we have a project set that Jason that basically provides the metadata.
Let's go back to the orchestrator.
I want to keep going with a gamma.
So and show you some of the other commands.
So in addition to being able to render a form we can assign a variable you're all geeks you know what that means.
We can call so in the call box we provide the class name the method name we send in arguments and we assign whatever gets you know comes back to the class name.
We can get back from the method into a into the result.
So that's a very important box.
We also have a trigger so trigger means I want to call another agama flow sometimes you might break your agama flows into different parts.
Maybe you have one we have one part that sends the email we have one part that maybe does registration so instead of building gigantic flows we can break our our orchestration into different flows and route between them.
We have our FAC this is a very powerful command that allows you to redirect it stands for redirect and fetch it call back.
So that means that we can send to an external open ID provider.
A lot of things have an open ID interface these days.
It's like you know a lot of things have a web interface well in authentication things have an open ID interface many authentication services have an open ID interface.
When we call key cloak for sample we actually call it via open ID.
So the ability to sort of built in you know call another IDP and get a response is very powerful.
Let me actually so let's say we want to test this thing.
Okay I've written my code and now I want to test it.
So what I'm going to do is I'm going to download a dot gamma file.
And now I'm going to ask SFDP that up to my server and deploy it.
Dangerous I know but let's do it.
So nope that's the wrong tab.
This one yeah so let's try it.
Okay now it's on my server that's good.
And so there's a couple of ways to configure Johnson I'm going to show you the geeky way because you're developers and you can handle it.
We have this thing called the two e and the two e basically it's an interactive command line thing it's better than I hate command lines.
But you can we have a command line we have the two e in the commercial product is a web interface.
But let me say so what I want to do here is upload my dot gamma file.
So or rather it's already uploaded but I need to say okay this is the agama file I want to deploy.
I need to fill a buster here while it's deploying so I'm just going to show you this thing sends email.
So it actually uses the agama or the Johnson server to send email.
You know this is one of the areas where actually so if you we want agama to support multiple IDPs we'd really love it key clout to have an agama deployment for example.
If you have any IDP specific stuff what we want you to do is write an interface with all the methods.
So in our server we said we have three methods that your IDP needs to do send email on board user.
And so we have an implementation for Janssen that is how we send an email but if you're writing key cloak you would implement these three methods to in order to do whatever key cloak needs to do to send an email.
So we want to sort of separate the IDP specific stuff.
Okay I think it should be deployed now.
Let's just go back and check.
All server, agama, just see.
Yeah so it looks good.
Okay so let's actually test it out now.
And so we have this really cool test RP called TARP.
And so TARP it's a browser plugin which is really nice.
So you put in the host name of your IDP.
I think this is what is my host name actually.
Moral boxer.
Moral boxer.glue.info.
Okay so now we're going to do dynamic client registration.
So now I have a client ID.
So remember when I send this request I'm going to send ACR values equals agama.
And remember I need to send this extra parameter agama underscore flow and then I will go back.
So I don't know the QN of the flow I want to invoke so I'm just going to go look at it.
I think it's this one.
And remember the QN is here so I'm just going to copy this.
Copy this, go back to TARP.
Paste it in.
And let's trigger the flow.
Oh no.
I think I know what happened.
I think probably my bad demo flow didn't like it.
But I don't know if I have time to fix that.
But basically you got the idea though is that we what we're going to do is just to summarize.
I think I only have a couple of minutes left.
So you build your flows here.
You download them.
You test them.
And then when they're good we have another feature built in called publish release project.
So this actually does a GitHub release.
You know how GitHub has the release a section.
So we have a way, an automatic way to do a release.
And if you really, if you're really excited about your project and you want to share it with the community, you can publish it.
That means you're submitting it to the agama explore catalog.
We have a review process to make sure that it has the right documentation and license and everything else.
But we're we want third parties to submit projects.
So I think that's about it.
How much time do I have?
Okay, let me I'll take some questions.
Sure.
So you mentioned about identity providers being able to provide something.
My company is an identity provider and authorization as a solution.
And I'm not sure what you could be needing to add to support this or what our customers would get out of it.
Could you explain?
Very good question.
Okay, so agama like Python, you know, it's it's a it's a.
Okay, so the question is, is how can my company who has their own IDP use use use use agama.
So a gamma is governed at the Linux foundation.
And so if actually my one action item, please go to jans.io and and star this project.
We need to get to a thousand stars.
But a gamma is published here at the Linux foundation.
And that includes the agama interpreter.
We have an agama interpreter, which is in Java.
So for if you have an IDP and you want to support a gamma, what you would need to do is support a way to enable your customers to upload and deploy a dot gamma archive.
And then you would have to be able to interpret that.
But that code is actually here for you to use under Apache to license.
And also the documentation for the agama language is also here in the in the docs.
So the language reference, etc.
Is all here.
But basically you'd have to build an agama deployment engine and a gamma interpreter sort of into your IDP.
What does that get us?
That gets you the ability to your customers would be able to use a gamma projects and deploy them.
So they could use the developer tool right there.
Gamma projects and then deploy them on your IDP.
Do you have low code?
So maybe nothing.
But but if they have a lot of IDPs don't have low code.
Also, we'd like to see commonality instead of each IDP having their own low code.
We'd like to see why are we going to torture developers and make them learn five different low code ways.
Let's get one low code platform for building web flows.
And that way we really would really like to see this deployable on the cloud to like Amazon Cognito would be great if you could deploy your gamma project to Cognito.
So we'd like to see interoperable web journeys just like war files.
Yeah, any other questions?
We're probably out of time right.
Five minutes.
Sure.
So do you think the current state of the language to the SLB is finished or are there needs to be extended?
It's two years old.
Okay. So the question is what's the maturity of a gamma? Is it done?
The we've it's about two years old.
So it's still early and I wouldn't say it's finished.
But we are we are using it and and and so and we have a number of pop up projects published this year.
I'm going to plan to do one project per week.
I have a if you follow me on LinkedIn, I have a new episodic called a gamma project of the week where I'm going to feature one project.
So by the end of the year, we'll have about 50 projects.
So it's still new, but it's we think it's usable now, but certainly we're going to keep improving it.
So to get started, you know, you can go to I have stickers, but if you go to glue dot org slash a gamma dash lab, or just go to glue dot org, you'll find it.
You can sign up for free.
A gamma lab is a free developer site.
So, yeah.
So looking forward to seeing some of gamma projects.
Thank you.