Skip to content

Contribution

Ivanov Roman edited this page Nov 16, 2021 · 2 revisions

Dear contributors,

We are really pleased to see you interested in contributing.

There are many ways to contribute to Drill4J's development, just find the one that best fits with your skills. Examples of contributions we would love to receive include:

  • Code patches
  • Documentation improvements
  • Bug reports
  • Patch reviews
  • UI enhancements Big features are also welcome, but if you want to see your contributions included in Report Portal codebase we strongly recommend you start by initiating a chat though our Team.

Review Then Commit

Currently, we follow Review Then Commit (RTC) philosophy.

Review Then Commit (RTC) is more restrictive and demands a mandatory review of all changes before they are committed to the GitHub. The advocates of this model suggest this drill improves the quality of new contributions.

Drill4j has a dedicated team of server side and front-end developers, along with QA, BA and UI/UX teams. Our team members will review merge requests, comment and accept in order to follow best practices and improve quality.

With collected respect, top contributors will be granted as gatekeepers, to be able to make commits without review. And review commits of other contributors.

Test

We encourage using Test-Driven Development (TDD), so for every new feature or bug fix, please also implement unit or integration tests. For every of our active projects we have a CI build pipeline which build and test it. There is no chance to pass review if any of these tests fail.

Repository structure

This repository structure will help you understand which repository to refer to.

Backend

Jvm repositories

  • admin - backend (Ktor)
  • test2code - code coverage plugin
  • dms - Drill storage management Project
  • intellij-plugin - intellij-plugin mapping coverage from test to source code
  • state-watcher - real-time metrics plugin (in progress)
  • browser-proxy - (obsolete) converts cookies into drill headers
  • kodux - (obsolete) kotlin serialization-based ORM for Xodus database.

Multiplatform repositories

Native repositories

  • agent - contains the abstract agent core used to create platform specific agents (Java, .NET)
  • native-agent-connector - managing communication between .Net agent and a Drill Admin.
  • transport - responsible for backend communications (agents <-> admin)
  • interceptor - responsible for intercepting http protocols calls

Gradle/Maven plugins

  • agent-runner - provides dsl to run java agent and autotest agent
  • kni - gradle plugin for generation bridge function native -> java and java -> native

JS

Frontend

Micro Frontends

Monolith (Obsolete)