cncf / landscape-graph Goto Github PK
View Code? Open in Web Editor NEWCNCF Landscape Graph, data model, and applications.
Home Page: https://github.com/orgs/cncf/projects/7/views/6
License: Other
CNCF Landscape Graph, data model, and applications.
Home Page: https://github.com/orgs/cncf/projects/7/views/6
License: Other
.
├── blogs
│ └── sgp-blogcncf
├── boards
│ ├── sgp-ghdiscuss
│ └── sgp-stackoverflow
├── core
│ └── generated
├── corp
│ ├── sgp-crunchbase
│ └── sgp-yahoofinance
├── email
├── packages
│ ├── sgp-brew
│ ├── sgp-choco
│ ├── sgp-crate
│ ├── sgp-deb
│ ├── sgp-deno
│ ├── sgp-go
│ ├── sgp-maven
│ ├── sgp-npm
│ ├── sgp-pip
│ └── sgp-rpm
├── rtc
│ ├── sgp-discord
│ └── sgp-slack
├── social
│ ├── sgp-linkedin
│ └── sgp-twitter
├── threats
│ └── sgp-nist
└── videos
└── sgp-youtube
cnab.io is a great fit.
https://github.com/cnabio/cnab-spec#cloud-native-application-bundle-specifications
Cloud Native Application Bundles (CNAB) are a package format specification that describes a technology for bundling, installing, and managing distributed applications, that are by design, cloud agnostic.
The community has created implementations of the CNAB spec with
opinionated takes on authoring bundles. Some even use Duffle's
libraries to handle the CNAB implementation. If you want to make your own CNAB tooling, that is a great place to start!
...that are...
https://neo4j.com/docs/cypher-manual/current/indexes-for-full-text-search
CALL db.index.fulltext.createRelationshipIndex("taggedByRelationshipIndex",["FOLLOWS"],["date"], { eventually_consistent: "true" })
Creating a project roadmap will give a high-level understanding to would-be contributors of where the project is and where it is going. This should be visualized and easily digestible.
https://github.com/quarkiverse/quarkus-neo4j
mvn io.quarkus.platform:quarkus-maven-plugin:2.7.5.Final:create \
-DprojectGroupId=io.cncf \
-DprojectArtifactId=panorama \
-DclassName="org.acme.datasource.GreetingResource" \
-Dextensions="neo4j,resteasy-reactive-jackson"
Quarkus has an AWESOME dev experience...IJW.
Questions that landscape-graph can help answer (seed) are below.
create GitHub Issue Template
Use it to enter these (post word smithing), and document the others we've talked to in various meetings.
MVP CNCF Schema
use schema to drive data model instantiation --> neo
More Info
Resources to review:
TLDR: Ask
Start here: https://github.com/cncf/cluster/issues/new
This issue is something of a "spike" and should result in subsequent issues / tasks identified as Next Steps, and some understanding of timeline.
This forms the precursor to proper docs.
cncf/landscape-graph is home to a variety of things.
CODEOWNERS to the rescue!
cncf.github.io/landscape-graph
Note that the community graph data import uses the GH GraphQL api. In this project (landscape-graph) the bulk of git info will be coming from src-d/gitbase, however having the interactive / GraphQL mechanism is also useful.
kind:
's of things (e.g. Pod
, Deployment
, Ingress
) part of a "built-in" data model, then a custom mechanism for extensibility (CRD's). Instead make the core data model structured with the same compositional mechanisms.implement inheritance model (see below)
implement dependency mechanism
implement core data model as { sgm-base, sgm-cncf, sgm-xyz, ... }
Object
)Sub-Graph Modules: Design and Architecture
Each of these is an Interface, acting as a base class with shared properties. Reasons to structure in this way include:
base types | derived types |
---|---|
blogs | CNCF, thenewstack, medium.*, LinkedIn Posts, ... |
boards | GH Discuss, StackOverflow |
corp | crunchbase, yahoofinance |
cncf project lists, k8s lists | |
packages | brew, choco, crate, deb, deno, go, maven, npm, pip, rpm |
rtc | slack, discord, gitter |
social | twitter, linkedin |
threats | nist |
learning | youtube, books, online courses (public / open only!) |
Each module shall have:
Taking this approach facilitates creation of a rich set of capabilities impacting model training, CI, and developer experience.
By using snapshots of the graph (Graph Projections TODO doc link) in a manner similar to virtual machine snapshot trees (esx, hyper-v, ...), CI can
We'll also benefit from a sustainable, portable, useable data model that is documented.
(TODO: update w/ final set)
.
├── blogs
│ └── sgm-blogcncf
├── boards
│ ├── sgm-ghdiscuss
│ └── sgm-stackoverflow
├── core
│ └── generated
├── corp
│ ├── sgm-crunchbase
│ └── sgm-yahoofinance
├── email
├── packages
│ ├── sgm-brew
│ ├── sgm-choco
│ ├── sgm-crate
│ ├── sgm-deb
│ ├── sgm-deno
│ ├── sgm-go
│ ├── sgm-maven
│ ├── sgm-npm
│ ├── sgm-pip
│ └── sgm-rpm
├── rtc
│ ├── sgm-discord
│ └── sgm-slack
├── social
│ ├── sgm-linkedin
│ └── sgm-twitter
├── threats
│ └── sgm-nist
└── learning
└── sgm-youtube
Closely related to this issue is: #4 (branch)
https://neo4j.com/docs/graphql-manual/current/type-definitions/interfaces/#_directive_inheritance
Any directives present on an interface or its fields will be "inherited" by any object types implementing it. For example, the type definitions above could be refactored to have the @relationship directive on the actors field in the Production interface instead of on each implementing type as it is currently:
interface Production {
title: String!
actors: [Actor!]! @relationship(type: "ACTED_IN", direction: IN, properties: "ActedIn")
}
type Movie implements Production {
title: String!
actors: [Actor!]!
runtime: Int!
}
type Series implements Production {
title: String!
actors: [Actor!]!
episodes: Int!
}
interface ActedIn @relationshipProperties {
role: String!
}
type Actor {
name: String!
actedIn: [Production!]! @relationship(type: "ACTED_IN", direction: OUT, properties: "ActedIn")
}
https://neo4j.com/docs/graphql-manual/current/type-definitions/interfaces/#_overriding
In addition to inheritance, directives can be overridden on a per-implementation basis. Say you had an interface defining some Content, with some basic authorization rules:
interface Content
@auth(rules: [{ operations: [CREATE, UPDATE, DELETE], allow: { author: { username: "$jwt.sub" } } }]) {
title: String!
author: [Author!]! @relationship(type: "HAS_CONTENT", direction: IN)
}
type User {
username: String!
content: [Content!]! @relationship(type: "HAS_CONTENT", direction: OUT)
}
type PublicContent implements Content {
title: String!
author: [Author!]!
}
type PrivateContent implements Content
@auth(rules: [{ operations: [CREATE, READ, UPDATE, DELETE], allow: { author: { username: "$jwt.sub" } } }]) {
title: String!
author: [Author!]!
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.