Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Writing an on-boarding guide for contributors #313

Open
doanduyhai opened this issue Aug 11, 2017 · 0 comments
Open

Writing an on-boarding guide for contributors #313

doanduyhai opened this issue Aug 11, 2017 · 0 comments

Comments

@doanduyhai
Copy link
Owner

doanduyhai commented Aug 11, 2017

Because Achilles is using heavily annotation processor to generate source code at compile time, sometimes external contributors find it very hard to handle and understand the code.

The on-boarding guide will make their life easier by explaining the main design choices of Achilles that are not explicit:

  • the multi-module Maven project
  • why the need to have a separated achilles-model module
  • the configuration of annotation processors on each module
  • Tell, don't ask design philosophy
  • the design of the meta data classes
  • a walkthrough on
    • compile time entities & annotations parsing (AnnotationTree)
    • compile time generation of source code
  • the codec system
  • the type-safe function supports in Achilles
  • the code design for the DSL source code generation
    • inner classes & variable sharing for DSL
    • behavior multi-inheritance through interface default methods
    • generation of combinatory WHERE clause
  • the tricks to support ECJ compiler
  • testing infrastructure
    • mvn compile on achilles-core to copy .java source file to target directory
    • usage of compile-testing library and special annotation to trigger annotation processor
  • Cassandra version-aware feature toggle using rich enums
  • Doc generation with pandoc on Linux & Mac
  • TestSchemaGenerator to be put in the latest integration test module
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant