Channel is something that passes messages between stakeholders. Channels can transform/enrich and aggregate messages.

Channels can be:

  • Synchronous or asynchronous. Texting and e-mail are asynchronous. Phone and video are synchronous.
  • Pushing or polling. Calling all your friends and telling them that you caught a fish is pushing. When your friends ask you about your fishing trip is polling.
  • Unidirectional or bidirectional
  • Delivering to a single recipient or multiple recipients

For example, a book might be considered as a message addressing potential readers’ concerns. It is delivered over the publisher channel (LeanPub, Amazon), which is:

  • Asynchronous,
  • Polling,
  • Might be bidirectional if readers can contact the author,
  • Delivers to multiple recipients,
  • Aggregates chapters with each chapter being a message on its own adressing specific readers’ concerns,
  • Transforms the book to multiple formats (PDF, EPUB, Web).

Examples

This section contains examples of channels in a software development enterprise consisting of human and automation stakeholders. While it might be argued that an automation stakeholder is a resource, we’ll consider it as a stakholder because it can receive messages and act on them including sending other messages.

Version control system

Version control systems like Git (GitHub, GitLab) can be considered a distributed event store and stream-processing platform similar to Apache Kafka.

Commit is an event/message, branches are streams of commits. Both humans and automated agents may receive messages by polling (pull) or pushing (web hooks).

Sample scenario:

  • A developer commits a new Java file
  • An automated AI assistant
    • Inspects the new file
    • Generates JUnit test cases and JavaDoc comments
    • Commits them to a new branch
    • Creates a merge/pull request assigning it to the developer who committed the file
  • The developer
    • Reviews proposed generated changes
    • Makes necessary adjustments
    • Merges changes

There are two demos of the above scenario - retrieving sources from GitLab, generating a test case using OpenAI, committing generated code and creating a merge request:

Version control system can be also used to pass “messsages” - files - to a web browser. Examples:

Issue management system

An issue tracking system like GitHub issues or Jira may also be considered as a channel with issues being messages.

In the above example, an automated AI assistant may:

  • Create an issue to merge generated code
  • Attach generated source code to the issue instead of creating a branch and a merge/pull request
  • Or establish a link between the issue and the branch or merge/pull request
  • Asssign the issue to the same developer
  • Add the issue to the backlog or to the next/current sprint
  • Link the issue to a parent issue (epic/initiative) which tracks progress of addressing technical debt

In the above example there are multiple recipients of the message (issue):

  • Developer - responsible, needs to address the issue by merging code
  • Scrum master - accountable, ensures that the merge is performed by the developer
  • Leadership - informed via dashboards or other means about the level of code coverage and amount of effort spent on addressing technical debt. An example of message aggregation.

Maven repository

A Maven repository can be used to pass generated documentation “messaages” to development environments such as Eclipse and web browsers using solutions like https://javadoc.io/ as an intermediary channel.

P2 repository

P2 repositories can be used to deliver integrated documentation “messages” - bundles/plugins - to Eclipse IDE including Eclipse Help System server.