diff --git a/.github/labeler.yml b/.github/labeler.yml index 49da5263a5b2..f2d1bece29cd 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -97,3 +97,9 @@ project/kanvas: - changed-files: - any-glob-to-any-file: - "src/sections/Kanvas/**/*" +project/sistent: +- changed-files: + - any-glob-to-any-file: + - "src/components/SistentNavigation/**/*" + - "src/pages/projects/sistent/**/*" + - "src/sections/Projects/Sistent/**/*" diff --git a/.github/workflows/meshmap.yml b/.github/workflows/meshmap.yml index a80a9c935ad7..91bf0525467d 100644 --- a/.github/workflows/meshmap.yml +++ b/.github/workflows/meshmap.yml @@ -38,7 +38,7 @@ jobs: path: action repository: layer5labs/kanvas-snapshot - id: test_result - uses: layer5labs/Kanvas-Snapshot@v0.2.13 + uses: layer5labs/Kanvas-Snapshot@v0.2.15 with: githubToken: ${{ secrets.GITHUB_TOKEN }} mesheryToken: ${{ secrets.MESHERY_TOKEN }} diff --git a/src/collections/blog/2021/2021-02-04-meet-the-maintainer-michael-gfeller/index.mdx b/src/collections/blog/2021/2021-02-04-meet-the-maintainer-michael-gfeller/index.mdx index 105bc4bb7ce8..c6d2f838658a 100644 --- a/src/collections/blog/2021/2021-02-04-meet-the-maintainer-michael-gfeller/index.mdx +++ b/src/collections/blog/2021/2021-02-04-meet-the-maintainer-michael-gfeller/index.mdx @@ -9,6 +9,8 @@ category: "Community" tags: - Community published: true +interviewer: Shriti Chandra +interviewee: Michael Gfeller --- import { BlogWrapper } from "../../Blog.style.js"; @@ -33,10 +35,10 @@ Michael, thank you for joining me today. Many people inside and outside of the L
Michael:

-"Hey Shriti, thank you for having me. If I remember correctly, I was looking for a professional focus area earlier this year, and landed on service meshes. I had worked with service meshes before, which piqued my initial interest. I had worked with Istio as part of my work for some time, and in the same context I stumbled across Meshery. I wasn’t able to dig deep in Meshery back then, but the concept sounded fascinating to me. Additionally, I had been benefiting from open source, both personally and professionally for a long time, but apart from a few minor contributions, I had never been able to give back to the community. I hoped to correct that." +Hey Shriti, thank you for having me. If I remember correctly, I was looking for a professional focus area earlier this year, and landed on service meshes. I had worked with service meshes before, which piqued my initial interest. I had worked with Istio as part of my work for some time, and in the same context I stumbled across Meshery. I wasn’t able to dig deep in Meshery back then, but the concept sounded fascinating to me. Additionally, I had been benefiting from open source, both personally and professionally for a long time, but apart from a few minor contributions, I had never been able to give back to the community. I hoped to correct that.

-"I re-discovered Meshery and the Layer5 community, listened to a recording of a community meeting, and read a couple of blog posts describing the community and member experience posts. One that stood out for me was a post by MeshMate Nikhil Ladha. Going by his words, it appeared to be a warm, diverse and active community. My suspicions were confirmed when I joined. Layer5 offers a wholesome, interactive community in addition to unbiasedly providing help and guidance around the virtual corner." +I re-discovered Meshery and the Layer5 community, listened to a recording of a community meeting, and read a couple of blog posts describing the community and member experience posts. One that stood out for me was a post by MeshMate Nikhil Ladha. Going by his words, it appeared to be a warm, diverse and active community. My suspicions were confirmed when I joined. Layer5 offers a wholesome, interactive community in addition to unbiasedly providing help and guidance around the virtual corner.

@@ -50,10 +52,10 @@ Michael, thank you for joining me today. Many people inside and outside of the L
Michael:

-"I’m a technical architect and programmer, which made the backend, especially the adapters, a natural choice for me. It involves both contributing to the management plane, but also looking at and using service meshes from an architectural point of view. The possible implementations of service meshes is an area that has been particularly fascinating for me." +I’m a technical architect and programmer, which made the backend, especially the adapters, a natural choice for me. It involves both contributing to the management plane, but also looking at and using service meshes from an architectural point of view. The possible implementations of service meshes is an area that has been particularly fascinating for me.

-"I’d probably continue to work with the Meshery adapters for now before moving on to other areas of the project. Haha, I would probably name the Meshery Adapter Library as my favorite Layer5 project till date." +I’d probably continue to work with the Meshery adapters for now before moving on to other areas of the project. Haha, I would probably name the Meshery Adapter Library as my favorite Layer5 project till date.

@@ -64,7 +66,7 @@ Michael, thank you for joining me today. Many people inside and outside of the L
Michael:

-"I have worked and collaborated with several open source communities before, including Eclipse Modelling Framework and Apache ServiceMix . I couldn’t possibly make a very accurate comparison, given by limited interaction with other communities, but the Layer5 community stands out based on the unique and extremely inclusive approach it takes towards upholding community values." +I have worked and collaborated with several open source communities before, including Eclipse Modelling Framework and Apache ServiceMix . I couldn’t possibly make a very accurate comparison, given by limited interaction with other communities, but the Layer5 community stands out based on the unique and extremely inclusive approach it takes towards upholding community values.

@@ -77,9 +79,9 @@ What is so fascinating about service meshes?
Michael:

-"I find meshes intriguing in general. Meshes can look intricate, layered and complicated at a first glance, and yet they are built on the most basic principles. For me, meshes are visual structures, complete with an aesthetic and artistic dimension. " +I find meshes intriguing in general. Meshes can look intricate, layered and complicated at a first glance, and yet they are built on the most basic principles. For me, meshes are visual structures, complete with an aesthetic and artistic dimension.

-

"Fun Fact: Overlapping meshes resulting in Moiré patterns are an example of this. They appealed to me from a young age, and I learned about their mathematics from my mathematics teacher." +

Fun Fact: Overlapping meshes resulting in Moiré patterns are an example of this. They appealed to me from a young age, and I learned about their mathematics from my mathematics teacher.

@@ -90,15 +92,15 @@ Fascinating. Why did you pick service meshes specifically though?
Michael:

-"An increasing number of applications nowadays consist of distributed services, both in the cloud and on-premises, in mixed and hybrid environments. Many legacy applications are in express need of modernisation, consuming and being consumed by cloud native applications. Introducing microservices, also by refactoring monolithic applications, increases the complexity of the service landscape. By delegating cross-cutting infrastructure concerns like security, traffic management, resilience, and observability to the services mesh, some of the complexity is moved from the applications to the service mesh, allowing application developers to focus on business logic. A concern in these distributed, dynamic and scalable systems is that the security also needs to scale. If security doesn’t scale, it becomes very challenging to handle such systems. Services meshes today are already able to support many of these scenarios, and are continuously improving." +An increasing number of applications nowadays consist of distributed services, both in the cloud and on-premises, in mixed and hybrid environments. Many legacy applications are in express need of modernisation, consuming and being consumed by cloud native applications. Introducing microservices, also by refactoring monolithic applications, increases the complexity of the service landscape. By delegating cross-cutting infrastructure concerns like security, traffic management, resilience, and observability to the services mesh, some of the complexity is moved from the applications to the service mesh, allowing application developers to focus on business logic. A concern in these distributed, dynamic and scalable systems is that the security also needs to scale. If security doesn’t scale, it becomes very challenging to handle such systems. Services meshes today are already able to support many of these scenarios, and are continuously improving.

-"Service meshes are complex but that is something I enjoy attempting as a challenge, to have control and overview and make it appear simple, investing into automating options. Another field that I’m excited to learn about continuously is related to the security of distributed systems, and how service meshes contribute to implementing a zero trust network architecture." +Service meshes are complex but that is something I enjoy attempting as a challenge, to have control and overview and make it appear simple, investing into automating options. Another field that I’m excited to learn about continuously is related to the security of distributed systems, and how service meshes contribute to implementing a zero trust network architecture.

-"I actually dreamed about service mesh a while ago. That was almost a bit spooky.” +I actually dreamed about service mesh a while ago. That was almost a bit spooky.

@@ -109,7 +111,7 @@ Haha. Leading on that, what should Meshery dream about next? What can we hope to
Michael:

-"Meshery currently does a great job of providing a neutral platform. Continuing in that direction would be a superb base plan. Enabling innovative applications from vendors, supporting all service meshes, integrating best practice methods, and implementing the SMP and SMI abstractions would probably score the top five positions in Meshery’s new year resolutions in 2021." +Meshery currently does a great job of providing a neutral platform. Continuing in that direction would be a superb base plan. Enabling innovative applications from vendors, supporting all service meshes, integrating best practice methods, and implementing the SMP and SMI abstractions would probably score the top five positions in Meshery’s new year resolutions in 2021.

@@ -121,7 +123,7 @@ Interesting. Do expand on that. What do you think Meshery could offer, in additi
Michael:

-"At the moment, Meshery provides a management plane solution and provides support for the SMI and Service Mesh Performance (SMP) specifications. Helpful additions in the future should be the configuration based best practices, especially with regards to security and to possibly extend to owning up specific routes on security. For instance by verifying that the recommendations outlined in the NIST report “Building Secure Microservices-based Applications Using Service-Mesh Architecture” by Ramaswamy Chandramouli and Zack Butcher." +At the moment, Meshery provides a management plane solution and provides support for the SMI and Service Mesh Performance (SMP) specifications. Helpful additions in the future should be the configuration based best practices, especially with regards to security and to possibly extend to owning up specific routes on security. For instance by verifying that the recommendations outlined in the NIST report “Building Secure Microservices-based Applications Using Service-Mesh Architecture” by Ramaswamy Chandramouli and Zack Butcher.

@@ -133,7 +135,7 @@ What are today's challenges when working with service meshes?
Michael:

-“I can’t claim to have worked with many implementations, and to have a good overview and wide experience. A lot of the complexity is already handled, but there is still enough to decide and implement for each solution. The solution makes for a challenging but highly interesting task. Additionally, there are a variety of different solutions from different vendors, which is excellent but it also makes it hard to know which would be the best fit for a given situation. Here, again, Meshery can be of invaluable help.” +I can’t claim to have worked with many implementations, and to have a good overview and wide experience. A lot of the complexity is already handled, but there is still enough to decide and implement for each solution. The solution makes for a challenging but highly interesting task. Additionally, there are a variety of different solutions from different vendors, which is excellent but it also makes it hard to know which would be the best fit for a given situation. Here, again, Meshery can be of invaluable help.

@@ -165,7 +167,7 @@ Service mesh implementations consist of many components, and I try to stay up to
Michael:

-“I take my role as a Meshery maintainer with its benefits and responsibilities. For one, it means to be able to give back to the community. I meet a lot of interesting and friendly people from around the globe, learning about their culture at the same time. Additionally, Open Source allows me to work on and dive into tasks as I like, making it easy to integrate the work with my existing work schedule. It also allows me to learn a lot, expanding on my understanding of service meshes, keeping up with the latest developments in the field, and also giving me the opportunity to witness first-hand how others are using them. This has a quite direct impact on my full-time role, complementing the work I do.” +I take my role as a Meshery maintainer with its benefits and responsibilities. For one, it means to be able to give back to the community. I meet a lot of interesting and friendly people from around the globe, learning about their culture at the same time. Additionally, Open Source allows me to work on and dive into tasks as I like, making it easy to integrate the work with my existing work schedule. It also allows me to learn a lot, expanding on my understanding of service meshes, keeping up with the latest developments in the field, and also giving me the opportunity to witness first-hand how others are using them. This has a quite direct impact on my full-time role, complementing the work I do.

@@ -174,10 +176,10 @@ Service mesh implementations consist of many components, and I try to stay up to
Michael:

-"A general love for software development combined with a readiness to help out newcomers and participating in the growing community is the key. +A general love for software development combined with a readiness to help out newcomers and participating in the growing community is the key.

-Come and visit, there is something for everyone, be it frontend, backend, CI/CD, website, documentation, standards, interfacing with other communities, and more. The friendly community members and the meshmates will provide support and guidance. Browse the Layer5 and Meshery websites and the repositories on GitHub, where issues suitable for newcomers are especially tagged." +Come and visit, there is something for everyone, be it frontend, backend, CI/CD, website, documentation, standards, interfacing with other communities, and more. The friendly community members and the meshmates will provide support and guidance. Browse the Layer5 and Meshery websites and the repositories on GitHub, where issues suitable for newcomers are especially tagged.

diff --git a/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/MeetTheMaintainer.style.js b/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/MeetTheMaintainer.style.js deleted file mode 100644 index ab46b4b32119..000000000000 --- a/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/MeetTheMaintainer.style.js +++ /dev/null @@ -1,43 +0,0 @@ -import styled from "styled-components"; -export const MeetTheMaintainer = styled.div` - div.intro { - word-spacing: 0.5rem; - } - div.interviewer { - margin-top: 1rem; - text-align: left; - span { - font-weight: 600; - font-style: normal; - } - } - div.interviewee { - display: flex; - flex-direction: column; - justify-content: flex-start; - color: #222; - font-style: italic; - text-align: left; - border-left: 2px solid ${(props) => props.theme.primaryLightColor}; - padding-left: 2rem; - span { - font-weight: 600; - font-style: normal; - } - } - div.note { - margin: 1rem; - padding: 2rem; - display: flex; - border: 1px solid ${(props) => props.theme.primaryLightColor}; - img { - margin-right: 3rem; - } - } - .centered-text { - padding-top: 2rem; - padding-bottom: 2rem; - font-size: 1.2rem; - font-weight: 600; - } -`; diff --git a/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/index.mdx b/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/index.mdx index d6765eb5ecf1..0c6ec1f462fd 100644 --- a/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/index.mdx +++ b/src/collections/blog/2021/2021-04-16-meet-the-maintainer-jash-patel/index.mdx @@ -9,11 +9,13 @@ category: Community tags: - Community published: true +interviewer: Ruth Ikegah +interviewee: Jash Patel --- import { BlogWrapper } from "../../Blog.style.js"; import img from "./jash-patel-layer5-maintainer.webp"; -import { MeetTheMaintainer } from "./MeetTheMaintainer.style"; +import { MeetTheMaintainer } from "../../MeetTheMaintainer.style.js"; import { Link } from "gatsby"; diff --git a/src/collections/blog/2024/07-01-meet-the-maintainer-xin-huang/post.mdx b/src/collections/blog/2024/07-01-meet-the-maintainer-xin-huang/post.mdx index a61019094967..46018c65a6f7 100644 --- a/src/collections/blog/2024/07-01-meet-the-maintainer-xin-huang/post.mdx +++ b/src/collections/blog/2024/07-01-meet-the-maintainer-xin-huang/post.mdx @@ -12,6 +12,8 @@ tags: - Open Source featured: false published: true +interviewer: Layer5 Team +interviewee: Xin Huang --- import { BlogWrapper } from "../../Blog.style.js"; @@ -37,7 +39,7 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin:

- "I’m working around Service Mesh Acceleration in Intel, and noticed the Service Mesh Performance project. So I attended the community meeting, the community is very active and welcoming and they hope for feedback and contribution from me. It’s the main reason that made me stay here and contribute continuously." + I’m working around Service Mesh Acceleration in Intel, and noticed the Service Mesh Performance project. So I attended the community meeting, the community is very active and welcoming and they hope for feedback and contribution from me. It’s the main reason that made me stay here and contribute continuously.

@@ -50,7 +52,7 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin: -

“Yes, I’ve worked with some open source projects. Layer5 community knows how to cultivate and fulfill the sprint of open source. If you are a newcomer to open source, you can get a big leg up from the Layer5 community."

+

Yes, I’ve worked with some open source projects. Layer5 community knows how to cultivate and fulfill the sprint of open source. If you are a newcomer to open source, you can get a big leg up from the Layer5 community.

@@ -63,9 +65,9 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin:

- “First, I’m working on Service Mesh Acceleration at Intel. Second, service mesh is a hot area this year, more and more people or enterprises are trying service mesh in their production." + First, I’m working on Service Mesh Acceleration at Intel. Second, service mesh is a hot area this year, more and more people or enterprises are trying service mesh in their production.

-

“Service Mesh is the bridge between developers and infrastructure, how fascinating it is to build such a thing that benefits everyone.“

+

Service Mesh is the bridge between developers and infrastructure, how fascinating it is to build such a thing that benefits everyone.

@@ -78,7 +80,7 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin:

- “I’m focusing on the SMP project, because it’s related to my working scope. I also use Meshery to manage our service mesh environment and show our effort on Service Mesh acceleration. Every project has its specific goal, I can’t tell which one is the best." + I’m focusing on the SMP project, because it’s related to my working scope. I also use Meshery to manage our service mesh environment and show our effort on Service Mesh acceleration. Every project has its specific goal, I can’t tell which one is the best.

@@ -92,7 +94,7 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin:

- "Having worked on and been a user of Meshery's performance characterization features, I'm biased. I like the `mesheryctl perf` command the most." + Having worked on and been a user of Meshery's performance characterization features, I'm biased. I like the `mesheryctl perf` command the most.

@@ -106,7 +108,7 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin:

- “Meshery has a great dream to manage all the popular service mesh projects. It's a great idea for infrastructure & platform managers who are confused with so many different projects to try and understand their differences." + Meshery has a great dream to manage all the popular service mesh projects. It's a great idea for infrastructure & platform managers who are confused with so many different projects to try and understand their differences.

@@ -120,11 +122,11 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin:

- "We have a distributed performance characterization feature upcoming in Meshery in which Nighthawk will be externalized. Meshery manages the lifecycle of Nighthawk, using Nighthawk as one of its load generators to run performance benchmarks. As Nighthawk supports an adaptive load control as a feature, Meshery can leverage this to build a custom load controller to run performance benchmarks."

+ We have a distributed performance characterization feature upcoming in Meshery in which Nighthawk will be externalized. Meshery manages the lifecycle of Nighthawk, using Nighthawk as one of its load generators to run performance benchmarks. As Nighthawk supports an adaptive load control as a feature, Meshery can leverage this to build a custom load controller to run performance benchmarks.

-

"By default, the adaptive load controller in Nighthawk runs benchmarks with different RPS values and based on the latency, it adjusts the RPS value. But, with its custom plugin ability, we can bring in our own inputs as well as metrics to measure."

+

By default, the adaptive load controller in Nighthawk runs benchmarks with different RPS values and based on the latency, it adjusts the RPS value. But, with its custom plugin ability, we can bring in our own inputs as well as metrics to measure.

-

"With the metrics from these tests, Meshery should also adjust the resiliency characteristics of the mesh automatically so as to improve these metrics and in turn improve performance. Meshery allows users to generate traffic load tests using Nighthawk. The tests are controlled and provisioned using meshery-nighthawk, a Meshery component supporting multiple load generators. This is a very powerful feature that is coming up in Meshery." +

With the metrics from these tests, Meshery should also adjust the resiliency characteristics of the mesh automatically so as to improve these metrics and in turn improve performance. Meshery allows users to generate traffic load tests using Nighthawk. The tests are controlled and provisioned using meshery-nighthawk, a Meshery component supporting multiple load generators. This is a very powerful feature that is coming up in Meshery.

@@ -134,11 +136,11 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin: -

"Yes! I think that being a maintainer requires a combination of technical expertise, community engagement, and leadership skills. Start by being a consistent contributor yourself. Demonstrate your commitment by making regular and valuable contributions to the projects. You'll need to build a strong understanding of the technologies and the codebase. In order to demonstrate your technical leadership, you'll need to show initiative, take ownership of tasks, and often do the menial work that other contributors may not want to do."

+

Yes! I think that being a maintainer requires a combination of technical expertise, community engagement, and leadership skills. Start by being a consistent contributor yourself. Demonstrate your commitment by making regular and valuable contributions to the projects. You'll need to build a strong understanding of the technologies and the codebase. In order to demonstrate your technical leadership, you'll need to show initiative, take ownership of tasks, and often do the menial work that other contributors may not want to do.

-

"One aspect of being a maintainer is actively participating in the Layer5 community, helping newcomers, and engaging in helping advance project discussions. Guiding and supporting other contributors is an expecation of a maintainer, so it's important to have a good understanding of the project and the technologies involved."

+

One aspect of being a maintainer is actively participating in the Layer5 community, helping newcomers, and engaging in helping advance project discussions. Guiding and supporting other contributors is an expecation of a maintainer, so it's important to have a good understanding of the project and the technologies involved.

-

Finally, I wholeheartedly suggest that you are not afraid to ask questions. The Layer5 community is welcoming and supportive. The existing maintainers are individuals who have given their time and demonstrated their dedication to the betterment of the projects. They are a valuable resource for you to learn from, too, so when you engage with them, be respectful of their time - be sure to have done your homework before asking questions."

+

Finally, I wholeheartedly suggest that you are not afraid to ask questions. The Layer5 community is welcoming and supportive. The existing maintainers are individuals who have given their time and demonstrated their dedication to the betterment of the projects. They are a valuable resource for you to learn from, too, so when you engage with them, be respectful of their time - be sure to have done your homework before asking questions.

@@ -146,7 +148,7 @@ import ForkLift from "../../../../assets/images/app/hero/forklift.svg";
Xin: -

"Yes, that's right. It's important to remember that the Layer5 community is a diverse group of individuals with different backgrounds, experiences, and perspectives. Remember to have fun and enjoy the process of learning, contributing, and collaborating with the community."

+

Yes, that's right. It's important to remember that the Layer5 community is a diverse group of individuals with different backgrounds, experiences, and perspectives. Remember to have fun and enjoy the process of learning, contributing, and collaborating with the community.

The Meshery project moves at an impressive pace thanks to maintainers like Xin. Be like Xin. Join the Layer5 Slack and say “hi".

diff --git a/src/collections/blog/2024/09-07-ways-to-contribute/post.mdx b/src/collections/blog/2024/09-07-ways-to-contribute/post.mdx index fbfb95627e1d..7bade1812602 100644 --- a/src/collections/blog/2024/09-07-ways-to-contribute/post.mdx +++ b/src/collections/blog/2024/09-07-ways-to-contribute/post.mdx @@ -3,8 +3,8 @@ title: Ways to Contribute at Layer5 subtitle: it's not all about the code date: 2024-09-07 author: Lee Calcote -thumbnail: ../../../../assets/images/layer5/layer5-only/svg/layer5-black.svg -darkthumbnail: ../../../../assets/images/layer5/layer5-only/svg/layer5-light-bg.svg +thumbnail: ./ways-to-contribute.jpg +darkthumbnail: ./ways-to-contribute.jpg description: The State of Open Source type: Blog category: Open Source @@ -20,7 +20,9 @@ import popularProject from "./number-one-most-popular-project.png"; -

Community members often inquired about how they can be a part of and contribute to Layer5 and its open source projects. Good news. There are many ways. The following is a list of ways depending upon the manner in which you would like to participate (any and all of these ways are encouraged).

+

The Layer5 community grows on a daily basis, which means that each day community managers, MeshMates, and other existing community members field the question of "how can I contribute to your project" any number of times everyday. The good news is that there are many what is to engage - all of which are important to the health of both the projects and the community.

+ +

Upon joining the community Slack workspace, individuals are warmly greeted and encouraged to browse the community handbook, join the weekly newcomers meeting, and to begin familiarizing our open source projects. We have heavily invest in each individual that shows up to participate as we consider their success, our success. Part of doing so is ensuring that everyone understands the variety of ways depending in which they can contribute. Any and all of the possible ways are encouraged.

### Community Engagement & Management @@ -113,4 +115,4 @@ All contributions are valuable and every skill set has a place in open source. *Every contribution, big or small, is valuable and helps strengthen the Layer5 community and its projects.* -
\ No newline at end of file + diff --git a/src/collections/blog/2024/09-07-ways-to-contribute/ways-to-contribute.jpg b/src/collections/blog/2024/09-07-ways-to-contribute/ways-to-contribute.jpg new file mode 100644 index 000000000000..7b7a80172b26 Binary files /dev/null and b/src/collections/blog/2024/09-07-ways-to-contribute/ways-to-contribute.jpg differ diff --git a/src/collections/blog/2024/09-08-meet-the-maintainer-hussaina-begum/hussaina-begum-layer5-maintainer.png b/src/collections/blog/2024/09-08-meet-the-maintainer-hussaina-begum/hussaina-begum-layer5-maintainer.png new file mode 100644 index 000000000000..cccfd3c76996 Binary files /dev/null and b/src/collections/blog/2024/09-08-meet-the-maintainer-hussaina-begum/hussaina-begum-layer5-maintainer.png differ diff --git a/src/collections/blog/2024/09-08-meet-the-maintainer-hussaina-begum/post.mdx b/src/collections/blog/2024/09-08-meet-the-maintainer-hussaina-begum/post.mdx new file mode 100644 index 000000000000..533fda9b9598 --- /dev/null +++ b/src/collections/blog/2024/09-08-meet-the-maintainer-hussaina-begum/post.mdx @@ -0,0 +1,248 @@ +--- +title: "Meet the Maintainer: Hussaina Begum" +subtitle: "An interview series with open source maintainers" +date: 2024-09-08 10:30:05 -0530 +author: Vivek Vishal +thumbnail: ./hussaina-begum-layer5-maintainer.png +darkthumbnail: ./hussaina-begum-layer5-maintainer.png +description: Meet the Maintainer series with open source maintainer, Hussaina Begum +type: Blog +category: Open Source +tags: + - Open Source +featured: false +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; +import img from "./hussaina-begum-layer5-maintainer.png"; +import { MeetTheMaintainer } from "../../MeetTheMaintainer.style.js"; +import { Link } from "gatsby"; +import ForkLift from "../../../../assets/images/app/hero/forklift.svg"; + + + + +
+

+ Continuing in our Meet the Maintainer series, we have{" "} + Hussaina Begum. Hussaina + is a maintainer of the{" "} + Meshery CTL project. In + this interview, we get to know Hussaina a little better and learn about her + journey as an open source project maintainer and with Layer5 community. +

+
+ +
+ Vivek: +

+ Hussaina, thank you for joining me today. Many people inside and outside of + the Layer5 Community have seen the effects of your contributions, but may + not know the backstory as to who Hussaina is and how you arrived at your + maintainer role. Indulge us. How did you discover the Layer5 community? What + made you stay? +

+
+ +
+ Hussaina: +

+ I wanted to contribute to Open source for a long time and finally made up + my mind to get into the world of Open Source during Hacktoberfest 2020. + Meshery was one of the projects I contributed to and it had a well defined + structure and meetings for everyone - Newcomers call, Developers call, + Websites(FrontEnd development) call, CI/CD call and community call, etc. + Also, the meshmate program where the existing Meshery maintainers help the + newest members to get started. Meshery project aligned with my networking + background and my goal towards backend development using golang. Last but + not the least, lighthearted jokes from Lee during the development call. +

+
+ +
+ Vivek: +

+ You’re a Meshery Maintainer and have been for some long time now. What does + being a Meshery maintainer mean to you? +

+
+ +
+ Hussaina: +

+ Lots of learning. Though I started out small in Meshery with a + documentation PR, Meshery community had so much knowledge to share. With + their support, I could start on mesheryctl UX improvements. I have seen many + bright engineers implementing great features in Meshery. I draw inspiration + from them and try to pay it forward by helping new members of the + community. +

+
+ +
+ Vivek: +

+ Layer5 projects has a number of active, open + source projects. You’ve been consistently contributing to a few of them. + Which one(s) are you currently focusing on? + Psst. Also, which one’s your favorite? I won’t tell. +

+
+ +
+ Hussaina: +

+ I have contributed to mesheryctl, meshkit and meshery.io projects so far, + It's hard to pick one. +

+
+ +
+ Vivek: +

What’s the coolest Meshery demo you have done/seen?

+
+ +
+ Hussaina: +

+ Meshed playground demo is awesome. I also remember the mesheyctl system + perf CLI demo I have done on the Meshey office hours from one of the Kubecon + events. Kudos to all the contributors of mesheyctl system per command + development and refactors. +

+
+ +
+ Vivek: +

+ What do you anticipate will be Meshery’s biggest announcement this year? +

+
+ +
+ Hussaina: +

Meshey project moving to Incubating status 🙂

+
+ +
+ Vivek: +

What is your favorite Meshery CLI command?

+
+ +
+ Hussaina: +

mesheryctl system start

+
+ +
+ Vivek: +

What is your hot tip for working with Meshery that others may not know?

+
+ +
+ Hussaina: +

+ Use slack effectively and leverage discuss forum, talk to Meshmates and + maintainers, they are all ears to the issues you face while starting out. +

+
+ +
+ Vivek: +

+ What are some personal goals for the next year with respect to the Meshery + and the Layer5 community? +

+
+ +
+ Hussaina: +

+ Work on the long pending system config CLI improvements and contribute to + other Meshey projects. +

+
+ +
+ Vivek: +

+ Interesting. Do expand on that: What do you think Meshery could offer in + addition to what it already does? +

+
+ +
+ Hussaina: +

Labs designed in a way that they work with local resources.

+
+ +
+ Vivek: +

+ Your most often used emoji? Your preference: movie or book? Morning person + or night owl? What have you worked on in the past six months that you’re + particularly proud of? +

+
+ +
+ Hussaina: +

+ eyes emoji. My preference is a book compared to a movie. I am a Night Owl + w.r.t. work, however, I use my early mornings for my fitness goals. I have + not been active lately, however removing dependency on CLIs in `mesheryctl + system config` would be something I would consider a good milestone item for + me. +

+
+ +
+ Vivek: +

+ The cloud native ecosystem moves quickly. Keeping up with all the + developments can be challenging. How do you stay up-to-date? +

+
+ +
+ Hussaina: +

+ I like listening to kubernetes podcasts and I follow the internal slack + channels for upstream activities at VMware. Also, attending the local KCD + events helped me understand the latest developments across various k8s + projects. Being a program committee member has given me good understanding + of developments across a specific technology area, let it be security and + identity area or the world of service meshes. +

+
+ +
+ Vivek: +

+ Do you have any advice for individuals hopeful to become Layer5 contributors + or potentially maintainers? +

+
+ +
+ Hussaina: +

+ Show up and attend the meetings which align with your expertise and areas + you would like to learn or contribute to. Make use of the Meshmates and + Meshery slack and discuss forums are pretty active and everyone is eager to + help. +

+
+ +
+ +

+ The Meshery project moves at an impressive pace thanks to maintainers like + Hussaina. Be like Hussaina. Join the{" "} + Layer5 Slack and say “hi". +

+
+ +
+
diff --git a/src/collections/blog/2024/10-09-docker-build-warning/number-one-most-popular-project.png b/src/collections/blog/2024/10-09-docker-build-warning/number-one-most-popular-project.png deleted file mode 100644 index c8ec5e02fb66..000000000000 Binary files a/src/collections/blog/2024/10-09-docker-build-warning/number-one-most-popular-project.png and /dev/null differ diff --git a/src/collections/blog/2024/10-09-docker-build-warning/post.mdx b/src/collections/blog/2024/10-09-docker-build-warning/post.mdx index a74c1062cc07..e12f720b6e2e 100644 --- a/src/collections/blog/2024/10-09-docker-build-warning/post.mdx +++ b/src/collections/blog/2024/10-09-docker-build-warning/post.mdx @@ -1,58 +1,76 @@ --- -title: "Docker Build Fails with Warning: FromAsCasing" -subtitle: "WARN: FromAsCasing: ‘as’ and ‘FROM’ keywords’ casing do not match" +title: "Docker Build Check Failures" +subtitle: "Linting Dockerfiles to ensure best practices and avoid image build failures" date: 2024-10-09 -author: Layer5 Team -thumbnail: ../../../../assets/images/docker-extension/Docker_animated.svg -darkthumbnail: ../../../../assets/images/docker-extension/Docker_animated.svg -description: "Docker build fails with warning: FromAsCasing: ‘as’ and ‘FROM’ keywords’ casing do not match. Learn how to fix this issue." +author: Lee Calcote +thumbnail: ../../../../assets/images/docker-extension/docker-extension-meshery-logo.webp +darkthumbnail: ../../../../assets/images/docker-extension/docker-extension-meshery-logo.webp +description: "Linting Dockerfiles. Docker build fails with warning: FromAsCasing: ‘as’ and ‘FROM’ keywords’ casing do not match. Learn how to fix this and other build check warnings." type: Blog category: Docker tags: - Docker featured: false -published: false +published: true +resource: true --- import { BlogWrapper } from "../../Blog.style.js"; import { Link } from "gatsby"; -import popularProject from "./number-one-most-popular-project.png"; +import { BlockquoteAlt } from "../../../../reusecore/Blockquote/Blockquote-alt-style"; +While building a Docker image for one of Layer5's open source projects, I ran into a build warning in one of the multi-stage Dockerfiles. Up to this point, while creating container images, I hadn't paid attention to a particular feature of `docker build`: build checks. I had otherwise overlooked warnings and informational notices that were lost among the fray of docker build log lines. I've stopped ignoring them, however. In this post, I'll touch upon a handful of the more common build warnings, delve into the importance of these checks, and explore how and why to address each. But, first... -## : Ensuring Best Practices and Avoiding Pitfalls + -Docker build checks are a valuable tool for validating your Dockerfile and build options against established best practices. They can help you identify potential issues early on, ensuring your images are efficient, secure, and maintainable. In this blog post, we'll delve into the importance of these checks and explore how to address some common warnings. +### Why Use Docker Build Checks? -**Why Use Docker Build Checks?** +Now, of course we're aware that `docker build` is a bread and butter command (very commonplace), however, if you're like me, you might have overlooked the `--check` flag. Think of build checks as a linter for your Dockerfile, and as it turns out, build checks are a valuable tool for validating your Dockerfile and build options (flags) against established best practices. Build checks help you identify potential issues early on, too, which I've come to appreciate. In fact, whereas am occassionally annoyed by overzealous linting rules, in general, I've turned the corner with lint checks as when you're maintaining large codebases with a couple thousand contributors, it becomes essential to enforce some uniformity and idiomatic coding. -Think of build checks as a linter for your Dockerfile. They analyze your build configuration and provide feedback on potential problems, such as: +They analyze your build configuration and provide feedback on potential problems, such as: * **Inefficiencies:** Checks can identify unnecessary layers or overly large images, helping you optimize for size and performance. * **Security risks:** They can flag potential security vulnerabilities, like using outdated base images or insecure commands. * **Maintainability issues:** Checks can highlight inconsistencies and deviations from best practices, improving the readability and maintainability of your Dockerfiles. -**Enabling Build Checks** +### Under the Hood of Build Checks -To enable build checks, simply use the `--check` flag with your `docker build` command: +Introduced in Dockerfile 1.8, build checks are integrated into the build process itself. When you invoke a build with the `--check` flag, Docker analyzes your Dockerfile and build options *before* executing any build steps. This pre-emptive analysis allows for early detection of potential issues, saving you time and resources. + +Docker employs a rule-based system to perform these checks. Each rule targets a specific aspect of your Dockerfile, such as image size, security practices, or Dockerfile syntax. These rules are continuously updated to reflect evolving best practices and address new vulnerabilities. + +As you familiarize yourself with build checks, you'll notice that they are categorized into three levels, which are pretty self-evident, but worth noting, so that you can prioritize your remediation efforts. These levels are: + +* **Errors:** These are critical issues that prevent the build from completing successfully. Errors must be resolved before you can proceed with the build. +* **Warnings:** Warnings indicate potential problems that don't halt the build but should be addressed to ensure best practices. +* **Info:** Informational messages provide additional context or suggestions for improving your Dockerfile. While not critical, acting on these messages can enhance your Dockerfile's quality. + +## Common Warnings and Remediation + +

Before we dive into some common warnings and how to address them, let's review how to run build checks on a Dockerfile.

+ +#### Running Build Checks + +To run build checks, simply use the `--check` flag with your `docker build` command: ```bash docker build --check . ``` -**Common Warnings and Remediation** - -Let's explore some frequently encountered warnings and how to address them: +Yes, quite straightforward. This command triggers build checks for the Dockerfile in the current directory. If any issues are detected, Docker will display the corresponding warnings or errors. -**1. FromAsCasing** +Now, we're ready to explore some frequently encountered warnings and how to address them. Here are some of the warnings that I've run into, what they mean, and how to fix them: -**Warning:** `WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match` +### 1. FromAsCasing -**Explanation:** This warning occurs when the `FROM` and `AS` keywords in a multi-stage build have different casing (e.g., `FROM` and `as`). While Docker allows both uppercase and lowercase, mixing casing can hinder readability. -**Remediation:** Ensure consistent casing for `FROM` and `AS` keywords throughout your Dockerfile. +- **Warning:** `WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match` +- **Explanation:** This warning occurs when the `FROM` and `AS` keywords in a multi-stage build have different casing (e.g., `FROM` and `as`). While Docker allows both uppercase and lowercase, mixing casing can hinder readability. Consistency in casing enhances readability and maintainability, making your Dockerfile easier to understand for both yourself and collaborators. +- **Remediation:** Ensure consistent casing for `FROM` and `AS` keywords throughout your Dockerfile. -```dockerfile +```docker # Incorrect FROM ubuntu:latest as builder @@ -60,13 +78,11 @@ FROM ubuntu:latest as builder FROM ubuntu:latest AS builder ``` -**2. LatestType** - -**Warning:** `WARN: LatestType: 'latest' tag used for base image` +### 2. LatestType -**Explanation:** Using the `latest` tag can lead to unpredictable builds since the base image may change unexpectedly. - -**Remediation:** Specify a specific tag for your base image to ensure consistency and reproducibility. +* **Warning:** `WARN: LatestType: 'latest' tag used for base image` +* **Explanation:** Using the `latest` tag can lead to unpredictable builds since the base image may change unexpectedly. Pinning to specific tags ensures reproducible builds, preventing unexpected behavior due to changes in the base image. This is crucial for production environments where stability is paramount. +* **Remediation:** Specify a specific tag for your base image to ensure consistency and reproducibility. ```dockerfile # Incorrect @@ -76,13 +92,11 @@ FROM ubuntu:latest FROM ubuntu:22.04 ``` -**3. AptGetNoInstallRecommends** - -**Warning:** `WARN: AptGetNoInstallRecommends: 'apt-get install' with no ' --no-install-recommends' flag` - -**Explanation:** Installing recommended packages can increase image size and potentially introduce unnecessary dependencies. +### 3. AptGetNoInstallRecommends -**Remediation:** Use the `--no-install-recommends` flag with `apt-get install` to avoid installing recommended packages. +* **Warning:** `WARN: AptGetNoInstallRecommends: 'apt-get install' with no ' --no-install-recommends' flag` +* **Explanation:** Installing recommended packages can increase image size and potentially introduce unnecessary dependencies. Recommended packages often include extra dependencies that bloat your image size. This can lead to increased storage costs, slower downloads, and potentially longer build times. +* **Remediation:** Use the `--no-install-recommends` flag with `apt-get install` to avoid installing recommended packages. ```dockerfile # Incorrect @@ -92,13 +106,11 @@ RUN apt-get update && apt-get install -y package-name RUN apt-get update && apt-get install -y --no-install-recommends package-name ``` -**4. RunCommandWithNoExecForm** - -**Warning:** `WARN: RunCommandWithNoExecForm: 'RUN' command with no 'exec' form` - -**Explanation:** Using the exec form (`RUN ["executable", "param1", "param2"]`) for RUN commands is generally more efficient and avoids potential issues with shell interpretation. +### 4. RunCommandWithNoExecForm -**Remediation:** Use the exec form for `RUN` commands whenever possible. +* **Warning:** `WARN: RunCommandWithNoExecForm: 'RUN' command with no 'exec' form` +* **Explanation:** Using the exec form (`RUN ["executable", "param1", "param2"]`) for RUN commands is generally more efficient and avoids potential issues with shell interpretation. The exec form provides better performance and avoids potential shell injection vulnerabilities by directly executing the command without shell processing. +* **Remediation:** Use the exec form for `RUN` commands whenever possible. ```dockerfile # Incorrect @@ -109,13 +121,11 @@ RUN ["apt-get", "update"] RUN ["apt-get", "install", "-y", "--no-install-recommends", "package-name"] ``` -**5. RedunantAptUpdate** +### 5. RedunantAptUpdate -**Warning:** `WARN: RedundantAptUpdate: 'apt-get update' found in multiple RUN instructions` - -**Explanation:** Running `apt-get update` multiple times within a Dockerfile is inefficient. - -**Remediation:** Combine `apt-get update` with the subsequent `apt-get install` command in a single `RUN` instruction. +* **Warning:** `WARN: RedundantAptUpdate: 'apt-get update' found in multiple RUN instructions` +* **Explanation:** Running `apt-get update` multiple times within a Dockerfile is inefficient. Each `apt-get update` fetches package information from repositories. Repeating this unnecessarily consumes bandwidth and increases build time. +* **Remediation:** Combine `apt-get update` with the subsequent `apt-get install` command in a single `RUN` instruction. ```dockerfile # Incorrect @@ -126,9 +136,21 @@ RUN apt-get install -y package-name RUN apt-get update && apt-get install -y package-name ``` -**Conclusion** +These are just the checks that I ran into. See the full list of available checks by running `docker build --help` or visiting the [official documentation](https://docs.docker.com/reference/build-checks/). + +## Beyond the Build Check Basics + +Now, that you've gotten started with Dockerfile optimatization, you can further customize build checks to suit your needs. Know that you're not limited to just enabling or disabling all checks, but that Docker offers granular control, allowing you to: + +* **Skip specific checks:** If a particular check isn't relevant to your use case, you can skip it using the `--check=rule1,rule2,!rule3` syntax. This enables `rule1` and `rule2` while skipping `rule3`. +* **Fail on warnings:** By default, warnings don't halt the build process. However, you can enforce stricter compliance by using the `--fail-on=warn` flag, ensuring any warning triggers a build failure. +* **Explore experimental checks:** Push the boundaries with experimental checks by using the `--check=experimental` flag. These checks offer a glimpse into future best practices and can help you stay ahead of the curve. -Docker build checks are a powerful tool for improving the quality of your Dockerfiles. By enabling checks and addressing the warnings, you can ensure your images are optimized, secure, and maintainable. Regularly review the Docker documentation for the latest best practices and updates to build checks. +Build checks are not just about fixing warnings; they are about proactively adopting best practices. Up your Dockerfile game with these additional tips: +* **Embrace multi-stage builds:** Leverage multi-stage builds to create smaller, more efficient images by separating build-time dependencies from runtime essentials. +* **Utilize a `.dockerignore` file:** Exclude unnecessary files from your build context to reduce image size and speed up builds. +* **Order your instructions strategically:** Place frequently changing instructions towards the end of your Dockerfile to take advantage of Docker's layer caching. +By understanding the mechanics of build checks and actively addressing the warnings, you can unlock the full potential of Docker and build robust, efficient, and secure containerized applications.
\ No newline at end of file diff --git a/src/collections/blog/Blog.style.js b/src/collections/blog/Blog.style.js index fbba9ee0edda..0a47ce5a84d0 100644 --- a/src/collections/blog/Blog.style.js +++ b/src/collections/blog/Blog.style.js @@ -41,8 +41,9 @@ export const BlogWrapper = styled.div` span { font-style: normal; } - h3 { + h2,h3,h4 { margin-bottom: .5rem; + margin-top: .5rem; } table, td { text-align: center; diff --git a/src/collections/blog/MeetTheMaintainer.style.js b/src/collections/blog/MeetTheMaintainer.style.js index 3348309ad415..4dcff956427f 100644 --- a/src/collections/blog/MeetTheMaintainer.style.js +++ b/src/collections/blog/MeetTheMaintainer.style.js @@ -24,6 +24,12 @@ export const MeetTheMaintainer = styled.div` font-style: normal; } } + div.interviewee p::before{ + content:'“' + } + div.interviewee p::after{ + content:'”' + } div.note { margin: 1rem; padding: 2rem; diff --git a/src/collections/integrations/aws/icons/components/aws-application-cost-profiler/icons/color/aws-application-cost-profiler-color.svg b/src/collections/integrations/aws/icons/components/aws-application-cost-profiler/icons/color/aws-application-cost-profiler-color.svg index 99c337b628b6..3c579b472cb2 100644 --- a/src/collections/integrations/aws/icons/components/aws-application-cost-profiler/icons/color/aws-application-cost-profiler-color.svg +++ b/src/collections/integrations/aws/icons/components/aws-application-cost-profiler/icons/color/aws-application-cost-profiler-color.svg @@ -10,15 +10,3 @@ - - - - - - - - - - - - diff --git a/src/collections/integrations/aws/icons/components/aws-game-lift/icons/color/aws-game-lift-color.svg b/src/collections/integrations/aws/icons/components/aws-game-lift/icons/color/aws-game-lift-color.svg index 4ce5c0d18558..15c4aeb75d63 100644 --- a/src/collections/integrations/aws/icons/components/aws-game-lift/icons/color/aws-game-lift-color.svg +++ b/src/collections/integrations/aws/icons/components/aws-game-lift/icons/color/aws-game-lift-color.svg @@ -9,4 +9,4 @@ - + \ No newline at end of file diff --git a/src/collections/integrations/cluster-api-provider-openstack/icons/components/open-stack-server/icons/color/open-stack-server-color.svg b/src/collections/integrations/cluster-api-provider-openstack/icons/components/open-stack-server/icons/color/open-stack-server-color.svg new file mode 100644 index 000000000000..67a1c4a07f6d --- /dev/null +++ b/src/collections/integrations/cluster-api-provider-openstack/icons/components/open-stack-server/icons/color/open-stack-server-color.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/cluster-api-provider-openstack/icons/components/open-stack-server/icons/white/open-stack-server-white.svg b/src/collections/integrations/cluster-api-provider-openstack/icons/components/open-stack-server/icons/white/open-stack-server-white.svg new file mode 100644 index 000000000000..4350d73fa752 --- /dev/null +++ b/src/collections/integrations/cluster-api-provider-openstack/icons/components/open-stack-server/icons/white/open-stack-server-white.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/datadog-operator/icons/components/datadog-dashboard/icons/color/datadog-dashboard-color.svg b/src/collections/integrations/datadog-operator/icons/components/datadog-dashboard/icons/color/datadog-dashboard-color.svg new file mode 100644 index 000000000000..d98edfe3ef53 --- /dev/null +++ b/src/collections/integrations/datadog-operator/icons/components/datadog-dashboard/icons/color/datadog-dashboard-color.svg @@ -0,0 +1,39 @@ + + + + \ No newline at end of file diff --git a/src/collections/integrations/datadog-operator/icons/components/datadog-dashboard/icons/white/datadog-dashboard-white.svg b/src/collections/integrations/datadog-operator/icons/components/datadog-dashboard/icons/white/datadog-dashboard-white.svg new file mode 100644 index 000000000000..3fbf0c314840 --- /dev/null +++ b/src/collections/integrations/datadog-operator/icons/components/datadog-dashboard/icons/white/datadog-dashboard-white.svg @@ -0,0 +1,37 @@ + + + + diff --git a/src/collections/integrations/datadog-operator/index.mdx b/src/collections/integrations/datadog-operator/index.mdx index ea5679ccf4a7..ecaf18a6d4ac 100644 --- a/src/collections/integrations/datadog-operator/index.mdx +++ b/src/collections/integrations/datadog-operator/index.mdx @@ -62,6 +62,12 @@ components: [ "colorIcon": "icons/components/extended-daemonset-setting/icons/color/extended-daemonset-setting-color.svg", "whiteIcon": "icons/components/extended-daemonset-setting/icons/white/extended-daemonset-setting-white.svg", "description": "", +}, +{ +"name": "datadog-dashboard", +"colorIcon": "icons/components/datadog-dashboard/icons/color/datadog-dashboard-color.svg", +"whiteIcon": "icons/components/datadog-dashboard/icons/white/datadog-dashboard-white.svg", +"description": "", }] featureList: [ "Seamlessly aggregates metrics and events across the full devops stack.", diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-route/icons/color/arango-route-color.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-route/icons/color/arango-route-color.svg new file mode 100644 index 000000000000..c18fbe907a02 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-route/icons/color/arango-route-color.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-route/icons/white/arango-route-white.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-route/icons/white/arango-route-white.svg new file mode 100644 index 000000000000..aa9e84b87c10 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-route/icons/white/arango-route-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-batch-job/icons/color/arango-scheduler-batch-job-color.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-batch-job/icons/color/arango-scheduler-batch-job-color.svg new file mode 100644 index 000000000000..c18fbe907a02 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-batch-job/icons/color/arango-scheduler-batch-job-color.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-batch-job/icons/white/arango-scheduler-batch-job-white.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-batch-job/icons/white/arango-scheduler-batch-job-white.svg new file mode 100644 index 000000000000..aa9e84b87c10 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-batch-job/icons/white/arango-scheduler-batch-job-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-cron-job/icons/color/arango-scheduler-cron-job-color.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-cron-job/icons/color/arango-scheduler-cron-job-color.svg new file mode 100644 index 000000000000..c18fbe907a02 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-cron-job/icons/color/arango-scheduler-cron-job-color.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-cron-job/icons/white/arango-scheduler-cron-job-white.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-cron-job/icons/white/arango-scheduler-cron-job-white.svg new file mode 100644 index 000000000000..aa9e84b87c10 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-cron-job/icons/white/arango-scheduler-cron-job-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-deployment/icons/color/arango-scheduler-deployment-color.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-deployment/icons/color/arango-scheduler-deployment-color.svg new file mode 100644 index 000000000000..c18fbe907a02 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-deployment/icons/color/arango-scheduler-deployment-color.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-deployment/icons/white/arango-scheduler-deployment-white.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-deployment/icons/white/arango-scheduler-deployment-white.svg new file mode 100644 index 000000000000..aa9e84b87c10 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-deployment/icons/white/arango-scheduler-deployment-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-pod/icons/color/arango-scheduler-pod-color.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-pod/icons/color/arango-scheduler-pod-color.svg new file mode 100644 index 000000000000..c18fbe907a02 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-pod/icons/color/arango-scheduler-pod-color.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-pod/icons/white/arango-scheduler-pod-white.svg b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-pod/icons/white/arango-scheduler-pod-white.svg new file mode 100644 index 000000000000..aa9e84b87c10 --- /dev/null +++ b/src/collections/integrations/kube-arangodb/icons/components/arango-scheduler-pod/icons/white/arango-scheduler-pod-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-arangodb/index.mdx b/src/collections/integrations/kube-arangodb/index.mdx index ac4deba8f428..04d629d8e405 100644 --- a/src/collections/integrations/kube-arangodb/index.mdx +++ b/src/collections/integrations/kube-arangodb/index.mdx @@ -92,6 +92,36 @@ components: [ "colorIcon": "icons/components/arango-profile/icons/color/arango-profile-color.svg", "whiteIcon": "icons/components/arango-profile/icons/white/arango-profile-white.svg", "description": "", +}, +{ +"name": "arango-route", +"colorIcon": "icons/components/arango-route/icons/color/arango-route-color.svg", +"whiteIcon": "icons/components/arango-route/icons/white/arango-route-white.svg", +"description": "", +}, +{ +"name": "arango-scheduler-batch-job", +"colorIcon": "icons/components/arango-scheduler-batch-job/icons/color/arango-scheduler-batch-job-color.svg", +"whiteIcon": "icons/components/arango-scheduler-batch-job/icons/white/arango-scheduler-batch-job-white.svg", +"description": "", +}, +{ +"name": "arango-scheduler-cron-job", +"colorIcon": "icons/components/arango-scheduler-cron-job/icons/color/arango-scheduler-cron-job-color.svg", +"whiteIcon": "icons/components/arango-scheduler-cron-job/icons/white/arango-scheduler-cron-job-white.svg", +"description": "", +}, +{ +"name": "arango-scheduler-deployment", +"colorIcon": "icons/components/arango-scheduler-deployment/icons/color/arango-scheduler-deployment-color.svg", +"whiteIcon": "icons/components/arango-scheduler-deployment/icons/white/arango-scheduler-deployment-white.svg", +"description": "", +}, +{ +"name": "arango-scheduler-pod", +"colorIcon": "icons/components/arango-scheduler-pod/icons/color/arango-scheduler-pod-color.svg", +"whiteIcon": "icons/components/arango-scheduler-pod/icons/white/arango-scheduler-pod-white.svg", +"description": "", }] featureList: [ "Automated deployment and management of ArangoDB on Kubernetes", diff --git a/src/collections/integrations/kube-ui-server/icons/components/cluster-profile/icons/color/cluster-profile-color.svg b/src/collections/integrations/kube-ui-server/icons/components/cluster-profile/icons/color/cluster-profile-color.svg new file mode 100644 index 000000000000..b96151ed1c2c --- /dev/null +++ b/src/collections/integrations/kube-ui-server/icons/components/cluster-profile/icons/color/cluster-profile-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-ui-server/icons/components/cluster-profile/icons/white/cluster-profile-white.svg b/src/collections/integrations/kube-ui-server/icons/components/cluster-profile/icons/white/cluster-profile-white.svg new file mode 100644 index 000000000000..c506b44faa1a --- /dev/null +++ b/src/collections/integrations/kube-ui-server/icons/components/cluster-profile/icons/white/cluster-profile-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/collections/integrations/kube-ui-server/index.mdx b/src/collections/integrations/kube-ui-server/index.mdx index 8b959be8a7a7..6ac76f97e6a5 100644 --- a/src/collections/integrations/kube-ui-server/index.mdx +++ b/src/collections/integrations/kube-ui-server/index.mdx @@ -74,6 +74,12 @@ components: [ "colorIcon": "icons/components/service-monitor/icons/color/service-monitor-color.svg", "whiteIcon": "icons/components/service-monitor/icons/white/service-monitor-white.svg", "description": "", +}, +{ +"name": "cluster-profile", +"colorIcon": "icons/components/cluster-profile/icons/color/cluster-profile-color.svg", +"whiteIcon": "icons/components/cluster-profile/icons/white/cluster-profile-white.svg", +"description": "", }] featureList: [ "WhoAmI service returns the user info of the user making the api call.", diff --git a/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/color/persistent-volume-claim-color.svg b/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/color/persistent-volume-claim-color.svg index 2bae347ed22f..557585d126fb 100644 --- a/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/color/persistent-volume-claim-color.svg +++ b/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/color/persistent-volume-claim-color.svg @@ -1,3 +1,3 @@ - + diff --git a/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/white/persistent-volume-claim-white.svg b/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/white/persistent-volume-claim-white.svg index 7b881f68e6a2..17d143c09de3 100644 --- a/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/white/persistent-volume-claim-white.svg +++ b/src/collections/integrations/kubernetes/icons/components/persistent-volume-claim/icons/white/persistent-volume-claim-white.svg @@ -1,3 +1,3 @@ - + diff --git a/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/color/persistent-volume-color.svg b/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/color/persistent-volume-color.svg index 557585d126fb..78f2447254e4 100644 --- a/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/color/persistent-volume-color.svg +++ b/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/color/persistent-volume-color.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/white/persistent-volume-white.svg b/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/white/persistent-volume-white.svg index 17d143c09de3..2ed4db357583 100644 --- a/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/white/persistent-volume-white.svg +++ b/src/collections/integrations/kubernetes/icons/components/persistent-volume/icons/white/persistent-volume-white.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/collections/integrations/kubevela/icons/components/package/icons/color/package-color.svg b/src/collections/integrations/kubevela/icons/components/package/icons/color/package-color.svg new file mode 100644 index 000000000000..b7287f9a3320 --- /dev/null +++ b/src/collections/integrations/kubevela/icons/components/package/icons/color/package-color.svg @@ -0,0 +1 @@ +KubeVela \ No newline at end of file diff --git a/src/collections/integrations/kubevela/icons/components/package/icons/white/package-white.svg b/src/collections/integrations/kubevela/icons/components/package/icons/white/package-white.svg new file mode 100644 index 000000000000..b2500aba4f7f --- /dev/null +++ b/src/collections/integrations/kubevela/icons/components/package/icons/white/package-white.svg @@ -0,0 +1 @@ +KubeVela \ No newline at end of file diff --git a/src/collections/integrations/kubevela/index.mdx b/src/collections/integrations/kubevela/index.mdx index 8c49bc1d16ef..700db45c6a34 100644 --- a/src/collections/integrations/kubevela/index.mdx +++ b/src/collections/integrations/kubevela/index.mdx @@ -74,6 +74,12 @@ components: [ "colorIcon": "icons/components/workload-definition/icons/color/workload-definition-color.svg", "whiteIcon": "icons/components/workload-definition/icons/white/workload-definition-white.svg", "description": "", +}, +{ +"name": "package", +"colorIcon": "icons/components/package/icons/color/package-color.svg", +"whiteIcon": "icons/components/package/icons/white/package-white.svg", +"description": "", }] featureList: [ "Application-centric approach", diff --git a/src/collections/integrations/meshery-core/icons/components/section/icons/color/section-color.svg b/src/collections/integrations/meshery-core/icons/components/section/icons/color/section-color.svg index f6fc58fb2ef5..81f9276710cf 100644 --- a/src/collections/integrations/meshery-core/icons/components/section/icons/color/section-color.svg +++ b/src/collections/integrations/meshery-core/icons/components/section/icons/color/section-color.svg @@ -1,3 +1,4 @@ - - + + + \ No newline at end of file diff --git a/src/collections/integrations/meshery-core/icons/components/section/icons/white/section-white.svg b/src/collections/integrations/meshery-core/icons/components/section/icons/white/section-white.svg index 7d355f5221fc..90f4e0ddaf26 100644 --- a/src/collections/integrations/meshery-core/icons/components/section/icons/white/section-white.svg +++ b/src/collections/integrations/meshery-core/icons/components/section/icons/white/section-white.svg @@ -1,3 +1,4 @@ - - + + + \ No newline at end of file diff --git a/src/collections/members/Rudraksh Tyagi/index.mdx b/src/collections/members/Rudraksh Tyagi/index.mdx deleted file mode 100644 index 06c57c37cace..000000000000 --- a/src/collections/members/Rudraksh Tyagi/index.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: Rudraksh Tyagi -position: Software Engineer Intern -image_path: ./rudraksh-tyagi.webp -github: dragon-slayer875 -twitter: Rudrakshtyagi11 -linkedin: rudrakshtyagi875 -layer5: ceb1505b-7d0d-4f72-b2ac-89e66b85bb2f -location: Ghaziabad, India -bio: In pursuit of being a master of all trades -status: Inactive -published: true ---- diff --git a/src/collections/members/Rudraksh Tyagi/rudraksh-tyagi.webp b/src/collections/members/Rudraksh Tyagi/rudraksh-tyagi.webp deleted file mode 100644 index ac4408baf5b1..000000000000 Binary files a/src/collections/members/Rudraksh Tyagi/rudraksh-tyagi.webp and /dev/null differ diff --git a/src/collections/members/aabid-sofi/index.mdx b/src/collections/members/aabid-sofi/index.mdx index dd09eb9a5273..291de40c076d 100644 --- a/src/collections/members/aabid-sofi/index.mdx +++ b/src/collections/members/aabid-sofi/index.mdx @@ -1,6 +1,6 @@ --- name: Aabid Sofi -position: Contributor +position: Maintainer image_path: ./aabid-sofi.webp github: aabidsofi19 twitter: codingaabid @@ -12,4 +12,5 @@ badges: - kanvas status: Active published: true +maintainer: yes --- diff --git a/src/collections/members/aadhitya-amarendiran/index.mdx b/src/collections/members/aadhitya-amarendiran/index.mdx index 4e5f3abf87c3..b904492aafcf 100644 --- a/src/collections/members/aadhitya-amarendiran/index.mdx +++ b/src/collections/members/aadhitya-amarendiran/index.mdx @@ -1,6 +1,6 @@ --- name: Aadhitya Amarendiran -position: Contributor +position: Maintainer image_path: ./aadhitya-amarendiran.jpeg github: alphaX86 twitter: KryoX64 @@ -13,5 +13,6 @@ badges: - meshery - docs status: Active +maintainer: yes published: true --- diff --git a/src/collections/members/antonette-caldwell/index.mdx b/src/collections/members/antonette-caldwell/index.mdx index 64eec937fe34..243c95f41402 100644 --- a/src/collections/members/antonette-caldwell/index.mdx +++ b/src/collections/members/antonette-caldwell/index.mdx @@ -14,5 +14,6 @@ badges: - meshery - meshery-operator status: Active +maintainer: yes published: true --- diff --git a/src/collections/members/eti-Ijeoma/index.mdx b/src/collections/members/eti-Ijeoma/index.mdx index 163b9796baae..c9f81df4ce32 100644 --- a/src/collections/members/eti-Ijeoma/index.mdx +++ b/src/collections/members/eti-Ijeoma/index.mdx @@ -9,6 +9,6 @@ layer5: 551da661-8632-415f-b69f-ecb298b88575 bio: I’m a Software Engineer, who loves contributing to open source projects and simplifying complex technical concepts. As a Layer5 intern, I am active in the CNCF community and passionate about sharing knowledge. badges: - meshery -status: Active +status: Inactive published: true --- diff --git a/src/collections/members/mario-arriaga/index.mdx b/src/collections/members/mario-arriaga/index.mdx index 144491cc1ebe..27914f0e32b6 100644 --- a/src/collections/members/mario-arriaga/index.mdx +++ b/src/collections/members/mario-arriaga/index.mdx @@ -12,4 +12,5 @@ status: Active badges: - meshery published: true +maintainer: yes --- diff --git a/src/collections/members/matthieu-ervin/index.mdx b/src/collections/members/matthieu-ervin/index.mdx index 5555a9a7e3a5..db93637b031e 100644 --- a/src/collections/members/matthieu-ervin/index.mdx +++ b/src/collections/members/matthieu-ervin/index.mdx @@ -1,6 +1,6 @@ --- name: Matthieu EVRIN -position: Contributor +position: Maintainer image_path: ./Matthieu-Evrin.webp github: lekaf974 twitter: mevrin @@ -8,6 +8,9 @@ linkedin: matthieu-evrin layer5: e4a0ec88-35c6-4976-9715-f3d0f8ff029e location: Quebec, Canada bio: Enthusiastic technology lover mainly on opensource technology mainly on Kubernetes and it ecosystem. Always wanted to contribute to open-source but id not know how and where to start until my first contribution for Meshery. I have a background in several domains related to computer science (networking, linux system admin, java developer, database administrator) and became a Platform Engineer since a while now. I like coding mostly in the backend and in automation.I am always wanting to learn and share with others so you don't hesitate to connect with me on social media. +badges: + - meshery status: Active +maintainer: yes published: true --- diff --git a/src/collections/members/vivek-vishal/index.mdx b/src/collections/members/vivek-vishal/index.mdx index d658fa13f5fb..bd9bf5b019cc 100644 --- a/src/collections/members/vivek-vishal/index.mdx +++ b/src/collections/members/vivek-vishal/index.mdx @@ -1,6 +1,6 @@ --- name: Vivek Vishal -position: Contributor +position: Maintainer image_path: ./vishal.jpeg github: vishalvivekm twitter: vishalvivekm @@ -13,5 +13,6 @@ badges: - community - docs community_manager: yes +maintainer: yes published: true --- diff --git a/src/collections/members/xin-huang/index.mdx b/src/collections/members/xin-huang/index.mdx index b9cd43f4b6bb..d7efa4af2b3c 100644 --- a/src/collections/members/xin-huang/index.mdx +++ b/src/collections/members/xin-huang/index.mdx @@ -14,4 +14,5 @@ badges: - smp - nighthawk - meshery +maintainer: yes --- diff --git a/src/collections/members/yash-sharma/index.mdx b/src/collections/members/yash-sharma/index.mdx index 38a561aa0056..eaeca4056ce6 100644 --- a/src/collections/members/yash-sharma/index.mdx +++ b/src/collections/members/yash-sharma/index.mdx @@ -1,6 +1,6 @@ --- name: Yash Sharma -position: Software Engineer Intern +position: Maintainer image_path: ./yash-sharma.webp github: Yashsharma1911 twitter: yashsharma_f @@ -14,5 +14,6 @@ badges: - kanvas status: Active meshmate: yes +maintainer: yes published: true --- diff --git a/src/components/AdventuresVol/index.js b/src/components/AdventuresVol/index.js index 80c53d338105..468ccd6c6b68 100644 --- a/src/components/AdventuresVol/index.js +++ b/src/components/AdventuresVol/index.js @@ -13,9 +13,13 @@ const AdventuresVol = ({ title, description, to, image }) => {

{description}

- + {to && ( + + )}
diff --git a/src/components/HandbookCard/index.js b/src/components/HandbookCard/index.js index 886f42121295..cc6cb8c3c64b 100644 --- a/src/components/HandbookCard/index.js +++ b/src/components/HandbookCard/index.js @@ -13,9 +13,13 @@ const HandbookCard = ({ title, description, to }) => {

{description}

-
- Read More -
+ {to && ( + + )}
diff --git a/src/components/SistentNavigation/content.js b/src/components/SistentNavigation/content.js index 51f8f57618ae..5ca0281ae851 100644 --- a/src/components/SistentNavigation/content.js +++ b/src/components/SistentNavigation/content.js @@ -43,4 +43,19 @@ export const content = [ link: "/projects/sistent/components/text-input/code", text: "Text Input", }, + { + id: 15, + link: "/projects/sistent/components/paper", + text: "Paper", + }, + { + id: 16, + link: "/projects/sistent/components/paper/guidance", + text: "Paper", + }, + { + id: 17, + link: "/projects/sistent/components/paper/code", + text: "Paper", + }, ]; diff --git a/src/components/layout.js b/src/components/layout.js index 475c1e820836..2b2fe9e5d8a6 100644 --- a/src/components/layout.js +++ b/src/components/layout.js @@ -12,7 +12,7 @@ import PropTypes from "prop-types"; import ScrollToTopBtn from "./Scrolltotop-button"; import Navigation from "../sections/General/Navigation"; import Footer from "../sections/General/Footer"; -import TopPromotionalBanner from "./TopPromotionalBanner"; +// import TopPromotionalBanner from "./TopPromotionalBanner"; import { GlobalStyle } from "../sections/app.style"; const Layout = ({ children }) => { @@ -20,7 +20,7 @@ const Layout = ({ children }) => { return ( <> - + {/* */} {children} diff --git a/src/pages/projects/sistent/components/paper/code.js b/src/pages/projects/sistent/components/paper/code.js new file mode 100644 index 000000000000..aebd216c36dc --- /dev/null +++ b/src/pages/projects/sistent/components/paper/code.js @@ -0,0 +1,8 @@ +import React from "react"; +import PaperCode from "../../../../../sections/Projects/Sistent/components/paper/code"; + +const PaperCodePage = () => { + return ; +}; + +export default PaperCodePage; \ No newline at end of file diff --git a/src/pages/projects/sistent/components/paper/guidance.js b/src/pages/projects/sistent/components/paper/guidance.js new file mode 100644 index 000000000000..a0ae573e7c1d --- /dev/null +++ b/src/pages/projects/sistent/components/paper/guidance.js @@ -0,0 +1,8 @@ +import React from "react"; +import PaperGuidance from "../../../../../sections/Projects/Sistent/components/paper/guidance"; + +const PaperGuidancePage = () => { + return ; +}; + +export default PaperGuidancePage; diff --git a/src/pages/projects/sistent/components/paper/index.js b/src/pages/projects/sistent/components/paper/index.js new file mode 100644 index 000000000000..cac37c7bd2c0 --- /dev/null +++ b/src/pages/projects/sistent/components/paper/index.js @@ -0,0 +1,9 @@ +import React from "react"; +import SistentPaper from "../../../../../sections/Projects/Sistent/components/paper"; + + +const SistentPaperPage = () => { + return ; +}; + +export default SistentPaperPage; \ No newline at end of file diff --git a/src/sections/Blog/Blog-single/author.js b/src/sections/Blog/Blog-single/author.js index 0c3b28b01923..027422dd0b07 100644 --- a/src/sections/Blog/Blog-single/author.js +++ b/src/sections/Blog/Blog-single/author.js @@ -19,7 +19,7 @@ const AboutTheAuthor = (props) => {

About the Author

- + {authorInformation.frontmatter?.name}
diff --git a/src/sections/Blog/Blog-single/index.js b/src/sections/Blog/Blog-single/index.js index ccf9d8c30aba..b68b4f451e85 100644 --- a/src/sections/Blog/Blog-single/index.js +++ b/src/sections/Blog/Blog-single/index.js @@ -73,6 +73,9 @@ const BlogSingle = ({ data }) => { publicURL } } + fields { + slug + } } } diff --git a/src/sections/Community/Handbook/repo-data.js b/src/sections/Community/Handbook/repo-data.js index 65709eb5ecdb..e411834aefd5 100644 --- a/src/sections/Community/Handbook/repo-data.js +++ b/src/sections/Community/Handbook/repo-data.js @@ -19,6 +19,7 @@ import appmeshLogo from "../../../assets/images/service-mesh-icons/aws-app-mesh. import ciliumLogo from "../../../assets/images/service-mesh-icons/cilium.svg"; import wasm from "../../../assets/images/webassembly/webssembly_icon.svg"; import recognitionLogo from "../../../assets/images/recognition-program/recognition-program.png"; +import kanvasLogo from "../../../assets/images/kanvas-snapshot/kanvas-snapshot.svg"; export const repo_data = [ { @@ -168,7 +169,6 @@ export const repo_data = [ link: [""], repository: "https://github.com/layer5io/docs", }, - ], }, @@ -311,6 +311,17 @@ export const repo_data = [ // language: "Golang", // repository: "https://github.com/layer5io/meshmonkey", // }, + { + project: "Kanvas Snapshot", + image: kanvasLogo, + site: "https://layer5.io/solutions/gitops/snapshot", + language: "GitHub Actions", + maintainers_name: ["Vacant"], + link: [""], + description: + "Generates visual snapshots of infrastructure as code (e.g., Kubernetes manifests, Helm charts) and delivers them to pull requests for automated review.", + repository: "https://github.com/layer5labs/kanvas-snapshot", + }, ], }, diff --git a/src/sections/Community/Web-based-from/index.js b/src/sections/Community/Web-based-from/index.js index 8148cfb03eab..bdbc9c3b7d74 100644 --- a/src/sections/Community/Web-based-from/index.js +++ b/src/sections/Community/Web-based-from/index.js @@ -178,6 +178,7 @@ const WebBasedForm = () => {

diff --git a/src/sections/Projects/Sistent/components/index.js b/src/sections/Projects/Sistent/components/index.js index 8bb294655b0f..d04c1db7cb27 100644 --- a/src/sections/Projects/Sistent/components/index.js +++ b/src/sections/Projects/Sistent/components/index.js @@ -30,6 +30,13 @@ const componentsData = [ "A text input is made up of multiple elements that combine to form a component that helps users to read, write, and edit text in an interface.", url: "/projects/sistent/components/modal", }, + { + id: 4, + name: "Paper", + description: + "The Paper component offers an elevated surface with shadow effects, following Material Design’s elevation system.", + url: "/projects/sistent/components/paper", + }, ]; const SistentComponents = () => { diff --git a/src/sections/Projects/Sistent/components/paper/code.js b/src/sections/Projects/Sistent/components/paper/code.js new file mode 100644 index 000000000000..2d8c254de522 --- /dev/null +++ b/src/sections/Projects/Sistent/components/paper/code.js @@ -0,0 +1,203 @@ +import React from "react"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; +import TabButton from "../../../../../reusecore/Button"; +import { SistentLayout } from "../../sistent-layout"; +import { SistentThemeProvider, Paper } from "@layer5/sistent"; +import { useStyledDarkMode } from "../../../../../theme/app/useStyledDarkMode"; +import { CodeBlock } from "../button/code-block"; + +const codes = [ + ` + + Default Paper with Elevation 1 + + `, + ` + + Elevation 0 (No shadow) + + + Elevation 3 + + + Elevation 8 + + `, + ` + + Elevation Variant (Default) + + + Outlined Variant (No shadow) + + `, + ` + + Rounded Corners (Default) + + + Square Corners + + `, +]; +const PaperCode = () => { + const location = useLocation(); + const { isDark } = useStyledDarkMode(); + + return ( + +
+ +

Paper

+
+

+ The Paper component provides an elevated surface for displaying + content. It mimics the behavior of real-world surfaces with shadow + effects, supporting Material Design's elevation system. +

+ +
+ navigate("/projects/sistent/components/paper")} + title="Overview" + /> + + navigate("/projects/sistent/components/paper/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/components/paper/code")} + title="Code" + /> +
+
+ +

Basic Example

+
+

+ Here’s a simple example of a Paper component with default elevation. + This creates a surface with a subtle shadow. +

+
+
+ + + Default Paper with Elevation 1 + + +
+ +
+ + +

Elevation Example

+
+

+ The elevation prop controls the shadow depth. Use + values from 0 to 24 to create varying levels of elevation: +

+
+
+ + + Elevation 0 (No shadow) + + + Elevation 3 + + + Elevation 8 + + +
+ +
+ +

Variant Example

+
+

+ The Paper component supports two variants: elevation{" "} + (default) and outlined. The outlined variant removes + shadows and adds a border instead: +

+
+
+ + + Elevation Variant (Default) + + + Outlined Variant (No shadow) + + +
+ +
+ + +

Square and Rounded Corners

+
+

+ By default, the Paper component has rounded corners. You can make it + square by setting the square prop to true. +

+
+
+ + + Rounded Corners (Default) + + + Square Corners + + +
+ +
+
+
+
+ ); +}; + +export default PaperCode; diff --git a/src/sections/Projects/Sistent/components/paper/guidance.js b/src/sections/Projects/Sistent/components/paper/guidance.js new file mode 100644 index 000000000000..6c2dd5a412fb --- /dev/null +++ b/src/sections/Projects/Sistent/components/paper/guidance.js @@ -0,0 +1,121 @@ +import React from "react"; +import { SistentLayout } from "../../sistent-layout"; +import TabButton from "../../../../../reusecore/Button"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; + +const PaperGuidance = () => { + const location = useLocation(); + + return ( + +
+ +

Paper

+
+

+ The Paper component provides an elevated surface for displaying + content. It mimics the behavior of real-world surfaces with shadow + effects, supporting Material Design's elevation system. +

+ +
+ navigate("/projects/sistent/components/paper")} + title="Overview" + /> + + navigate("/projects/sistent/components/paper/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/components/paper/code")} + title="Code" + /> +
+
+ +

Usage Guidelines

+
+

+ When using the Paper component, follow these guidelines to ensure + consistency and usability across your designs. +

+ + +

Elevation Guidelines

+
+
    +
  • Use lower elevations (0-3) for subtle surfaces such as cards and + small sections.
  • +
  • Higher elevations (8-24) are best for modals or + key areas that need emphasis.
  • +
  • Be mindful of the dark mode + behavior, where higher elevations result in a lighter background.
  • +
+ + +

Variant Guidelines

+
+
    +
  • + Use the outlined variant for areas where shadows + might feel visually overwhelming. +
  • +
  • + Stick to the default elevation variant for core components + requiring shadow depth. +
  • +
+ +

Corners Guidelines

+
+
    +
  • + Rounded corners are more user-friendly and should be preferred + unless a strict design requires square corners. +
  • +
  • + Use square corners sparingly, mostly for components meant to + indicate precision or alignment with grid systems. +
  • +
+ + +

Accessibility

+
+
    +
  • + Make sure elevated surfaces have sufficient contrast with the + background. +
  • +
  • + Use clear and concise labels or headings for content within Paper + components to enhance accessibility. +
  • +
+
+
+
+ ); +}; + +export default PaperGuidance; diff --git a/src/sections/Projects/Sistent/components/paper/index.js b/src/sections/Projects/Sistent/components/paper/index.js new file mode 100644 index 000000000000..34ed637986af --- /dev/null +++ b/src/sections/Projects/Sistent/components/paper/index.js @@ -0,0 +1,114 @@ +import React from "react"; +import { SistentLayout } from "../../sistent-layout"; +import TabButton from "../../../../../reusecore/Button"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; +import { useStyledDarkMode } from "../../../../../theme/app/useStyledDarkMode"; +import { Paper, SistentThemeProvider } from "@layer5/sistent"; + +export const SistentPaper = () => { + const location = useLocation(); + const { isDark } = useStyledDarkMode(); + return ( + +
+ +

Paper

+
+

+ The Paper component provides an elevated surface for displaying + content. It mimics the behavior of real-world surfaces with shadow + effects, supporting Material Design's elevation system. +

+ +
+ navigate("/projects/sistent/components/paper")} + title="Overview" + /> + + navigate("/projects/sistent/components/paper/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/components/paper/code")} + title="Code" + /> +
+
+

+ The Paper component is useful for designs that require elevated + surfaces, such as cards or modals, and offers multiple configuration + options like elevation, variants, and corner styles. +

+ + +

Types

+
+

+ Paper can be configured with different elevation levels + to establish a visual hierarchy, and it also supports a flat, + outlined variant. +

+ +

Elevation

+

+ The elevation prop determines the shadow depth, with values ranging + from 0 (no shadow) to 24 (maximum shadow). +

+ + + + Paper with Elevation 3 + + + +

Outlined

+

+ For designs requiring minimal shadows, the outlined{" "} + variant can be used instead of the default elevated one. +

+ + + + Outlined Paper Variant + + + + +

Corners

+
+

+ The Paper component has rounded corners by default, but you can use + the square prop to remove rounding. +

+ + + + Square Corners + + +
+
+
+ ); +}; +export default SistentPaper; diff --git a/src/sections/Projects/Sistent/components/popper/guidance.js b/src/sections/Projects/Sistent/components/popper/guidance.js new file mode 100644 index 000000000000..8a9e4a4c9dab --- /dev/null +++ b/src/sections/Projects/Sistent/components/popper/guidance.js @@ -0,0 +1,172 @@ +import React, { useState } from "react"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; +import { SistentLayout } from "../../sistent-layout"; +import { SistentThemeProvider, Popper, Button, Box } from "@layer5/sistent"; +import { Row } from "../../../../../reusecore/Layout"; +import TabButton from "../../../../../reusecore/Button"; +import { useStyledDarkMode } from "../../../../../theme/app/useStyledDarkMode"; + +export const PopperGuidance = () => { + const { isDark } = useStyledDarkMode(); + const location = useLocation(); + const [open, setOpen] = useState(false); + const [anchorEl, setAnchorEl] = useState(null); + + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + setOpen((prevOpen) => !prevOpen); + }; + + return ( + +
+ +

Popper

+
+

+ The Popper component provides a mechanism for positioning content + dynamically relative to a reference element. It is commonly used for + tooltips, dropdowns, and modals, enhancing the user experience by + presenting contextual information without overcrowding the interface. +

+
+ navigate("/projects/sistent/components/popper")} + title="Overview" + /> + + navigate("/projects/sistent/components/popper/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/components/popper/code")} + title="Code" + /> +
+
+

+ Proper usage of the Popper component can greatly enhance user + experience by providing relevant contextual information at the right + time. Below are some guidelines to ensure effective implementation. +

+ + +

Positioning

+
+

+ The positioning of the Popper is critical for usability. Use the + `placement` prop to control where the Popper appears relative to its + anchor element. Options include: +

+
    +
  • top
  • +
  • bottom
  • +
  • left
  • +
  • right
  • +
  • top-start
  • +
  • top-end
  • +
  • bottom-start
  • +
  • bottom-end
  • +
  • left-start
  • +
  • left-end
  • +
  • right-start
  • +
  • right-end
  • +
+

+ Choosing the right position helps to prevent overlap with other + interface elements and improves readability. +

+ + +

Styling

+
+

+ The Popper component inherits styles from the Sistent theme. You can + customize the appearance by applying styles to the content inside + the Popper. For instance: +

+ + +
+
+
+ ); +}; diff --git a/src/sections/gitops/SnapshotPage.js b/src/sections/gitops/SnapshotPage.js index e7131f5e7d1e..789e05d556f3 100644 --- a/src/sections/gitops/SnapshotPage.js +++ b/src/sections/gitops/SnapshotPage.js @@ -22,7 +22,7 @@ const SnapshotPage = () => { Verify your workload designs and Kubernetes cluster configurations prior to accepting and merging pull requests. -