postman-open-technologies / gsoc-2024 Goto Github PK
View Code? Open in Web Editor NEWPostman Open Technologies' repo for Open Source contributions during Google Summer of Code 2024
Postman Open Technologies' repo for Open Source contributions during Google Summer of Code 2024
Hello Community! My name is Vaibhav Yadav, pursuing my bachelor's degree in information technology, with a keen interest in becoming a proficient software engineer.
I'm good in MERN, ELK, git, C/C++, python and typescript. (I'm more a backend developer :) )
It's really important to have a website that's easy to use and keeps everybody informed about the upcoming conference.
That's why we must ensure our website is dynamic and user-friendly.
Learn more here: asyncapi/conference-website#284
Mentor/s:
@AceTheCreator @Mayaleeeee
Project Repo:
https://github.com/asyncapi/conference-website
Expected Difficulty:
Easy-Medium
Expected Time Commitment:
320 hours
Project title
Define upgrade/downgrade language agnostic declarative transformation rules for all JSON Schema dialects.
Brief Description
The Alterschema project defines a set of JSON-based formal transformation rules for upgrading schemas between Draft 4 and 2020-12, and all dialects in between. These rules are defined using JSON Schema and JSON-e and live within the Alterschema project.
We would like to revise these rules, extend them to support every dialect of JSON Schema (potentially including OpenAPI's old dialects too), and attempt to support some level of downgrading.
Instead of having these rules on the Alterschema repository, we want to have them on the JSON Schema organization for everybody to consume, including Alterschema itself.
Revising the rule format should consider currently unresolved edge cases in Alterschema like tweaking references after a subschema is moved.
Expected Outcomes
A new repository in the JSON Schema organization with upgrade/downgrade rules defined using JSON.
Skills Required
Understanding of various dialects of JSON Schema and their differences.
Mentors
Expected Difficulty
Medium
Expected Time Commitment
350 hours
Related project in the JSON Schema org: json-schema-org/community#599
Project title
Long-Term Reporting With Bowtie
Brief Description
The JSON Schema test suite is a collection of JSON schemas, instances (data) and expected validation results -- meaning information about what result an implementation of JSON Schema is expected to produce. These "known correct results" are used by a huge number of implementations of JSON Schema in order to ensure they behave correctly under the JSON Schema specification.
The recent Bowtie tool was written to compare results of running this suite across many implementations. It produces a report, accessible at https://bowtie.report, showing how many tests pass or fail on each implementation.
But how does that information change over time, as implementations fix bugs, or as new tests are added to the test suite?
Let's write a way to track compliance numbers over time, such that we can graph or query how the results change!
Refs: bowtie-json-schema/bowtie#34
Expected Outcomes
bowtie trend
command which can aggregate together results from Bowtie, producing a trend reportSkills Required
Mentors
Expected Difficulty
Medium
Expected Time Commitment
350 hour
Project title
New Bowtie Test Case Widgets
Brief Description
Bowtie is a JSON Schema tool for comparing implementations with each other, and reporting on when or whether they have behavior which does not match with behavior expected by the JSON Schema specification.
It renders this information on a website at bowtie.report.
A major part of showing this information is communicating:
How to present these 5 bits of information (and a few more) can get challenging when showing a large number of test cases.
Bowtie's website currently contains a crude pair of UI widgets for doing this -- specifically it renders a long list of collapsible sections:
and then when expanding one, shows the schema, instance, and results in a table:
But we can do lots better! Help rewrite Bowtie's test UI components so that we can cleanly filter through hundreds or thousands of test cases in a clear and efficient way.
Expected Outcomes
Skills Required
Mentors
Expected Difficulty
Medium
Expected Time Commitment
175 Hour
Related issue in the JSON Schema org: json-schema-org/community#609
This exciting project revolves around the development of a Website UI Kit, especially crucial after identifying the need for visual consistency during the visual style update in the recent PR. The current challenge lies in maintaining cohesion across recurring elements, even the smallest ones, on the website.
The design is ready, and the goal is to translate it into a user-friendly UI Kit. While Tailwind CSS is a powerful tool, we aim to optimize its usage by encapsulating class names within components. This approach replaces the practice of duplicating classes for similar visual styles, ensuring a modular and maintainable design system.
The outcome will be a comprehensive UI Kit that not only complements the existing design but also streamlines development, making it easier to create and manage cohesive elements across the website.
Learn more here asyncapi-archived-repos/design-system#4
Mentor/s:
@AceTheCreator @akshatnema @Mayaleeeee
Project Repo:
https://github.com/asyncapi/website
Expected Difficulty:
Easy-Medium
Expected Time Commitment:
350 Hour
Project title
bowtie-perf
: a Performance Tester for JSON Schema implementations
Brief Description
Bowtie is a tool which provides "universal access" to JSON Schema implementations, giving JSON Schema users a way to use any implementation supported by Bowtie.
A primary use case for Bowtie was to allow comparing implementations to one another, which can be seen on Bowtie's website and which gives anyone a way to see how correct a JSON Schema implementation is relative to the JSON Schema specification.
But it can do more! Let's write a performance tester using Bowtie, giving us a way to also compare performance of implementations by timing how long they take to do their work. This information could be used to do performance optimization, or as a second dimension that users could use when comparing implementations with one another.
Refs: bowtie-json-schema/bowtie#35
Expected Outcomes
bowtie perf
command which reports on implementation performance when executing its validationSkills Required
Mentors
Expected Difficulty
Hard
Expected Time Commitment
350 hour
Related issue in the JSON Schema project: json-schema-org/community#605
This initiative aims to guide you on a journey from being a contributor to becoming a maintainer of the project. You'll gain insight into the responsibilities of a maintainer, involving tasks beyond mere coding.
Learn more here asyncapi/generator#1145
Mentor/s:
@derberg
Project Repo:
https://github.com/asyncapi/generator
Expected Difficulty:
Medium/Hard
Expected Time Commitment:
350 hours
GSoC : Setting up the CI/CD Pipeline for the JSON Schema website using Github Actions
Brief Description
Currently the JSON Schema website have a very basic CI/CD workflow but we aim to provide a consistent way to securely add new features by improving the CI/CD workflow. The Project aims to stabilise & setup the CI/CD pipeline for the JSON Schema website project.
The second stage of this project will be create a minimal implementation of UI testing to be validated as part of the workflow so we can continue improve the tests over time.
Expected Outcomes
The Project aims to stabilise & setup the CI/CD pipeline for the JSON Schema website project. The project implies:
Skills Required
Mentors
@benjagm
Expected Difficulty
Easy/Medium
Expected Time Commitment
175 hours
Related issue in the JSON Schema org: json-schema-org/community#603
This project envisions enhancing the social media sharing experience for AsyncAPI Studio by introducing a dynamic Open Graph link preview image generation mechanism. Currently, when users share a link to the Studio with or without query parameters like ?url=<url-of-file> or ?base64=<base64-encoded-doc>
, the default preview image lacks context about the specific file being shared.
The goal is to implement a solution that dynamically generates a preview image based on the file being shared. This customized preview image will include essential information such as the title, description, and relevant statistics, offering a more informative representation of the document. This improvement is expected to enhance the user experience when sharing AsyncAPI docs on platforms like Twitter, Linkedin, Facebook, Slack, and others, providing a visually appealing and context-rich preview image.
Learn more here asyncapi/studio#224
Mentor/s:
@smoya
Project Repo:
https://github.com/asyncapi/studio
Expected Difficulty:
Easy-Medium
Expected Time Commitment:
175 Hour
This project centers around enhancing the collaborative experience within AsyncAPI Studio by introducing real-time editing capabilities.
The primary goal is to empower multiple users to collaboratively work on AsyncAPI specifications in real-time, fostering a seamless and efficient collaborative environment. The project involves implementing features that enable simultaneous editing, version control, and communication tools within the Studio, ensuring that collaborative efforts are streamlined and productive.
This enhancement is designed to elevate the collaborative workflow, providing users with the ability to collaborate on AsyncAPI specifications in a dynamic and synchronized manner
Learn more here asyncapi/studio#619
Mentor/s:
Project Repo:
https://github.com/asyncapi/studio
Expected Difficulty:
Easy-Medium
Expected Time Commitment:
175
This project addresses the needs of template maintainers, particularly those overseeing code-generating templates. The goal is to develop a dedicated feature within the generator or potentially create a standalone library that can be effortlessly enabled in repositories. The envisioned capability allows maintainers to seamlessly activate integration tests specifically tailored to their code generation templates. By creating this testing library, template maintainers will benefit from a streamlined process to ensure the robustness and reliability of their templates, enhancing overall code generation quality and reliability.
Additionally, contributors will have the opportunity to code in JavaScript or TypeScript, collaborate on a solution that will be used across the AsyncAPI organization, delve into the intricacies of writing a testing library, and gain hands-on experience with Docker, virtualization, and testing automation.
Learn more here asyncapi/generator#752
Mentor/s:
@derberg
Project Repo:
https://github.com/asyncapi/generator
Expected Difficulty:
Medium-Hard
Expected Time Commitment:
175 Hour
To Develop an enhanced test case management dashboard for Bowtie, the JSON Schema tool. This dashboard will provide users with a more intuitive and efficient way to manage and analyze test cases, leveraging the capabilities of the MERN stack.
Features:
🔆 User Authentication and Authorization: Implement user authentication and authorization using JSON Web Tokens (JWT) to ensure secure access to the dashboard.
🔆 Test Case CRUD Operations: Allow users to create, read, update, and delete test cases directly from the dashboard. Utilise MongoDB for storing test case data.
🔆 Search and Filtering: Implement advanced search and filtering functionalities to help users quickly find specific test cases based on criteria such as schema, instance, expected result, etc.
🔆 Visualization Tools: Integrate charting libraries like D3.js or Chart.js to visualise test case data, providing users with insights into testing trends, success rates, and areas needing improvement.
🔆 Real-time Collaboration: Enable real-time collaboration features using Socket.IO, allowing multiple users to collaborate on test cases simultaneously.
🔆 Integration with Bowtie: Integrate the dashboard seamlessly with Bowtie's website, allowing users to access and manage test cases directly from the Bowtie platform.
JSON Schema Language Server Contributions
Brief Description
The Language Server Protocol (LSP) provides a way to write an IDE/editor extension that is compatible with any IDE/editor that supports the LSP. Today, most IDEs/editors support LSP including JetBrains, VSCode, and even Neovim. LSP allows you to provide all the kinds of features you'd expect from an IDE such as inline error messaging, autocomplete, goto definition, linting, and more. We're currently in the early stages of building a language server for JSON Schema.
Expected Outcomes
This might be different that other GSoC projects in that it's not explicit about what aspect of the language server you'll be working on. There will be a prioritized list of tasks and you will work with the maintainer to complete as many tasks as you can in the time allotted for GSoC. Sometimes you'll be working solo and other time pairing with the maintainer. Tasks may include implementing a language server feature, adding linting rules, improving an existing feature, and possibly some bugfixes.
Skills Required
Mentors
Expected Difficulty
Hard
Expected Time Commitment
350 hour
Related issue inside the JSON Schema org: json-schema-org/community#601
Source Generation Analyzer Powered by Corvus.JsonSchema (.Net)
Brief Description
The JSON Schema implementation Corvus.JsonSchema operates by generating source code for types based on a supplied JSON Schema such that the validation constraints present in the schema are rendered in code. An overview of how it works can be found in this video.
Often, different software development teams within a single organization will use different tech stacks to implement their functionality. JSON Schema can help unify these teams by providing a single source of truth for data modelling. The teams will then generate code for the data models.
Expected Outcomes
This project is to wrap the code generation functionality of the Corvus library in a .Net source generation analyzer to assist developers by easily generating data models using JSON Schema as a source of truth.
Skills Required
Mentors
Expected Difficulty
Medium, if the candidate is familiar with source generators. Hard otherwise.
Expected Time Commitment
175 (probably)
Related issue in the JSON Schema org: json-schema-org/community#614
In response to the growing AsyncAPI project and website contributors, this initiative aims to bolster website stability by implementing a systematic approach to validate the integrity of scripts within the /scripts/* folder.
The project involves researching and selecting an appropriate testing engine or framework for JavaScript and Next.JS, seamlessly integrating it into the AsyncAPI website, and crafting comprehensive test cases for all scripts in the specified folder.
The final step includes establishing a CI workflow using GitHub Actions to automate the testing process, enabling early error detection before code deployment. Proficiency in JavaScript, Next.JS, unit testing, and CI/CD is essential for successful execution, ensuring a resilient and reliable website in the face of continuous development and enhancements.
Learn more here asyncapi/website#2626
Mentor/s:
@anshgoyalevil @sambhavgupta0705
Project Repo:
https://github.com/asyncapi/website
Expected Difficulty:
Medium-Hard
Expected Time Commitment:
350 Hour
This project proposes the development of an alternative preview option for visualizing message payloads using Markdown and MermaidJS Class Diagrams. The envisioned feature aims to integrate seamlessly with the existing AsyncAPI schema and Avro (.avsc) files, providing a dynamic and interactive representation of message structures.
Additionally, the preview should support synchronization between the preview panel and source code, allowing users to navigate and comprehend the structure effortlessly. The project includes a crucial export functionality to enhance usability, enabling users to export the Markdown preview as text for easy inclusion in external documentation. This endeavor combines the power of Markdown and MermaidJS to offer a comprehensive and visually appealing preview option, fostering a more intuitive understanding of message payloads within the AsyncAPI ecosystem.
Learn more here asyncapi/vs-asyncapi-preview#161
Mentor/s:
@ivangsa
Project Repo:
https://github.com/asyncapi/vs-asyncapi-preview
Expected Difficulty:
Easy-Medium
Expected Time Commitment:
175 Hour
Project title
jsonschema.lean -- an implementation of JSON Schema in Lean
Brief Description
Lean is an extremely interesting and up and coming programming language created by Leo de Moura (formerly at Microsoft Research, now at Amazon) and his team. It is an "interactive theorem prover", though for our purposes what it offers is in short an ability to write a piece of software and then have the ability to formally prove properties of the software that you've written, all within the language itself ("software verification").
Let's write an implementation of JSON Schema in Lean!
Why? Here are some reasons:
Expected Outcomes
Skills Required
Mentors
Expected Difficulty
Hard
Expected Time Commitment
350 hours
Related issue in the JSON Schema project : json-schema-org/community#606
GSoC : Build a new version of the JSON Schema tooling page
Brief Description
JSON Schema is a fundamental technology massively used in the industry thanks to the amazing tooling available in the Ecosystem. In fact, the JSON Schema implementations page is third page in terms of visits which shows how important is for the JSON Schema users base. Some months ago we released a new version of the JSON Schema website, however the UX of the current page is suboptimal producing friction and slowing down the JSON Schema adoption.
The goal of this Project Idea is to build a new data-driven version of the page, with filters, call to actions to add implementations. The approved UX of this page is available here: JSON Schema Site Mock-up.zip and the community discussion is available on this issue: json-schema-org/website#160.
Before start working on the issue we'll review the discussion and capture the last requirements but as of now, the expected changes are just regarding Bowtie integration.
The JSON Schema website repository is available here: https://github.com/json-schema-org/website
Expected Outcomes
A new version of the tooling page, with filters, call to actions to add implementations. The approved UX of this page is available on this issue: json-schema-org/website#160
Skills Required
Front-end development with familiarity with Typescript, React and Next.js.
Mentors
Expected Difficulty
easy/medium
Expected Time Commitment
175 hours
Related issue in the JSON Schema org: json-schema-org/community#602
AsyncAPI-Preview + Spectral for VSCode form a perfect combo in terms of UX/DX for asyncapi editing:
with this extension, you can navigate and preview your API definition
while Spectral for VSCode provides inline and listed linting error for common and even custom mistakes
VSCode comes with an API for providing quick/autofixes for linting errors (see https://code.visualstudio.com/docs/editor/refactoring https://code.visualstudio.com/api/references/vscode-api#CodeActionProvider and https://github.com/microsoft/vscode-extension-samples/tree/main/code-actions-sample for an example)
The purpose of this feature is to provide auto-fix refactoring for the most common and standard spectral linting errors for asyncapi:
https://docs.stoplight.io/docs/spectral/1e63ffd0220f3-async-api-rules
Learn more here asyncapi/vs-asyncapi-preview#160
Mentor/s:
@ivangsa
Project Repo:
https://github.com/asyncapi/vs-asyncapi-preview
Expected Difficulty:
Easy-Medium
Expected Time Commitment:
175 Hour
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.