Git Product home page Git Product logo

deps.cloud's Introduction

deps.cloud

⚠️ After much internal conflict, I've decided to move this project into maintenance mode. This comes after a long 3+ years of working on this project in open source with little to no involvement from others. After trying to present this at several conferences, it's clear either the community isn't ready for or does not require such a building block. Most individuals that have come to the project open issues, but have not seemed interested in contributing anything beyond a ticket. IF interest picks up again, I'm always happy to take the project off the back burner. For now, I'm just too burnt out managing a project that doesn't seem wanted / needed / desired.

deps.cloud is a tool to help companies understand what libraries and projects their systems use. It works by detecting dependencies defined in common manifest files (pom.xml, package.json, go.mod, etc). Using this information, we’re able to answer questions about project dependencies.

  • What versions of k8s.io/client-go do we depend on?
  • Which projects use eslint as a non-dev dependency?
  • What open source libraries do we use the most?

To start using deps.cloud

See our documentation on deps.cloud.

To start developing deps.cloud

Take a look at our contributing guidelines and project board.

# setup a workspace for all depscloud
mkdir depscloud && cd $_

# clone repository
git clone [email protected]:depscloud/depscloud.git

Support

Join our mailing list to get access to virtual events and ask any questions there.

We also have a Slack channel.

Checks

Branch

branch workflow coverage dockerfiles workflow goreleaser branch workflow

Release

nightly workflow extractor-tag workflow goreleaser-tag workflow

Image

extractor docker hub extractor image extractor pulls

gateway docker hub gateway image gateway pulls

indexer docker hub indexer image indexer pulls

tracker docker hub tracker image tracker pulls

License

fossa analytics

deps.cloud's People

Contributors

dependabot[bot] avatar fossabot avatar michizhou avatar mjpitz avatar renovate-bot avatar renovate[bot] avatar shinnlok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

deps.cloud's Issues

Update CLI installation instructions

Now that we have Homebrew and APT packages available, we need to update the documentation on how to install the CLI.

For apt on Ubuntu:

$ echo "deb [trusted=yes] https://apt.fury.io/depscloud/ /" | sudo tee /etc/apt/sources.list.d/depscloud.list
$ sudo apt-get update
$ sudo apt-get install depscloud-cli
$ deps --help

For brew on OSX:

$ brew tap depscloud/tap
$ brew install depscloud-cli
$ deps --help

The binary can still be downloaded through the releases section, but this will be the preferred way.

Move to goreleaser for all projects

I've long use tools like gox and simple asset uploads to deploy binaries. There are some nice things that come along with goreleaser such as a programmatic changelog, checksums, and more.

Introduce monitoring

No project integrates monitoring right now. This means that we need to leverage application logs to get a sense of what is going on in a system. By having something like statsd or prometheus monitoring, we would be able to better monitor the systems over time.

My proposal would be to leverage statsd as the main stat emission protocol, but then leverage prometheus sidecar containers to advertise the metrics. This should fit in rather nicely to many existing stat collection tools, like prometheus and datadog, without being too opinionated about which ones companies are using.

Build project cleanroom

The basic idea would be to have a single repository with configuration use to scaffold out a cleanroom environment for testing. Ideally, we'd be able to test:

  • each integration (GitHub, GitLab, BitBucket, Nexus, jFrog)
  • each database driver (sqlite, mysql, postgres)
  • HTTP and SSH clone support

I imagine this being a git-ops style repository containing kubernetes manifests. These manifests can be applied to a minikube cluster during github-action runs. Looks like there is a plugin for being able to do something like that.

https://github.com/marketplace/actions/setup-minikube-kubernetes-cluster

KinD might even be an option: https://github.com/marketplace/actions/kind-kubernetes-in-docker-action

Hook in health checks

Currently, health checks do not hook into any active / passive signals. As a result, services occasionally report healthy when the underlying connections are halted. This will require some pre-work from me to list dependencies.

Add content on dependency graphs

From gh-53

The page for this content has already been stubbed out. We should add some educational information about what a dependency graph is, why it's valuable, and the types of problems it's well suited to solve.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/branch.yaml
  • actions/checkout v3
  • peaceiris/actions-gh-pages v3
npm
package.json
  • postcss 8.3.0
  • autoprefixer 9.8.8
  • postcss-cli 9.1.0

  • Check this box to trigger a request for Renovate to run again on this repository

Add support for HPA

The extractor and tracker processes can easily be scaled using an HPA. This requires work for monitoring to be done and associated HPA definitions to be added to the charts.

Build template project

Alright, this has now bitten me a couple of times in migrations where I've forgotten to add some basic bits of information. It should be pretty easy to build a template project that contains the minimal amount of information.

  • LICENSE
  • DCO
  • README.md
  • renovate.json

Add content for golang sdk

From gh-53

The page for this is currently stubbed out. We should add some user guides on how to get started with the golang sdk.

Start a blog

Part of the goals I laid out for this year was to start a blog to be able to do regular release updates as well as start to include some other content that we've learned as well. This should be pretty easy to do since we're already using Hugo.

Using this issue to start a thread of possible post ideas and to start in on some blog frameworking.

Migrate docs to using Hugo

Right now, most of the documentation is manually laid out. If we leveraged gitbooks, we can get some more structure to the documentation.

Rename GitHub Group

Current: deps-cloud
Proposal: depscloud

Why?

  • Consistency
  • Some systems don't allow special characters in their group name backing distributions difficult to remember.

Places to change:

Add content for nodejs sdk

From gh-53

The page for this is currently stubbed out. We should add some user guides on how to get started with the nodejs sdk.

Add content for python sdk

From gh-53

The page for this is currently stubbed out. We should add some user guides on how to get started with the python sdk.

Build system refactor

Right now, the build and publication system is kinda a mess.

  • Travis CI is responsible for handling the building and releasing of resources.
  • When a new version is released, I need to await CI completion to build and publish the docker images
  • Once CI is complete, I use buildx to create multi-arch images and push them to docker

It's a rather toilsome process and there have been some significant shifts recently that I think can help clean up this workflow.

  • Most of what I'm doing in Travis CI can be done easily in GitHub Actions without requiring the provisioning of an API key.
  • GitHub Actions also support buildx now making it easy to build and publish multi-arch images

During the process, we should preserve all existing artifacts.

Setup CLAs

At one point I had these on the project but removed them. This time, we'll add an individual and corporate agreement with some directions for both.

Create Webook

It would be nice to have a webhook to be able to pro-actively update state when changes are made to projects.

Write blog post on producing a public facing gRPC service

gRPC services are often thought of as private services and only accessible by other projects. With some advancements from cloud providers and tools like Kubernetes, leveraging gRPC for a public service can be really useful. Shouldn't be hard to throw together a quick blog post.

This might turn into a part one of sorts.

Add section on terminology

There's a lot of jargon used throughout the project. Let's add a section to help clarify some terms. Some examples of this include:

  • dependency graph
  • manifest files
  • organization
  • module
  • source
  • dependency
  • dependent

This should be added to the /docs/concept/ page once gh-53 is merged

Support extracting source URLs

Changes to deps-cloud/api

  • proto needs to be update to include source url
  • .d.ts file needs to be updated to include source url field

Changes to deps-cloud/extractor

  • version bump api
  • Update extractors to attach a sourceUrl where found

Changes to deps-cloud/tracker

  • version bump api
  • if a source is provided as part of the dependency management file, include as part of the update to the graph.

Changes to deps-cloud/indexer

  • version bump api

Create CLI tool for exploring API more easily

Some notes I scribbled on a napkin:

# simple alias to binary
$ alias dcc=depcloud-cli

# list sources
$ dcc get sources

# list sources for module
$ dcc get sources --organization <> --module <>

# list modules for source
$ dcc get modules --source <>

# list dependents for source
$ dcc get dependents --organization <> --module <>

# list dependencies for source
$ dcc get dependencies --organization <> --module <>

Replace Gitter with Slack

When Gitter added support for message threads, their mobile app has gotten a lot less usable. Let's just move to Slack.

Monorepo discussion

Right now, a lot of the code is scattered across a few repositories. While this has been nice from a separation of concerns perspective, it's made getting started a bit harder and some additional process and project management. I'd like to start a thread around moving to two monorepos.

The depscloud repository would merge part of api, dockerfiles, gateway, extractor, indexer, part of tracker, and potentially deploy. This would move all business logic under a single location and enable project private "libraries" for common logic. This would require some careful project structuring as it would container code for TypeScript (api, extractor, ui), Python (api), and Golang (api, gateway, indexer, tracker).

The graphstore repository would pull the graph database-specific elements out of the api and tracker projects. It would work to provide a generic graph database solution that runs on top of existing SQL solutions. This has largely been done through packaging, but this would be a distinct segmentation of code. This would likely require "independent" project management, treating depscloud as just one use case.

Level up documentation

The site has largely been a kitchen sink up to this point. It's a good chance to really evaluate the content, pair it down to relevant sections, and focus on the main points.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.