10

GitHub - dev-cycles/contextive: Get on the same page.

 2 years ago
source link: https://github.com/dev-cycles/contextive
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Contextive

Contextive is a suite of tools to immerse developers in the language of their users' domains.

Inspiration

Contextive is inspired by the concept of the Ubiquitous Language from the practice of Domain Driven Design (DDD) and is intended to support ubiquitous language management practices on DDD projects.

Even if you're not using Domain Driven Design, Contextive should still be very helpful in any software project where it's important that developers are aligned on the meaning of terms.

Proposed Features

The following list of features is a draft proposal of the vision at the start of the project. It's expected that the list will evolve as a prototype is developed and experimented with and lessons are learnt.

  • Ubiquitous Language Definition & Storage:
    • Classify terms as aggregates/entities, attributes, commands and events
    • For each term, include a definition, and examples of usage in normal sentences
    • Link terms to each other (e.g. commands to the aggregates/entities they apply to; events to the aggregates/entities that publish them)
    • Store Ubiquitous Language term definitions in a file in the repository (e.g. yml format)
    • Store terms by Bounded Context, and identify which repos/paths relate to each Bounded Context
  • IDE Support
    • Visual Studio Code
    • Visual Studio (2019/2022)
    • Eclipse
    • NetBeans
    • JetBrains
    • emacs
  • Code-editing Features
    • Show the term definitions & usage examples when hovering over the word in the editor
    • Add Ubiquitous Language terms to the auto-complete list
    • Codelens to identify the number of Ubiquitous Language terms in a method or class
    • Problems/warnings if misuse of the Ubiquitous Language - e.g. use of Command/Event and aggregate in the same class or method name when they are not linked, or use of extra words next to an Aggregate that isn't defined
    • In relevant places (e.g. hover), note the use of the term in other contexts to highlight the contrast and ensure clarity of which definition applies in the current context (e.g. 'THIS definition, NOT that other definition that you might have been thinking of')
  • Ubiquitous Language Management Features
    • A UI widget to view the language terms in a TreeView and offer facilities for adding, updating & removing terms
    • Make it easy to add terms to the Ubiquitous Language from existing code e.g. by highlighting and using the right-click menu

Status

Installation

Visual Studio Code

Open Visual Studio Code, launch the quick open (Ctrl+P) and then enter ext install devcycles.contextive. OR, search contextive in the extensions side-bar.

Visit the Contextive Marketplace page for details.

Check the extension README for usage instructions.

Others

Coming soon!

Contributing

If you have ideas for features or implementation, please open an issue to record your thoughts.

PRs welcome, but as things are evolving rapidly, a conversation before any major changes is probably worthwhile.

Key architectural decisions are tracked using ADRs (Architectural Decision Records) which can be found in the docs/adr folder. The MADR format is the current default.

Development is being done using Visual Studio Code Dev Containers. After cloning the repository and opening in Visual Studio Code, choose the "Reopen in Container" option to work in the dev environment. See the Visual Studio Code documentation for more details on setting up your docker environment.

License

MIT


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK