Giter Site home page Giter Site logo

gsoc-2024's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gsoc-2024's Issues

Vaibhav's Self-Introduction

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 :) )

What interests you most about this organisation and project?

  • Postman's potential to make a meaningful impact in the realm of API developement and testing is what intrigues me the most, since I'm more a backend-developer and I've used postman everytime to build APIs,
  • I've built scalable Express Servers where I've used asynchronous code, JSON Schema, JavaScript and Node.js, client/server in many parts of my projects and internships. I want to know how you make it happen and want to contribute to it.

As mentors and project coordinators, how can we get the best out of you?

  • Having access to relevant resources and documentation greatly enhances my understanding and ability to contribute effectively .Effective communication, guidance, and constructive feedback are instrumental in helping me perform at my best, a supportive environment foster productivity and growth. I appreciate mentors who are approachable, knowledgeable, and invest in my success.

Is there anything that you’ll be studying or working on whilst working alongside us?

  • My Full stack and cloud Internship is about to end and I'll be freed thereafter to be able to contribute in project. Along side project, I'll continue my learning to expand my knowledge so that I can help this project everyway possible.

We'd love to hear a bit about your work preferences, e.g. how you keep yourself organized, what tools you use, etc?

  • I use Asana to track my work, tools like git for tracking changes in code, IDE like VS code for writing and debugging my code, and yes a coffee!

Once you’ve selected a project, please suggest a weekly schedule with clear milestones and deliverables around it.

  • Well, my schedule starts with following approaches,
    • Review project goals and requirements.
    • Search and explore the project.
    • Get hands on, start coding and make changes.
    • Testing and debugging the code, getting review for the code.
    • Optimization the code if possible.
    • Get all check done and submission;

JSON Schema: Define upgrade/downgrade language agnostic declarative transformation rules for all JSON Schema dialects

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

@jviotti

Expected Difficulty

Medium

Expected Time Commitment

350 hours

Related project in the JSON Schema org: json-schema-org/community#599

JSON Schema : `bowtie-trend` - Long-Term Reporting With Bowtie

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

  • A new bowtie trend command which can aggregate together results from Bowtie, producing a trend report
  • A page on the website which uses this trend report to produce graphs of failed tests over time

Skills Required

  • Comfort with Python as well as Typescript
  • Basic data processing skils
  • Fundamental knowledge of JSON Schema validation

Mentors

@Julian

Expected Difficulty
Medium

Expected Time Commitment
350 hour

JSON Schema: New Bowtie Test Case Widgets

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:

  • a specific JSON Schema
  • a specific JSON instance (piece of data)
  • the expected result for whether this schema considers the instance valid
  • the actual result received from 15 or more implementations which were tested
  • a description of this specific test case suitable for human readers

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:

Screenshot 2024-02-01 at 8 38 16 AM

and then when expanding one, shows the schema, instance, and results in a table:

Screenshot 2024-02-01 at 8 39 14 AM

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

  • New UI components for test case lists as well as instance/schema pairs
  • Integration of these components with Bowtie's site

Skills Required

  • React / TypeScript expertise
  • An eye for design
  • Basic knowledge of JSON Schema

Mentors

@Julian

Expected Difficulty
Medium

Expected Time Commitment
175 Hour

Related issue in the JSON Schema org: json-schema-org/community#609

AsyncAPI: Website UI Kit Development

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

JSON Schema: `bowtie-perf`- a Performance Tester for JSON Schema implementations

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

  • A new bowtie perf command which reports on implementation performance when executing its validation
  • A small set of initial examples which can be used to compare results of timings
  • Some way of viewing the results

Skills Required

  • Comfortable ability with Python, which Bowtie's backend is written in
  • Attention to detail, as performance testing can be a delicate exercise
  • Basic knowledge of JSON Schema Validation

Mentors

@Julian

Expected Difficulty
Hard

Expected Time Commitment
350 hour

Related issue in the JSON Schema project: json-schema-org/community#605

JSON Schema : Setting up the CI/CD Pipeline for the JSON Schema website

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:

  1. Improving the CI/CD workflow using github actions and other tools to add features such as:
    • Lint.
    • Formatting.
    • Broken links check.
    • Unit Test.
    • Build.
    • UI Test.
  2. Define and Implement the Unit Testing and UI Testing.
  3. Review and consolidate the existing GitHub workflows approach what will be a mix of CI/CD and Community Ops.
  4. Expand the scope if necessary.

Skills Required

  • This task is ideal for someone with a full-stack mindset.
  • Familiarity with CI/CD workflows using Github Actions.
  • Familiarity with Unit and UI Testing with Typescript, React and Next.js.

Mentors
@benjagm

Expected Difficulty
Easy/Medium

Expected Time Commitment
175 hours

Related issue in the JSON Schema org: json-schema-org/community#603

AsyncAPI: Dynamic Open Graph Link Preview for AsyncAPI Studio

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

AsyncAPI: Real-time Collaboration and Editing Enhancement for AsyncAPI Studio

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

AsyncAPI: Library for easier integration testing of code generators

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

Enhanced Test Case Management Dashboard

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: JSON Schema Language Server Contributions

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

  • Familiarity with JavaScript and Node.js
  • Familiarity with client/server and RPC architectural styles
  • Familiarity with the observer pattern
  • Familiarity with JSON Schema
  • Ability to work with and understand asynchronous code
  • Ability to learn an existing code base and make contributions
  • Familiarity with writing and working with automated tests

Mentors

@jdesrosiers

Expected Difficulty

Hard

Expected Time Commitment

350 hour

Related issue inside the JSON Schema org: json-schema-org/community#601

JSON Schema: Source Generation Analyzer Powered by Corvus.JsonSchema (.Net)

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

AsyncAPI: Enhancing Script Stability for AsyncAPI Website

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

AsyncAPI: Enhanced Preview Option with Markdown and MermaidJS Diagrams

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

JSON Schema: jsonschema.lean -- an implementation of JSON Schema in Lean

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:

  • because every language needs a JSON Schema implementation, and Lean doesn't yet have one!
  • having an implementation in Lean would enable work on formal verification! This would enable us or others to formally prove theorems about JSON Schema within our implementation
  • it will probably be fun! Lean is a relatively young language, so we'll be able to "kick its tires" a bit

Expected Outcomes

  • A new repository containing a new Lean JSON Schema implementation, with as many keywords implemented as we have time for for a single dialect of JSON Schema
  • Integration of this implementation with Bowtie

Skills Required

  • Desire to learn a new programming language!
  • Some experience with functional programming a big plus (e.g. Haskell, F#)
  • Basic knowledge of JSON Schema

Mentors

@Julian

Expected Difficulty
Hard

Expected Time Commitment
350 hours

Related issue in the JSON Schema project : json-schema-org/community#606

JSON Schema: Build a new version of the JSON Schema tooling page

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.

293672662-1f11c93b-434a-479a-b27f-5ae7c7c255b3

293672662-1f11c93b-434a-479a-b27f-5ae7c7c255b3

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

@benjagm

Expected Difficulty
easy/medium

Expected Time Commitment
175 hours

Related issue in the JSON Schema org: json-schema-org/community#602

AsyncAPI: Add "Autofix" feature for common linting errors (w/ spectral)

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.