Skip to content
{ Source++ } // Automated Programming Assistant
Groovy Java JavaScript HTML TSQL CSS Other
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Update dockerimage.yml May 16, 2020
agent v0.2.6 May 15, 2020
api v0.2.6 May 15, 2020
core v0.2.6 May 15, 2020
docker v0.2.6 May 15, 2020
docs Update 03-changelog.md May 15, 2020
gradle/wrapper v0.1.0-alpha import Mar 1, 2019
plugin/jetbrains-plugin v0.2.6 May 15, 2020
portal v0.2.6 May 15, 2020
.gitignore v0.1.0-alpha import Mar 1, 2019
.travis.yml v0.2.6 May 15, 2020
CODE_OF_CONDUCT.md
LICENSE v0.1.0-alpha import Mar 1, 2019
README.md Update README.md May 17, 2020
build.gradle v0.2.6 May 15, 2020
gradlew v0.1.0-alpha import Mar 1, 2019
gradlew.bat v0.1.0-alpha import Mar 1, 2019
jitpack.yml use jdk 11 Mar 30, 2020
settings.gradle wip on implementing sourcemarker Mar 28, 2020

README.md

Open-source Automated Programming Assistant

Website :: Knowledge Base :: Roadmap


Introduction

Source++ is an open-source automated programming assistant with runtime-aware and context-aware functionality. Source++ is an observant-only programming assistant and aims to bridge application performance management (APM) solutions with the software developer's integrated development environment (IDE), enabling tighter feedback loops.

Source++ will not write source code for you. Source++ can be used to help debug and prevent runtime issues by providing contextualized behavior about your source code throughout development. Future versions of Source++ aspire to provide additional AI-based pair programming features.

Why?

  1. To enable developers easy access to feedback-driven development methodologies
  2. APMs often lack tight integration with actual development of the source code they monitor
  3. Source code comprehension can be improved by providing an extra dimension of behavior linked with said source code (ie. being able to visualize how a particular method acts in certain environments vs. locally)
  4. No websites or dashboards necessary to debug complex asynchronous runtime issues (just look at and follow through your actual source code)
  5. AI-based pair programming is going to be pretty cool when we get it right

Architectural Overview


Getting Started

Prerequisites

  • Supported APMs: Apache SkyWalking
  • Supported IDEs: JetBrains
  • Supported OSes: Linux, macOS, and Windows

Installation

Downloading the IDE

Install a JetBrains IDE if you don’t already have one.

Install the Source++ Plugin

  1. Press Ctrl+Alt+S to open the Settings dialog and then go to Plugins.
  2. Click the Install JetBrains plugin.
  3. In the dialog that opens, search for SourcePlusPlus (direct link).
  4. Press Install.
  5. Click OK in the Settings dialog and restart your IDE.

After installation, you will need to configure the Source++ Plugin (see Configure Plugin).

Code Structure

Module Description Language
:agent:jvm-agent Used to activate and configure APMs' JVM agents Java 8+
:api Holds common data models and communication clients Java 8+
:core Handles integrations, contextualization, & subscriptions Groovy 2.4+
:plugin:jetbrains-plugin JetBrains implementation of the Source++ Plugin Groovy 2.4+
:portal Used to visually display contextualized artifact data Groovy 2.4+

Building/Testing

Run all Source++ tests:

./gradlew test

Build Source++ Agent:

./gradlew buildAgent

Build Source++ Plugin:

./gradlew buildPlugin

Run Source++ Core (in Docker):

./gradlew runCore

Run Source++ Plugin (in JetBrains IDE):

./gradlew runIde

Documentation

For full documentation, visit the knowledge base.

Roadmap

To know what is going on, see the roadmap.

Contributing

Feel free to open issues on just about anything related to Source++.

Attribution

This project was highly influenced by PerformanceHat. Thanks for the insights that made this possible.

License

Apache License 2.0

You can’t perform that action at this time.