Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: page re-generated

Umbrella ticket to track all tickets related to checkstyle, spotless, warnings etc.

Difficulty: Major
Potential mentors:
sivabalan narayanan, mail: shivnarayan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

...

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org

...

...

(More details to be added)

Difficulty: Major

...

Raymond Xu, mail: rxu (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

...

(More details to be added)

Difficulty: Major
Potential mentors:

...

Project Devs, mail: dev (at) hudi.apache.org

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Support Apache Beam for incremental tailing

(More details to be added)

Difficulty: Major
Potential mentors:
Vinoth Chandar, mail: vinoth (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

Beam

A Complex Event Processing (CEP) library/extension for Apache Beam

Apache Beam [1] is a unified and portable programming model for data processing jobs. The Beam model [2, 3, 4] has rich mechanisms to process endless streams of events.

Complex Event Processing [5] lets you match patterns of events in streams to detect important patterns in data and react to them.

Some examples of uses of CEP are fraud detection for example by detecting unusual behavior (patterns of activity), e.g. network intrusion, suspicious banking transactions, etc. Also trend detection is another interesting use case in the context of sensors and IoT.

The goal of this issue is to implement an efficient pattern matching library inspired by [6] and existing libraries like Apache Flink CEP [7] using the Apache Beam Java SDK and the Beam style guides [8]. Because of the time constraints of GSoC we will probably try to cover first simple patterns of the ‘a followed by b followed by c’ kind, and then if there is still time try to cover more advanced ones e.g. optional, atLeastOne, oneOrMore, etc.

[1] https://beam.apache.org/
[2] https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101
[3] https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
[4] https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43864.pdf
[5] https://en.wikipedia.org/wiki/Complex_event_processing
[6] https://people.cs.umass.edu/~yanlei/publications/sase-sigmod08.pdf
[7] https://ci.apache.org/projects/flink/flink-docs-stable/dev/libs/cep.html
[8] https://beam.apache.org/contribute/ptransform-style-guide/

Difficulty: P3
Potential mentors:
Ismaël Mejía, mail: iemejia (at) apache.org
Project Devs, mail: dev (at) beam.apache.org

SkyWalking

Apache SkyWalking: Python agent supports profiling

Apache SkyWalking SkyWalking [1] is an application performance monitor (APM) tool for distributed systems, especially designed for microservices, cloud native and container-based (Docker, K8s, Mesos) architectures.

SkyWalking is based on agent to instrument (automatically) monitored services, for now, we have many agents for different languages, Python agent [2] is one of them, which supports automatic instrumentations.

The goal of this project is to extend the agent's features by supporting profiling [3] a function's invocation stack, help the users to analyze which method costs the most major time in a cross-services call.

To complete this task, you must be comfortable with Python, have some knowledge of tracing system, otherwise you'll have a hard time coming up to speed..

[1] http://skywalking.apache.org
[2] http://github.com/apache/skywalking-python
[3] https://thenewstack.io/apache-skywalking-use-profiling-to-fix-the-blind-spot-of-distributed-tracing/

Difficulty: Major
Potential mentors:
Zhenxu Ke, mail: kezhenxu94 (at) apache.org
Project Devs, mail: dev (at) skywalking.apache.org

...

Apache ShardingSphere: Proofread the SQL definitions for ShardingSphere Parser

Apache ShardingSphere

Apache ShardingSphere is a distributed database middleware ecosystem, including 2 independent products, ShardingSphere JDBC and ShardingSphere Proxy presently. They all provide functions of data sharding, distributed transaction, and database orchestration.
Page: https://shardingsphere.apache.org
Github: https://github.com/apache/shardingsphere

Background

ShardingSphere parser engine helps users parse a SQL to get the AST (Abstract Syntax Tree) and visit this tree to get SQLStatement (Java Object). At present, this parser engine can handle SQLs for `MySQL`, `PostgreSQL`, `SQLServer` and `Oracle`, which means we have to understand different database dialect SQLs.
More details: https://shardingsphere.apache.org/document/current/en/features/sharding/principle/parse/

Task

This issue is to proofread the DML(SELECT/UPDATE/DELETE/INSERT) SQL definitions for Oracle. As we have a basic basic Oracle SQL syntax definitions but but do not keep in line with Oracle DOC, we need you to find out the vague SQL grammar definitions and correct them referring to Oracle DOC.

Notice, when you review these DML(SELECT/UPDATE/DELETE/INSERT) SQLs, you will find that these definitions will involve some basic elements of Oracle SQL. No doubt, these elements are included in this task as well.

Relevant Skills

1. Master JAVA language
2. Have a basic understanding of Antlr g4 file
3. Be familiar with Oracle SQLs

Targets files

1. DML SQLs g4 file: https://github.com/apache/shardingsphere/blob/master/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
2. Basic elements g4 file: https://github.com/apache/shardingsphere/blob/master/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4

References

1. Oracle SQL quick reference: https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlqr/SQL-Statements.html#GUID-1FA35EAD-AED2-4619-BFEE-348FF05D1F4A
2. Detailed Oracle SQL info: https://docs.oracle.com/pls/topic/lookup?ctx=en/database/oracle/oracle-database/19/sqlqr&id=SQLRF008

Mentor

Juan Pan, PMC of Apache ShardingSphere,   panjuan@apache.org

Difficulty: Major
Potential mentors:
Juan Pan, mail: panjuan (at) apache.org
Project Devs, mail: dev (at) shardingsphere.apache.org

Apache Hudi

[UMBRELLA] Checkstyle, formatting, warnings, spotless

Umbrella ticket to track all tickets related to checkstyle, spotless, warnings etc.

Difficulty: Major
Potential mentors:
sivabalan narayanan, mail: shivnarayan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Support Apache Beam for incremental tailing

(More details to be added)

Difficulty: Major
Potential mentors:
Vinoth Chandar, mail: vinoth (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Improve CLI features and usabilities

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Support Apache Calcite for writing/querying Hudi datasets

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Improve source ingestion support in DeltaStreamer

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: rxu (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Survey indexing technique for better query performance

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

[UMBRELLA] Support schema inference for unstructured data

(More details to be added)

Difficulty: Major
Potential mentors:
Raymond Xu, mail: xushiyan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

Apache Airflow integration w/ Apache Hudi


Difficulty: Major
Potential mentors:
sivabalan narayanan, mail: shivnarayan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

Pandas(python) integration w/ Apache Hudi


Difficulty: Major
Potential mentors:
sivabalan narayanan, mail: shivnarayan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

Pyspark w/ Apache Hudi


Difficulty: Major
Potential mentors:
sivabalan narayanan, mail: shivnarayan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

Snowflake integration w/ Apache Hudi


Difficulty: Major
Potential mentors:
sivabalan narayanan, mail: shivnarayan (at) apache.org
Project Devs, mail: dev (at) hudi.apache.org

APISIX

Apache APISIX: Support Nacos in a native way

Apache APISIX is a dynamic, real-time, high-performance cloud-native API gateway, based on the Nginx library and etcd.

Page: https://apisix.apache.org
Github: https://github.com/apache/apisix

Background

To get the upstream information dynamically, APISIX need to be integrated with other service discovery systems. Currently we already support Eureka, and many people hope we can support Nacos too.

Nacos is a widely adopted service discovery system: https://nacos.io/en-us/index.html

Previously we try to support Nacos via DNS. Nacos provides a CoreDNS plugin to expose the information via DNS: https://github.com/nacos-group/nacos-coredns-plugin

However, this plugin seems to be unmaintained.

Therefore, it would be good if we can support Nacos natively via its API, which is expected to be maintained.


Task

Integrate Nacos with APISIX via Nacos's HTTP API.


Relevant Skills

1. Master Lua language and HTTP protocol
2. Have a basic understanding of APISIX / Nacos


Targets files

1. https://github.com/apache/apisix/tree/master/apisix/discovery

References

1. Nacos Open API: https://nacos.io/en-us/docs/open-api.html

Mentor

Zexuan Luo, committer of Apache APISIX, spacewander@apache.orgImage Added

Difficulty: Major
Potential mentors:
Zexuan Luo, mail: spacewander (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX Dashboard: Enhancement plugin orchestration

The Apache APISIX Dashboard is designed to make it as easy as possible for users to operate Apache APISIX through a frontend interface.

The Dashboard is the control plane and performs all parameter checks; Apache APISIX mixes data and control planes and will evolve to a pure data plane.

This project includes manager-api, which will gradually replace admin-api in Apache APISIX.

Background

The plugin orchestration feature allows users to define the order of plugins to meet their scenarios. At present, we have implemented the plugin scheduling feature, but there are still many points to be optimized.

Task

1. develop a new plugin, conditional judgment card style.

2. Add arrows for connecting lines.

3. Limit plugin orchestration operations. For example, only one connection line is allowed between points.

Relevant Skills

1. Basic use of HTML, CSS, and JavaScript.

2. Basic use of React Framework.

Mentor

Yi Sun, committer of Apache APISIX,sunyi@apache.orgImage Added

Difficulty: Major
Potential mentors:
Yi Sun, mail: sunyi (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX: Enhanced verification for APISIX ingress controller

Apache APISIX

Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.

APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.

Background

We can use APISIX as kubernetes ingress.Use CRD (Custom Resource Definition) on kubernetes to define APISIX objects, such as route/service/upstream/plugins.

We have done basic structural verification of CRD, but we still need more verification. For example, plug-in schema verification, dependency verification between APISIX objects, rule conflict verification, etc. All these verifications need to be completed before CRD is applied.

Task

1. Implement a validating admission webhook.
2. Support plugins schema verification.
3. Support object dependency verification.

Relevant Skills

1. Golang
2. Be familiar with Apache APISIX's admin API
3. Be familiar with kubernetes

Mentor

Wei Jin, PMC of Apache APISIX, kvn@apache.org

Difficulty: Major
Potential mentors:
Wei Jin, mail: kvn (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX: support apply certificates from Let’s Encrypt or any other ACMEv2 service

Apache APISIX

Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.

APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.

Background

The data plane of Apache APISIX supports dynamic loading of ssl certificates, but the control plane does not have the support of ACME.
Although users can use other tools to obtain ACME certificates, and then call the admin API to write them into Apache APISIX, this is not convenient for many users.

Task

In the Apache APISIX dashboard (https://github.com/apache/apisix-dashboard) project, add support for ACME, which can automatically obtain and update certificates

Relevant Skills
TypeScript
Golang
familiar with Apache APISIX's admin API

Mentor
Ming Wen, PMC of Apache APISIX, wenming@apache.org

Difficulty: Major
Potential mentors:
Ming Wen, mail: wenming (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX: supports obtaining etcd data information through plugin

Apache APISIX

Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.

APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.

Background

When we get the stored data of etcd, we need to manually execute the URI request method to get each piece of data, and we cannot monitor the changed data in etcd. This is not friendly to issues such as obtaining multiple etcd stored data and monitoring etcd data changes. Therefore, we need to design a method to solve this problem.

Related issue: https://github.com/apache/apisix/issues/2453

Task

In the Apache APISIX (https://github.com/apache/apisix) project, implement a plug-in with the following functions:

1.Find route based on URI;
2.Watch etcd to print out the object that has recently changed;
3.Query the corresponding data based on ID (route, service, consumer, etc.).

Relevant Skills

1. Master Lua language;
2. Have a basic understanding of API Gateway or Web server;
3. Be familiar with ETCD.

Mentor

Yuelin Zheng, yuelinz99@gmail.com

Difficulty: Major
Potential mentors:
Yuelin Zheng, mail: firstsawyou (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX: enhanced authentication for Dashboard

Apache APISIX

Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.

APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.

Background

At present, Apache APISIX Dashboard only supports simple username and password login, we need a universal authentication mechanism that can connect to user's existing identity provider.

Task

In the Apache APISIX dashboard (https://github.com/apache/apisix-dashboard) project
1. Implement a universal login class
2. Support LDAP connection
3. Support OAuth2 connection

Relevant Skills
1. Golang
2. TypeScript
3. Be familiar with ETCD

Mentor
Junxu Chen, PMC of Apache APISIX, chenjunxu@apache.org


Difficulty: Major
Potential mentors:
Junxu Chen, mail: chenjunxu (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX: support to fetch more useful information of client request

What's Apache APISIX?

Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.

APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.

Background (route matching and run plugins)

When the client completes a request, there is a lot of useful information inside Apache APISIX.


Image Added

Task

Needs a way to show it. It is convenient for callers to troubleshoot problems and understand the workflow of Apache APISIX.

The first version target can display:
1. Which route is matched.
2. Which plugins are loaded.

In subsequent versions, we will add more information that the caller cares about, such as:

  • Whether the global plugin is executed
  • Time consumption statistics
  • The return value when the plugin is executed

    Relevant Skills

1. Master Lua language
2. Have a basic understanding of API Gateway or Web server

Difficulty: Major
Potential mentors:
YuanSheng Wang, mail: membphis (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache APISIX: improve the website

Apache APISIX

Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd, and we have a standalone website to let more people know about the Apache APISIX.

Background

The website of Apache APISIX is used for showing people what's Apache APISIX is, and it will include up to date docs to let developers searching guides more easily, and so on.

Task

In the website[1] and its repo[2], we are going to refactor the homepage, improve those docs which include apisix's docs and some like release guide.

Relevant Skills
TypeScript

React.js

Mentor

Zhiyuan, PMC of Apache APISIX, juzhiyuan@apache.org


[1] https://apisix.apache.org/

[2]https://github.com/apache/apisix-website

Difficulty: Major
Potential mentors:
Zhiyuan, mail: juzhiyuan (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org