asyncapi / studio

Visually design your AsyncAPI files and event-driven architecture.
https://studio.asyncapi.com
Apache License 2.0
162 stars 98 forks source link

[DRAFT] Studio vision and plans #634

Open fmvilas opened 1 year ago

fmvilas commented 1 year ago

THIS IS A WORK IN PROGRESS

This issue aims to explain my vision and plans for AsyncAPI Studio. Please take this as an initial proposal. It's by no means set in stone and I'd love it if we could work on this together as a community.

Vision

Studio goes beyond a simple playground to try out the spec and becomes a fully-featured suite to help developers work with event-driven architectures (EDA) and APIs. It will become a tool you can use to easily design your services and share them with your colleagues. Among other features, it should:

Who's the target persona

We're targeting two kinds of people:

In other words, we're targeting the so-called "providers" of the services and not so much the "consumers" of the services.

Why?

At the time of this writing, we're seeing an increased interest in using AsyncAPI to define and document EDAs. Most of the issues we hear about from users are those related to authoring AsyncAPI documents: how to properly structure it to map my service/API definition, how to properly reuse objects like servers, channels, and messages, etc.

I think the most important thing we can do right now is to help those interested in authoring AsyncAPI documents as much as possible, for two main reasons:

  1. Developer experience: if the majority of our users are those who are writing AsyncAPI documents, we should help them.
  2. Strategy: the more AsyncAPI files out there and the more quality the tools have, the better for us. People often stop using technologies that are not useful or are hard to use. Let's give our users one less reason to stop using AsyncAPI.

Proposed Changes

Note We're working on the Studio project on Github: https://github.com/orgs/asyncapi/projects/16. I'm just drafting a summary below for context in the meantime.

Summary ## Layout improvement ![Code Editor](https://github.com/asyncapi/studio/assets/242119/ea7e4952-3ebb-4972-b21b-5d3a402f16ca) The previous top bar disappears as it was useless (it only had the Studio logo and some links to stuff not related to Studio). Instead, it's now holding the name of the service (AsyncAPI file) we're developing and a few buttons to customize the layout. These are just the buttons that used to be on the sidebar, i.e., toggle Navigation, Docs, Diagnostics, etc. But probably, the biggest change here is the introduction of this new sidebar on the left. It contains a bunch of buttons and also the avatar of the user. This new sidebar is meant to be the navigation for the whole application, meaning it's not just for the code editor as it was before. The purpose of this sidebar is to navigate to other parts of the application like Services, Governance, Settings, and more. In general, now the layout is accommodated to start growing the application in a friendly and sane way. ## Visual Designer ![Overview](https://github.com/asyncapi/studio/assets/242119/428b3cd3-8459-4fc9-b205-2c86687e7d2c) To address the first point of the vision ("Let people quickly start authoring AsyncAPI documents without having to learn the AsyncAPI syntax and nuances"), we're adding a visual designer. Essentially, this is just a UI to help you edit your AsyncAPI file. It takes the AsyncAPI document as input and outputs a new one with the changes you make on the UI. That's it. No more, no less. Play with the interactive Figma prototype here: https://www.figma.com/proto/bPMB3lkMTOOMuKk0oGLuNm/Studio?type=design&node-id=96-2392&scaling=contain&page-id=0%3A1&starting-point-node-id=2%3A2. ## Services Directory ![Services Page](https://github.com/asyncapi/studio/assets/242119/651b554a-a8ec-4a18-b722-da988f095ad7) This is the screen you land on when you're already signed in (once we implement signups, of course). It's a list of all the services (AsyncAPI documents) in your organization. They can be filtered down by tags (those in the AsyncAPI documents) and even search by words. You can also pin the services you work the most with on the top. Play with the interactive Figma prototype here: https://www.figma.com/proto/bPMB3lkMTOOMuKk0oGLuNm/Studio?type=design&node-id=2-2&scaling=contain&page-id=0%3A1&starting-point-node-id=2%3A2. ## What are these icons on the sidebar? Top to bottom, these are: Services Directory (the one described above), Architecture Map, Registry, Governance, Teams management, Organization Settings, Add button (new Service, new Broker, new Message, etc.), Search, and User Menu (User settings, Logout, etc. In the first iteration, we're only implementing the Layout Improvement and the Visual Designer but right after that, the first feature we'll target will be the Services Directory. There are no designs for the rest of the features yet but I'll try to briefly explain what they are about: ### Architecture Map It's pretty much something like this: https://app.eventcatalog.dev/visualiser/?type=all&name=AllEventsAndServices. I actually think that Studio should let you export to Event Catalog, either on the UI, the CLI, or both. It's a map where you can see how things are connected. What services are sending what messages and what services are consuming them. ### Registry It's a registry/catalog of all the components of an AsyncAPI file: servers, channels, messages, schemas, parameters, server variables, etc. Everything that can be referenced using `$ref` has a place here. We should encourage and facilitate reusability as much as possible. Aside from the UI, there should be an API to address all these resources from a `$ref`. For instance, something like `$ref: 'https://studio.asyncapi.com/api/org/1/servers/kafka-production'`. ### Governance It's a place where architects can define Spectral rules that will be applied to all the AsyncAPI documents in an organization. This would help organizations enforce their own style guide. ### Teams Management It's a place where you can see, invite, and manage the members of an organization. Probably to be merged inside the next section. ### Organization Settings It's a place where you can tune the settings of your organization, e.g., the name, the members and their permissions, the teams, GitHub integration, etc. ### Add Button A quick way to create new stuff. A new service, a new server, a new message, a new schema, etc. ### Search Well, you know. Search anything and everything in your organizations :) ### User Menu The typical user menu where you can config your name, avatar, and other stuff. Also where the "Logout" menu item is.

Outcomes

See the Studio project on Github.

Shurtu-gal commented 1 year ago

Would love to work on it @fmvilas

fmvilas commented 1 year ago

You're already on my list mate :) Will hear from me soon πŸ˜„

kaushik-rishi commented 1 year ago

I've joined the Studio Visions Meeting. I'm very much interested to contribute to the planned improvements. :slightly_smiling_face: All the suggested changes make sense. It would be a pretty hefty and amazing improvement providing an amazing UX to users of Studio. :tada:

Will we be having more such meetings around kickstarting the planning or everything from now will go on async ? @fmvilas

fmvilas commented 1 year ago

Yay! πŸŽ‰ Yeah, we will be having them. @Amzani is currently organizing all the stuff around the project coordination. Everything will be transparent as always. No secret meetings or anything. We'll make sure you and others who are interested know about these meetings upfront, even to decide the best day and time :)

Shurtu-gal commented 1 year ago

Nice πŸ˜€

princerajpoot20 commented 1 year ago

Excited about the Studio vision. πŸš€ I'd love to contribute to this project. May I be a part of this? @fmvilas

fmvilas commented 1 year ago

Hey, @princerajpoot20! We would love to have you, of course! Please have a look at https://www.youtube.com/live/1jiRDmuA-zg?feature=share&t=671. In short, pick an issue from https://shapeit.app/projects/org/asyncapi/16 that no one has started yet (its progress is 0 and no one left a comment on the issue saying they're starting to work on it or is not assigned) and that's it. Leave a comment saying you're starting to work on it and make sure you give an update at least every 3 days. Ideally, update your progress (or no progress if you're stuck) every time you make some meaningful progress if the issue is taking longer to resolve.

Happy to help further if you need it. Either here or DM on Slack πŸ‘

princerajpoot20 commented 1 year ago

Sure, I'll check the issue list.

rukundob451 commented 1 year ago

@fmvilas would surely love to be a part of this?

github-actions[bot] commented 10 months ago

This issue has been automatically marked as stale because it has not had recent activity :sleeping:

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience :heart:

github-actions[bot] commented 2 months ago

This issue has been automatically marked as stale because it has not had recent activity :sleeping:

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience :heart:

KhudaDad414 commented 2 months ago

Still relevant.