├── .github
├── FUNDING.yml
└── workflows
│ └── main.yml
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
└── docs
├── Architecture_Guidelines.md
├── Architecture_Security_Compliance.md
├── CNAME
├── CODE_OF_CONDUCT.md
├── How_To_Accept_Payments.html
├── How_To_Contribute.md
├── PRIVACY_POLICY.md
├── _config.yml
├── images
├── README.md
├── fullstack.png
├── gitops.png
├── opencollective.png
├── stackops.png
└── stackstandard.png
└── index.md
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: johnleider, forktheweb
4 | patreon: # Replace with a single Patreon username
5 | open_collective: global-developer-network
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://github.com/vuetifyjs/vuetify']
13 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the action will run.
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the main branch
8 | push:
9 | branches: [ main ]
10 | pull_request:
11 | branches: [ main ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | # This workflow contains a single job called "build"
19 | build:
20 | # The type of runner that the job will run on
21 | runs-on: ubuntu-latest
22 |
23 | # Steps represent a sequence of tasks that will be executed as part of the job
24 | steps:
25 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
26 | - uses: actions/checkout@v2
27 |
28 | - name: Discord Commits
29 | uses: Sniddl/discord-commits@v1.2
30 |
31 | - name: Markdown to PDF
32 | uses: valtyr/pandoc-action@v0.1-alpha
33 |
34 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 | All participants of Global Developer Network are expected to abide by our Code of Conduct, both online and during in-person events that are hosted and/or associated with Global Developer Network.
3 |
4 | # The Pledge
5 | In the interest of fostering an open and welcoming environment, we pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6 |
7 | # The Standards
8 | Examples of behaviour that contributes to creating a positive environment include:
9 |
10 | - Using welcoming and inclusive language
11 | - Being respectful of differing viewpoints and experiences
12 | - Gracefully accepting constructive criticism
13 | - Referring to people by their preferred pronouns and using gender-neutral pronouns when uncertain
14 |
15 |
16 | ## Examples of unacceptable behaviour by participants include:
17 |
18 | - Trolling, insulting/derogatory comments, public or private harassment
19 | - Publishing others' private information, such as a physical or electronic address, without explicit permission
20 | - Not being respectful to reasonable communication boundaries, such as 'leave me alone,' 'go away,' or 'I’m not discussing this with you.'
21 | - The usage of sexualised language or imagery and unwelcome sexual attention or advances
22 | - Swearing, usage of strong or disturbing language
23 | - Demonstrating the graphics or any other content you know may be considered disturbing
24 | - Starting and/or participating in arguments related to politics
25 | - Assuming or promoting any kind of inequality including but not limited to: age, body size, disability, ethnicity, gender identity and expression, nationality and race, personal appearance, religion, or sexual identity and orientation
26 | - Attacking personal tastes
27 | - Other conduct which you know could reasonably be considered inappropriate in a professional setting.
28 |
29 | # Enforcement
30 | Violations of the Code of Conduct may be reported by sending an email to comms@large.marketing. All reports will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Further details of specific enforcement policies may be posted separately.
31 |
32 | We hold the right and responsibility to remove comments or other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any members for other behaviours that they deem inappropriate, threatening, offensive, or harmful.
33 |
34 | ## Attribution
35 | This Code of Conduct is adapted from dev.to.
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
10 |
11 | "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
12 |
13 | "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
14 |
15 | "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
16 |
17 | "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
18 |
19 | "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
20 |
21 | "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
22 |
23 | "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
24 |
25 | "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
26 |
27 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
28 |
29 | 2. Grant of Copyright License.
30 |
31 | Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
32 |
33 | 3. Grant of Patent License.
34 |
35 | Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
36 |
37 | 4. Redistribution.
38 |
39 | You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
40 |
41 | You must give any other recipients of the Work or Derivative Works a copy of this License; and
42 | You must cause any modified files to carry prominent notices stating that You changed the files; and
43 | You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
44 | If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
45 | You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
46 |
47 | 5. Submission of Contributions.
48 |
49 | Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
50 |
51 | 6. Trademarks.
52 |
53 | This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
54 |
55 | 7. Disclaimer of Warranty.
56 |
57 | Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
58 |
59 | 8. Limitation of Liability.
60 |
61 | In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
62 |
63 | 9. Accepting Warranty or Additional Liability.
64 |
65 | While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
66 |
67 | END OF TERMS AND CONDITIONS
68 |
69 | ---
70 | Copyright 2021. Global Developer Network (GDN).
71 | 110 Corcoran street, Durham, NC 27701. USA.
72 |
73 | Licensed under the Apache License, Version 2.0 (the "License");
74 | you may not use this file except in compliance with the License.
75 | You may obtain a copy of the License at
76 |
77 | http://www.apache.org/licenses/LICENSE-2.0
78 |
79 | Unless required by applicable law or agreed to in writing, software
80 | distributed under the License is distributed on an "AS IS" BASIS,
81 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
82 | See the License for the specific language governing permissions and
83 | limitations under the License.
84 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://choosealicense.com/licenses/apache-2.0/)
2 | [](http://lmg.systems/ssi-roadmap)
3 | [](https://github.com/apache/groovy)
4 | [](https://npmjs.com)
5 | [](https://12factor.net/)
6 |
7 |
8 |
9 |
10 | # Why GDN?
11 | - We have been officially recognized by Open Collective as a non-profit 501(c)(6)
12 | - Our [ROADMAP!](http://lmg.systems/ssi-roadmap) contains a bus full of Open Source Developers!
13 | - We're tinkering away in order to build something [grand](https://codepen.io/largesoft/live/OJRpeBV).
14 | - Rest assured if you enjoy working across the stack, you are in the right place.
15 |
16 | > Please note! Much of the functionality described in this document is in extrordinarily active development (on Gitlab).
17 |
18 | ## Alpha preview
19 | Please sign up for our early adopters & investors alpha release preview using [this form](https://lmg.systems/zeronine) for contributor-level access to it.
20 |
21 | #### If you inhtend on using any code you find published to Github, expect that it will NOT be functional at minimum until the alpha version is released.
22 | It is slated for FY21Q03 which is essentially between now and the end of March.
23 |
24 | # GDN Contributor Information
25 | Welcome to the [Global Developer Network](https://lmg.systems/gdn-osc) 501(c)(6) [Official Open Source Collective](https://lmg.systems/gdn-osc).
26 | Built by code contributions from open source developers world-wide.
27 |
28 | We intend to accept contributions once our non-profit paperwork is officially approved, and 100% will go towards funding this development effort.
29 | We already have some [corporate sponsorship](https://fullstack.llc), but are always looking for more backers.
30 |
31 | # What are we doing?
32 | We are re-inventing the development process for Full Stack applications with an emphasis on business requirements, domain driven operations, security-first specifications with conformance to industry-standard best practices, and test coverage.
33 |
34 | Just ask us!
35 |
36 | # Discord Community
37 | Please join us on [GDN Discord chat](https://discord.gg/r5vXHwgb).
38 |
39 | ## GDN Repo for Contributors
40 | A repository designed for contributors to the [OpenSourceStacks.com](https://fullstack.llc) project, an initiative for providing a management interface for describing, building, and deploying different full stack strategies using open source software. It will provide freelance gigs for open sourcers while connecting them directly to clients, and will use a structured but enjoyable method for the onboarding process, virtual workforce solutions, and business process oversight to augment the experience via the [Full Stack Engine](https://fullstack.llc).
41 |
42 | ## What is this?
43 | A repository for contributor guidelines and other contributor related information. This repository will also contain a branch for the fully transparent open source [StackStandard.com](https://stackstandard.com) registry, which provides a taxonomy of behaviors from which [developers of packages and themes](https://www.notion.so/investhere/2-StackStandard-com-2563664485504dd9860d53a270df8631#78a9826a8a3740f6a7474f2d052a2ff3) may adopt conformance, and adopt usage of security control specifications for which we provide testing. Should you choose to be an early adopter, you will get a fancy badge for your website that says you adhere to these specific standards. We have a great process for validating the tests and presenting the status of your organization, and we will be marketing early adopters in our future campaigns.
44 |
45 | ## Contributor Benefits
46 | * Early access to our GA Amazon AWS Cloud on EKS.
47 | * The ability to debug your stack on our cloud at no cost.
48 | * The ability to test other combinations of stack technology on our service for free.
49 |
50 | Want to contribute dollars or code?
51 | - Please fill out [this form](http://bit.ly/0point9alpha)
52 |
53 | ## Early adoption of the language
54 | #### (Phase 1)
55 |
56 | GDN provides an open collective network of like-minded developers who are all seeking to participate in creating definitions for the Fullstack Domain Specific Language (FDSL) project. The language is actually a superset of GraphQL and can be used that way. It will also come in a short form notation style language that looks very similar to a DSL (Domain Specific Language) and is highly specific to the Full Stack Strategy domain. (i.e.- describing your stack technology and making sure it is fully functional, tested, and compliant with security controls.)
57 |
58 | ## How does it work?
59 | The FDSL provides an abstraction layer for applying `stack actions` at `build time`, and it does this through packages on NPM that are run as docker containers using our CLI. The CLI user does *not* need to worry about Docker or containers, as they are built intrinsically into CLI code. These `stack actions` running as `containers` perform as compilable tasks on your stack, including API calls, Transformations from RAC (results as code), introspection of packages (RASCI/ Results As Secure Code Introspection), attachment of telemetry for stack tracing (Event Listeners), and Fluentd Logging collectors (for attaching streaming logs to Kubernetes) on the stack. We are using [Terraform](https://www.terraform.io/) for some actions, and if you use our cloud, [Vault](https://www.vaultproject.io/) for secrets management controls (otherwise K8s Secrets).
60 |
61 | ### Testing
62 | These same abstractions allow for the inspection (Selenium UAT), unit and internal integration testing of [Docker](https://hub.docker.com/) images, package management, CDN, and other 3rd party software or API dependencies required to be compliant with specific standards in order to be deployed from a CICD pipeline or through `kubectl`. All a package maintainer needs in order to adopt this standard is our CLI tool, which is pluggable and modular, in order to create the `.stack` definition format and publish it to NPM via Git along with a [HELM3](https://helm.sh/docs/topics/charts/) chart of your stack. This is done automatically for multiple packages using the `monorepo` pattern [described here](https://github.com/GlobalDeveloperNetwork/contributors#loading-your-repo).
63 |
64 | > Since a Helm3 chart obviously needs to be created for each backend, we will [provide consulting](https://discord.gg/r5vXHwgb) for various backends until we have a CLI plugin for creating them. We are supporting the following configurations from our first Generally Available (GA) status:
65 |
66 | Google, Microsoft, and Amazon clouds for GraphQL APIs:
67 |
68 | * Postgres with a Hasura Layer, providing the GraphQL API
69 | * Postgres with an Express or Fastify GraphQL API
70 | * Postgres with a NestJS layer and GraphQL API
71 | * MongoDB with an Express or Fastify GraphQL API
72 | * Firestore with a GraphQL API (firestore-apollo)
73 | * Cosmos DB with a GraphQL API (using Hasura and the Postgres driver)
74 | * DocumentDB or DynamoDB with a GraphQL API (using AWS AppSync and Lambda, or DynamoDB configurations)
75 | * Socketclusters.io for streaming listener events.
76 | * Meili search nodes are also supported for those looking to implement realtime search in their cluster.
77 |
78 | ### Out of the box
79 | We provide the following functions out of the box:
80 | - GitOps strategy - i.e.- we abstract away k8s and make it simple to use for developers who don't have a PhD. in clusterology.
81 | - We provide a comprehensive, recursive installation method as post-install hooks so theme and other developers with many packages can publish easily to our system using one repo and by not having to modify all of their packages in egregious ways.
82 | - All code is built using our CLI (`npx gsys` for no global-conflicts one-time-dependency installs)
83 | - All code is tested using local integration tests and the ability to use Gitlab AutoDevOps or Github actions, while still providing test coverage to StackStandard.com.
84 | - All builds are triggered by a condition, action, and event chain that is langage agnostic, pub/sub socket stream-ready, and provides Vault support for runtime secrets.
85 | - Because we provide hosted Vault integration, you can distribute your app using Content Trust on the images and our CLI will store them on a secure Quay repo we maintain.
86 | - If you need digital asset protection, you can choose to encrypt your assets during S3 cold storage.
87 | - Our StackStandard documentation will explain all of our MVP security configurations, [offerings](https://app.getguru.com/card/c86b5pji/What-security-offers-are-going-to-definitely-be-provided-by-the-StackStandardcom-MVP), and more.
88 |
89 | ## What do you mean by a "Stack Definition"?
90 | A stack definition is a `.stack` file that is generated by a developer when creating their [Kubernetes-based](https://kubernetes.io/docs/home/) [Helm chart](https://helm.sh/docs/topics/charts/). Helm is an open source provider of a charting specification that simplifies deployment of K8s YAML by providing a `values.yaml` and `values.schema.json` file. These values are simply filled out by a user and when deployed they are assembled along with the charts. Our stack definition is created for build time operations, not deployment/ runtime. That being said, we still are supporting running build time integration tests via popular CICD. This is achieved by providing simple webhooks through endpoints that can trigger CICD jobs on our servers. Each version pushed to us is immutable and tree-checksums are validated along with DCT, and potentially Notary trust delegations (in the future). So it is trivial to support the use case of external CICD triggers so long as we can validate the chain of trust requesting it.
91 |
92 | ## Build time Ops
93 | Our focus is on the declaration of immutable artifacts that are secured, and provide digital signatures for validation and verification using GPG. We provide our offering separate from Helm via a CLI (Command Line Interface) that will ask you a series of initialization questions, and through your answers deploy a `.stack` definition locally for local testing.
94 |
95 | ## Testing the API
96 | We provide an indivdual language module for each transformation or integration test, this allows for each module to be public and open source in any language (that supports Git workflows), while still providing the flexibility to run locally. It also ensures that modules are versioned and immutable. As you develop your `.stack` file, you can utilize interactive examples that we provide and browse our documentation at [stackStandard.com](https://stackstandard.com) (will be launched by Feb 15th 2021).
97 |
98 | ## Publishing to your Helm chart
99 | Our CLI will update your existing SSI with conformance standards when tests succeed through our API. You can optionally have our CLI add in your stack definition to the Helm chart itself as YAML declarations, but this is not required. This can be highly useful for distributed applications that want to resell and conform to the FSDL. It is also very useful for UI theme, and other types of distributions where the stack needs to be modified idempotently.
100 |
101 | ## Idempotence and Language Support
102 | Right now we are focusing early adoption of just one language: ES6+ for Node.js stacks. In the near future we will be establishing this FSDL in a way that is language agnostic and supports multiple SDKs. We've planned for it, we just can't execute with at least 100 early adopters for each language.
103 |
104 | ## FSDL Privacy
105 | For some use cases where the stack has been modified to work with on-premise or private 3rd party software systems, it may be best to keep the stack definition private. We adhere to a standard that provides both options. See [StackStandard](https://stackstandard.com) for more details. (Launching January 15th 2021)
106 |
107 | # What does DSL describe?
108 | The DSL is actually a querying meta-language that looks much like javascript and/or string literals, just with additional capabilites. It is designed to make it as simple as possible to "ask" for a behavior based on a specific set of conditions and return a "result-as-code" (RAC) response. The responses are stored as Docker containers that are digitally signed, and distributed using NPM as a generic loader that can be easily re-used as individual NPM modules. This allows you to run everythign locally, and at CICD time, with the added benefit of 3rd party auditing (our service) whenever CICD builds are triggered.
109 |
110 | # Loading your repo
111 |
112 | ## Example Monorepo for Authors of multiple packages that want to use the Gitops.Systems (Gsys) and Fullstack DSL (FDSL) for CICD workflows (i.e.- Gitlab AutoDevOps or Github Actions):
113 | ```bash
114 | $ / package.json
115 | {
116 | "install:verify": "cd projects/verification && npx yarn-recursive", // runs tooling package build for encryption and docker manipulation
117 | "install:cli-all": "cd projects/cli-all && npx yarn-recursive", // runs yarn to build via npx the CLI and all supported plugins
118 | "install:PKG": "cd projects/PKG && npx yarn-recursive && \
119 | ln -s ./PKG ___INSTALL_YOUR_PACKAGES_HERE && \
120 | npx @fdsl/verify", // verify all of your own supported packages
121 | "postinstall": "npx yarn gsys && ln -s ./.bin/gsys gsys; gsys verify --recursive" // run verification from the gsys CLI
122 | }
123 | ```
124 | ## Building a Monorepo:
125 | ```bash
126 | npx yarn-run-all
127 | ```
128 |
129 | ## Example package contained in the directory of your choice:
130 | ```bash
131 |
132 | $ cat package.json | npx gsys publish behavior
133 | {
134 | "name": "@GlobalDeveloperNetwork/module",
135 | "description": "test-behavior",
136 | "version": "1.0.1",
137 | "author": "Full Stack Engine, LLC",
138 | "bin": {
139 | "gsys": "./bin/run load --with-tests=false ${CONDITION}"
140 | },
141 | "devDependencies": {
142 | "@gsys/loader": "^1.5.9",
143 | "gsys": "^1.1.0"",
144 | "dockerode": "^3.2.1"
145 | }
146 | }
147 | ```
148 |
149 | All results are digitally signed and encrypted by DCT using a private and public key pair that can verify author authenticity.
150 | The docker images can be [created by Node](https://www.npmjs.com/package/dockerode), since this is the first language we are focusing on support for.
151 |
152 | ---
153 |
154 | # Legal CYA
155 |
156 | Some portions of this repo are from the [CrateKube project](https://github.com/cratekube/cratekube), i.e.- the architectural standards, which is now deprecated by Cisco.
157 | - The code is deprecated and non-licensed, so we are resurrecting some portions of the project for our CLI.
158 | - This has been checked by our legal team and we are compliant with all applicable laws.
159 |
160 | ___
161 |
162 | > Questions or concerns about content provided by our service? We are DMCA compliant, so if you do have questions that need to be addressed, please contact our [legal](mailto:legal@large.marketing) staff directly.
163 |
164 |
165 | # Current Sponsors
166 |
167 |
168 |
169 |
170 |
171 | |
172 |
173 |
174 | |
175 |
176 |
177 | |
178 |
179 |
180 | |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 | # License Notice
189 |
190 | ___
191 | Copyright 2021. Global Developer Network (GDN).
192 | 110 Corcoran street, Durham, NC 27701. USA.
193 |
194 | Licensed under the Apache License, Version 2.0 (the "License");
195 | you may not use this file except in compliance with the License.
196 | You may obtain a copy of the License at
197 |
198 | http://www.apache.org/licenses/LICENSE-2.0
199 |
200 | Unless required by applicable law or agreed to in writing, software
201 | distributed under the License is distributed on an "AS IS" BASIS,
202 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
203 | See the License for the specific language governing permissions and
204 | limitations under the License.
205 |
206 |
214 |
--------------------------------------------------------------------------------
/docs/Architecture_Guidelines.md:
--------------------------------------------------------------------------------
1 | # GDN Architecture Guidelines
2 |
3 | ## Introduction
4 | This document is designed to provide a set of guidelines for contributors to architect new GlobalDeveloperNetwork features. New
5 | contributors and developers who are unfamiliar with our architecture format should refer here before submitting pull requests.
6 | We're pretty straight-forward with how we document our microservice architecture, but we also like to keep things consistent so
7 | please read on if you are interested in becoming a contributor.
8 |
9 | ## Who is this for?
10 | All developers and contributors who are going to architect new features on the GDN open source projects, and who seek to document
11 | those features.
12 |
13 | ## Document Format
14 | Each architecture document should contain:
15 |
16 | - An Overview
17 | - List of components and their short descriptions (1-2 paragraphs)
18 | - Minimum Viable Product functionality expectations
19 |
20 | ### Diagrams
21 |
22 | The following diagrams must be included in your architecture document:
23 |
24 | | Type | Description |
25 | |---|---|
26 | | _Component Diagram_ | What are the system functions and how do they interact |
27 | | _Physical Diagram_ | Where will the component be deployed |
28 | | _Security Diagram_ | authc, authz, trust relationships, auditing as defined in [Security Architecture Standards](./security-architecture) |
29 |
30 | ### How do I make the diagrams?
31 |
32 |
33 | ##### Example:
34 | 
35 |
36 | Show UML Code
37 |
38 |
39 | ```
40 | @startuml
41 | package "Microservice B" {
42 | [microservice-b] #00FF00
43 | }
44 | package "Microservice A" {
45 | [microservice-a] #00FFFF
46 | [Resources]
47 | }
48 | package "Storage System" {
49 | [network-storage]
50 | }
51 |
52 |
53 | [microservice-a] --> [microservice-b] : creates/deletes/invokes
54 | [microservice-a] --> [network-storage] : Stores State
55 |
56 | @enduml
57 | ```
58 |
59 |
60 |
61 | ##### Instructions:
62 |
63 | 1. Visit [PlantText](https://www.planttext.com/)
64 | 2. Write UML code
65 | 3. Embed SVG as ``
66 |
67 | ## Example Architecture Page
68 | Here's a link to the [General Architecture](./general-architecture), to be used as an example of what we are after.
69 |
70 | ## Architecture approval process
71 |
72 | Currently this process is loose at best, but essentially:
73 | 1. Submit a pull request with your architecture proposal to [any repo in our network](https://github.com/GlobalDeveloperNetwork)
74 | 2. Add two maintainers as reviewers
75 | 3. Both maintainer and member discussions occur
76 | 4. Profit?
77 |
--------------------------------------------------------------------------------
/docs/Architecture_Security_Compliance.md:
--------------------------------------------------------------------------------
1 | # GDN Security Architecture Standards
2 | This document serves as the source-of-truth for GDN Security Architecture standards. The table of security standards is defined as follows:
3 | | Property | Description |
4 | |---|---|
5 | | Identifier | A integer representing the standard. Must be unique among all GDN Security standards |
6 | | Short Name | A snake_case short name of the standard. Must be unique among all GDN Security standards and no longer than 10-characters. May be used instead of the numerical identifier in diagrams. |
7 | | Category | One of "authc", "authz", "trust", or "audit". Defined as: - authc - Authentication standard
- authz - Authorization standard
- trust - Trust relationship standard
- audit - Auditing standard
- confidential - Confidentiality standard
|
8 | | Strength | The relative strength of the standard for informing design decision preferences. One of "avoid", "weak", "sufficient", "strong". Defined as: - very weak - Do not use this standard unless no better alternative standard exists. It is considered insufficient.
- weak - If a stronger standard is available, use it instead
- sufficient - A suitable standard for most user cases with a balance of implementation complexity and utility
- strong - The strongest standard available but may not be suitable for all use cases depending on implementation complexity
|
9 | | Expiration | The date when the standard must be reviewed and renewed or superseded by a new standard. |
10 | | Superseded By | The numerical identifier of the standard that has or will replace the standard. |
11 | | Description | A complete and accurate description of the standard technical, process, and people elements. A technical criteria section may also be present with a of criteria with requirement level as defined in defined in RFC 2119 1 |
12 |
13 | # Referencing The Standards
14 | Security standards should be referenced in diagrams or documents using the regex pattern of `\[((?[a-zA-Z_]+):(?\d+))|(?[a-z_])\]` such as `[GlobalDeveloperNetwork_sso]` or `[authc:100]`. The short name is preferred whenever it provides better readability.
15 |
16 | # List of Security Standards
17 |
18 | | Identifier | Short Name | Category | Strength | Expiration | Description |
19 | |---|---|---|---|---|---|
20 | | 100 | GDN_saml | authc | sufficient | 12/01/2020 | End-user (human) authentication via SAML v2 single-sign on exchange via the GDN keycloak deployment brokering GlobalDeveloperNetwork SSO. GlobalDeveloperNetwork policy for 2FA, password complexity, rotation, etc. are applied at the GlobalDeveloperNetwork SSO IdP.
Technical criteria defining this standard:
- SPs that support SAML single-sign-out must be configured to use single-sign-out
- POST binding must be used
- Client signature verification must be used if the SP supports it.
- Assertions may be configured according to SP requirements, but must include either email or cecid as username and should use email whenever possible
|
21 | | 101 | GDN_oidc | authc | sufficient | 12/01/2020 | End-user (human) authentication via OIDC single-sign on exchange via the GDN keycloak deployment brokering GlobalDeveloperNetwork SSO. GlobalDeveloperNetwork policy for 2FA, password complexity, rotation, etc. are applied at the GlobalDeveloperNetwork SSO IdP.
Technical criteria defining this standard:
- Clients should use bearer-only access type whenever possible.
- Clients should not use public access type
|
22 | | 102 | jwt_authc | authc | sufficient | 12/01/2020 | Bearer (human or machine) authentication using the JWT specification via the GDN keycloak deployment brokering GlobalDeveloperNetwork SSO. GlobalDeveloperNetwork policy for 2FA, password complexity, rotation, etc. are applied at the GlobalDeveloperNetwork SSO IdP.
Technical criteria defining this standard:
- JWT access token must be used
- Access tokens must expire within 5 minutes of issue
- Access tokens must be treated as secrets with the applicable secrets management standards
|
23 | | 103 | jwt_authz | authz | sufficient | 12/01/2020 | Bearer (human or machine) authorizations using the JWT specification via the GDN keycloak deployment brokering GlobalDeveloperNetwork SSO. GlobalDeveloperNetwork policy for 2FA, password complexity, rotation, etc. are applied at the GlobalDeveloperNetwork SSO IdP.
Technical criteria defining this standard:
- Claims must include userid
- Userid should be email
- Userid should be CEC ID if the SP does not support emails for userid
- Claims must include GlobalDeveloperNetwork AD groups assignment
|
24 | | 104 | api_authc | authc | sufficient | 12/01/2020 | Authentication of machine clients to services with a long-lived api key. Inherits all requirements from `jwt_authc` with the exception of changing token type from access to offline. |
25 | | 105 | https_le | trust | weak | 12/01/2020 | HTTPS using TLS certificates issued for specific DNS names. This is an implicit type of trust based on the client-side configuration of a target URL. It is implicit because the client will trust whatever host it is pointed at as long as the hosts presents a valid certificate signed by the the trusted root CAs of the client. This assumes that DNS is not compromised, and that the CA issuing the certificate for the target host is also not compromised, and the host itself is not compromised. There is no direct trust between the client and server, and trust is only established one direction (client trusts server).
Technical criteria defining this standard:
- TLS v1.2 or higher must be used to establish authenticity and confidentiality of the network traffic from the server
- The client must not present a certificate for authentication via TLS
- HTTP must be used as the application protocol
- The host certificate must be issued by Let's Encrypt CA's 2
|
26 | | 106 | GDN_logs | auditing | sufficient | 12/01/2020 | Basic storage and handling of log information for GDN platform services (not tenant workloads)
Technical criteria defining this standard:
- Logs must be stored in the GDN logging service index dedicated for GDN logs
- Logs must include all stdout and stderr output
- Logs must not be persisted within the application
|
27 | | 109 | ssh_pki | authc | sufficient | 12/01/2020 | The SSH protocol (also referred to as Secure Shell) is a method for secure remote login from one computer to another. It provides several alternative options for strong authentication, and it protects the communications security and integrity with strong encryption. It is a secure alternative to the non-protected login protocols (such as telnet, rlogin) and insecure file transfer methods (such as FTP).
Technical criteria defining this standard:
- A private key must be utilized
- Key length must be 4096
- Must be SSH2 or higher
- Keys must be password protected or stored on a hardware token with pin
|
28 | | 110 | ssh_keyfile | authz | weak | 12/01/2020 | The authorized keys file determines your user, which in turn provides access and authorization to only certain files on the remote host. This is a course grained standard because authentication and authorization are closely correlated.
Technical criteria defining this standard:
- Public key cert file must be stored in a location that cannot be tampered with
|
29 | | 111 | ssh_vault | authz | strong | 12/01/2020 | The Vault SSH secrets engine provides secure authentication and authorization for access to machines via the SSH protocol. The Vault SSH secrets engine helps manage access to machine infrastructure, providing several ways to issue SSH credentials. |
30 | | 112 | vault_pki | trust | sufficient | 12/01/2020 | The PKI secrets engine generates dynamic X.509 certificates. With this secrets engine, services can get certificates without going through the usual manual process of generating a private key and CSR, submitting to a CA, and waiting for a verification and signing process to complete. Vault's built-in authentication and authorization mechanisms provide the verification functionality.
Technical criteria defining this standard:
- Should use Vault (a GlobalDeveloperNetwork/Community approved install of Vault)
|
31 | | 113 | tls_pki | authc | sufficient | 12/01/2020 | A digital certificate that certifies the ownership of a public key by the named subject of the certificate and indicates certain expected usages of that key.
Technical criteria defining this standard:
- TLS v1.2 or higher must be used to establish authenticity and confidentiality of the network traffic from the server
- Key length must be 4096
|
32 | | 114 | tls_cert_file | authz | weak | 12/01/2020 | Validation that a party possessing a digital certifiate is authorized to communcate with host.
Technical criteria defining this standard:
- Public key cert file must be stored in a location that cannot be tampered with
|
33 | | 115 | tls_vault | authz | sufficient | 12/01/2020 | Validation that a party possessing a digital certifiate is authorized to communcate with host. |
34 | | 116 | pw_authc | authc | very weak | 12/01/2020 | General username and password authentication, e.g., http basic auth, jdbc, and ssh without certs.
Technical criteria defining this standard:
- If used, must be done over an encrytped transport
|
35 | | 117 | storage_aes256 | confidential | sufficient | 12/01/2020 | Encryption for all persistent data.
Technical criteria defining this standard:
- AES must be algorithim
- Key length must be 256 bits
|
36 | | 118 | token_authc | authc | weak | 12/01/2020 | General auth token
Technical criteria defining this standard:
- Minimum key length 20
- `[0-9a-zA-Z]`
- If used, must be done over an encrytped transport
|
37 | | 119 | token_authz | authz | weak | 12/01/2020 | General auth token
Technical criteria defining this standard:
- Minimum key length 20
- `[0-9a-zA-Z]`
- If used, must be done over an encrytped transport
|
38 |
39 | # References
40 |
41 | 1. https://www.ietf.org/rfc/rfc2119.txt ↩
42 | 2. https://letsencrypt.org/ ↩
43 |
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | contributors.stackstandard.com
--------------------------------------------------------------------------------
/docs/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 | All participants of Global Developer Network are expected to abide by our Code of Conduct, both online and during in-person events that are hosted and/or associated with Global Developer Network.
3 |
4 | # The Pledge
5 | In the interest of fostering an open and welcoming environment, we pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6 |
7 | # The Standards
8 | Examples of behaviour that contributes to creating a positive environment include:
9 |
10 | - Using welcoming and inclusive language
11 | - Being respectful of differing viewpoints and experiences
12 | - Gracefully accepting constructive criticism
13 | - Referring to people by their preferred pronouns and using gender-neutral pronouns when uncertain
14 |
15 |
16 | ## Examples of unacceptable behaviour by participants include:
17 |
18 | - Trolling, insulting/derogatory comments, public or private harassment
19 | - Publishing others' private information, such as a physical or electronic address, without explicit permission
20 | - Not being respectful to reasonable communication boundaries, such as 'leave me alone,' 'go away,' or 'I’m not discussing this with you.'
21 | - The usage of sexualised language or imagery and unwelcome sexual attention or advances
22 | - Swearing, usage of strong or disturbing language
23 | - Demonstrating the graphics or any other content you know may be considered disturbing
24 | - Starting and/or participating in arguments related to politics
25 | - Assuming or promoting any kind of inequality including but not limited to: age, body size, disability, ethnicity, gender identity and expression, nationality and race, personal appearance, religion, or sexual identity and orientation
26 | - Attacking personal tastes
27 | - Other conduct which you know could reasonably be considered inappropriate in a professional setting.
28 |
29 | # Enforcement
30 | Violations of the Code of Conduct may be reported by sending an email to comms@large.marketing. All reports will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Further details of specific enforcement policies may be posted separately.
31 |
32 | We hold the right and responsibility to remove comments or other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any members for other behaviours that they deem inappropriate, threatening, offensive, or harmful.
33 |
34 | ## Attribution
35 | This Code of Conduct is adapted from dev.to.
36 |
--------------------------------------------------------------------------------
/docs/How_To_Accept_Payments.html:
--------------------------------------------------------------------------------
1 | Global Developer Network Payout Program
2 | Accepting payments
3 | From GDN to freelancers, payment flows unidirectionally in the form of "Payouts":
4 |
5 | - These are paid out weekly on Friday
6 | - Freelancer and Vendors can both benefit from payouts in this manner.
7 | - You must have logged your time in a parent task and/or group of sub-tasks
8 | - You must come in this ping
9 |
10 |
11 | This page is for contractors, vendors, and investors who wish to enroll in the Global Payout program.
12 |
13 | This program is designed so we may automate rolling payouts involving hundreds if not thousands of freelancers and employees in the very near future.
14 |
15 | How it works
16 |
17 | Simply click the button to enroll:
18 |
19 | Get paid weekly
20 |
21 |
--------------------------------------------------------------------------------
/docs/How_To_Contribute.md:
--------------------------------------------------------------------------------
1 | # GDN Contribution guidelines overview
2 |
3 | We aim to make becoming a GlobalDeveloperNetwork contributor a simple and easy process. The following guidelines help to get you up and running with GlobalDeveloperNetwork contributions as quickly as possible.
4 |
5 | ## Contribution process
6 |
7 | At a high level, the contribution process takes the following steps:
8 |
9 | 1. Choose an issue to work on.
10 | 2. Fork the repository containing the project you'd like to contribute to.
11 | 3. Develop the feature or fix the bug you've chosen to work on. Be sure to include tests.
12 | 4. Update the documentation, including the repository's README.md, as necessary.
13 | 5. Ensure that tests are passing and the project builds.
14 | 6. Open a pull request with your changes against master. Review our (pull request) PR creation guidelines below for more information.
15 | 7. Wait for reviewers. You will likely need to make some changes after the code review.
16 | 8. Once the reviews pass, we will merge your pull request.
17 |
18 | ## Local Development
19 |
20 | Each repository includes a README that will provide instructions on how to build and run the code locally.
21 |
22 | ## Feature Requests and Bugs
23 |
24 | Search our existing issues for feature requests and bugs. If one doesn't already exist for your feature or bug, create a new one. Issue templates are available to help guide you through this process.
25 |
26 | ## Contact
27 |
28 | Reach out to us through comms@large.marketing to ask for help or provide feedback.
29 |
30 |
31 | # Pull request (PR) guidelines
32 |
33 | The following pull request guidelines service to walk users through the process of creating and submitting a
34 | PR against a GlobalDeveloperNetwork repository. On the GlobalDeveloperNetwork team, we use the [forking strategy](https://gist.github.com/Chaser324/ce0505fbed06b947d962)
35 | to manage changes. As a result, PRs are required to contribute code to our repositories.
36 |
37 | ## Creating a PR
38 | To create a PR, use the following steps:
39 | - Fork the repository you would like to contribute to
40 | - Create a branch in your fork for your contribution
41 | - Apply changes to your branch including test updates and documentation changes
42 | - Create a PR from your branch to the target upstream branch using the GitHub UI
43 |
44 | After the PR has been submitted, GlobalDeveloperNetwork maintainers will review the contribution according to our review process detailed below
45 | and discuss the code with the contributor. After the review has completed, a GlobalDeveloperNetwork maintainer will merge the code into the project.
46 |
47 | ### Agree to the Developer Certificate of Origin
48 | To avoid copyright issues with this open source project, all contributors *must* agree to the Developer Certificate of Origin (DCO)
49 | vesion 1.1 for all contributions. To confirm that you agree to the DCO, all commits must contain a Signed-off-by line with an
50 | email matching the email from the commit. For reference, the text below is version 1.1 of the
51 | [Developer Certificate of Origin](https://developercertificate.org/)
52 | ```
53 | Developer Certificate of Origin
54 | Version 1.1
55 |
56 | Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
57 | 1 Letterman Drive
58 | Suite D4700
59 | San Francisco, CA, 94129
60 |
61 | Everyone is permitted to copy and distribute verbatim copies of this
62 | license document, but changing it is not allowed.
63 |
64 |
65 | Developer's Certificate of Origin 1.1
66 |
67 | By making a contribution to this project, I certify that:
68 |
69 | (a) The contribution was created in whole or in part by me and I
70 | have the right to submit it under the open source license
71 | indicated in the file; or
72 |
73 | (b) The contribution is based upon previous work that, to the best
74 | of my knowledge, is covered under an appropriate open source
75 | license and I have the right under that license to submit that
76 | work with modifications, whether created in whole or in part
77 | by me, under the same open source license (unless I am
78 | permitted to submit under a different license), as indicated
79 | in the file; or
80 |
81 | (c) The contribution was provided directly to me by some other
82 | person who certified (a), (b) or (c) and I have not modified
83 | it.
84 |
85 | (d) I understand and agree that this project and the contribution
86 | are public and that a record of the contribution (including all
87 | personal information I submit with it, including my sign-off) is
88 | maintained indefinitely and may be redistributed consistent with
89 | this project or the open source license(s) involved.
90 | ```
91 |
92 | ### Git setup
93 | If not configured globally, please configure your commits to provide a username and email:
94 | ```
95 | git config user.name ' '
96 | git config user.email ''
97 | ```
98 |
99 | To signoff contributions add the `-s/--signoff` option when committing to your branch:
100 | ```
101 | git commit -s
102 | ## or
103 | git commit --signoff
104 | ```
105 |
106 | If you are using IntelliJ to commit your changes, be sure to check the Sign-off Commit box in the Commit Changes dialog.
107 |
108 | ### PR best practices
109 | For GlobalDeveloperNetwork projects, we use the following best practices for submitting PRs:
110 | - avoid including unrelated commits
111 | - avoid large changes unless absolutely required
112 | - rebase your branch before submitting
113 | - squash your commits down to a single commit as part of the rebase ([rebase squashing guide](https://medium.com/@slamflipstrom/a-beginners-guide-to-squashing-commits-with-git-rebase-8185cf6e62ec))
114 | - include test cases for any source code changes
115 | - we uses the [ava testing framework](https://github.com/avajs/ava) for node.js development
116 | - we use the [Spock](http://spockframework.org/spock/docs/1.3/index.html) testing framework for our Groovy microservices
117 | - we recommend using Test Driven Development (TDD), writing your tests first and coding the solution to the tests
118 | - include documentation for changes that affect application contracts
119 |
120 | Additionally, when submitting PRs please provide a title that accurately describes the change. If the PR fixes an issue be sure
121 | to reference the issue number in the PR description. Keywords and syntax formatting for issue linking can be found
122 | in the GitHub [documentation](https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword).
123 |
124 | ### Specifying issue references
125 | All commits and PRs should link to the original issue being resolved. In order to achieve that, follow the following syntax during commits and PRs:
126 | - Each commit should begin with: `GlobalDeveloperNetwork/#`.
127 | - The same reference, i.e., `GlobalDeveloperNetwork/#` should be added as a comment while creating a PR.
128 |
129 |
130 | ### Code Review
131 | Code review is an important part of our quality control process. As a result, all PRs must go through a review by GlobalDeveloperNetwork
132 | maintainers. After a PR is submitted, one or more reviewers will be assigned to inspect the contribution. Each of the assigned
133 | reviewers will either approve the submission or request changes. Once all requested changes have been addressed, the PR will
134 | be merged by one of the assigned reviewers.
135 |
136 | Our repositories [GitLab](https://docs.gitlab.com/ee/ci/) for private projects and [CircleCI](https://circleci.com/docs/) for public ones, please review the documentation
137 | to understand how the CCI system applicable to you works. Status checks on each repository ensure that changes cannot be merged until both the code review and automated build have
138 | completed successfully.
139 |
140 | To avoid a large backlog of stale PRs we have automation to close requests that have no activity after 2 weeks.
141 | Please make sure to review feedback and engage with our reviewers to get your contribution merged.
142 |
143 | ### Definition of Done
144 | The GlobalDeveloperNetwork development team uses the following checklist to know when a contribution should be considered 'Done'. Each contribution *must*:
145 | - Include a clear description and/or illustration explaining the relevancy of the contribution
146 | - Contain working and clean code that is commented where needed
147 | - Contain passing automated tests that cover the added functionality
148 | - Be reviewed by at least two GlobalDeveloperNetwork maintainers
149 |
--------------------------------------------------------------------------------
/docs/PRIVACY_POLICY.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: markdown_page
3 | title: GDN Privacy Policy
4 | description: "On this page you can find information on the GDN Privacy Policy. Learn more!"
5 | canonical_path: "/privacy/"
6 | ---
7 |
8 | _Last updated: 21 January 2021_
9 |
10 | ## Introduction
11 |
12 | At GDN, we take the privacy and security of your information seriously. This privacy policy (“Privacy Policy”) will explain how we collect, use and share your personal information, and how you may exercise your rights. This Privacy Policy applies to the GDN websites (“Websites”), help.fullstack.llc (“SaaS”), and Self-managed (“Self-managed”) products and services; collectively “Services.”
13 |
14 | “Personal information” as used in this Privacy Policy is information that identifies or can reasonably be linked directly or indirectly to an identifiable person
15 |
16 | ### What personal information does GDN collect about me?
17 |
18 | #### Information You Provide Directly
19 |
20 | We collect the personal information you provide to us, for example:
21 |
22 | _Account Information:_ When you register for an account with GDN, we collect information that identifies you such as your name, username, email address and password.
23 |
24 | _Profile Information:_ We collect information that you voluntarily provide in your user profile; this may include your public avatar (which may be a photo), additional email addresses, company/organization name, job title, country, social media handles, and biography. Please note this information may be visible to other users of the Services and to the public depending on the privacy setting you apply.
25 |
26 | _Payment Information:_ If you purchase a paid subscription from GDN, we will collect payment information from you that may include your name, billing address and credit card or bank information.
27 |
28 | _Contact Information:_ If you request GDN to contact you, or sign up for marketing materials or events, GDN may collect information such as name, address, email address, telephone number, company name, and size of company.
29 |
30 | _Content you provide through the use of the Services:_ When you use the SaaS service, we collect and store content that you post, send, receive and share. Examples of content we collect and store include but are not limited to: the summary and description added to an issue, your repositories, commits, project contributions and comments. Content also includes any code, files and links you upload to the SaaS service.
31 |
32 | If you are using our Self-managed product, we do not host, store, transmit, receive or collect information about you (including your content), except in limited cases, where permitted by your administrator. See the section on “Information about your use of the Services” for more details.
33 |
34 | We may also collect other content that you submit to our Services. For example: feedback, comments and blog posts, or when you participate in any interactive features, surveys, contests, promotions, sweepstakes, activities or events.
35 |
36 | _Customer Support and Professional Services:_ If you contact GDN customer support or receive professional services, we will collect information about you related to your account and to the requests you are making or the services being provided.
37 |
38 | #### Information About Your Use of the Services We Collect Automatically
39 |
40 | _Device Information and Identifiers:_ When you access and use our Services, we automatically collect information about your device, which may include: device type, your device operating system; browser type and version; language preference; IP address, cookie identifiers, hardware identifiers, and mobile IDs.
41 |
42 | _License Information:_ For our Self-managed products we may automatically collect information about the number of active users, historical user count, licensee name, email address, IP address and similar information.
43 |
44 | _Services Usage Data:_ GDN may also collect information about how you use our SaaS and Self-hosted products such as, activity data, feature usage, and product version data. This information may be aggregated or identifiable. For more information about the data collected, and how to set your preferences, please visit [Services Usage Data](https://help.fullstack.llc/services-usage-data/)
45 |
46 | _Website Usage Data:_ When you visit our Websites, we automatically log information about how you interact with the sites, such as the referring site, data and time of visit, and the pages you have viewed or links clicked on.
47 |
48 | _Cookies and Similar Tracking Technologies:_ GDN uses cookies and similar technologies to provide functionality, such as storing your settings, and to recognize you as you use our Services. In addition, we use cookies to gather information to provide interest-based advertising which is tailored to you based on your online activity. Please review our [Cookie Policy](https://help.fullstack.llc/cookies/) to learn about our practices and the controls we provide you.
49 |
50 | _Email marketing:_ When we send you emails, they may include technology such as a web beacon, that tells us your device type, email client, and whether you have received and opened an email, or clicked on any links contained in the email.
51 |
52 | _Buttons, tools, and content from other companies:_ The Services may include links or buttons to third party services such as Facebook and Twitter. We may collect information about your use of these features. In addition, when you see or interact with these buttons, tools, or content, some information from your browser may automatically be sent to the other company. Please read that company’s privacy policy for more information.
53 |
54 | #### Information from Third parties and Partners
55 |
56 | We may also receive information about you from third parties such as vendors, resellers, partners, or affiliates. For example, we receive information from our resellers about you and your orders, or we may supplement the data we collect with demographic information licensed from third parties in order to personalize the Services and our offers to you.
57 |
58 | _Third Party sign-in services:_ GDN allows you to sign up for/in to our Services using third party accounts, such as Facebook or Google. When you give permission for this to happen, GDN will receive information about you from your third-party account, such as name, email address, location and demographic information.
59 |
60 | When you are asked to provide personal data, you may decline. And you may use web browser or operating system controls to prevent certain types of automatic data collection. But if you choose not to provide or allow information that is necessary for certain products or features, those products or features may not be available or function correctly.
61 |
62 | ### How is your personal information used?
63 |
64 | GDN uses your personal information for the following purposes:
65 | - To create your account, identify and authenticate your access to the Services and provide you with the Services you have requested;
66 | - To process your payment for the Services you have purchased;
67 | - To understand how our Services are used and to improve our Services;
68 | - To provide personalized experiences;
69 | - To conduct user research and development;
70 | - To send you important information about the Services;
71 | - To send you information you have requested;
72 | - To send you advertising, marketing content, offers, promotions, newsletters, surveys or other information;
73 | - To respond to your requests for customer support;
74 | - To improve the security of and troubleshoot our Services, as necessary to perform the contract governing your use of our applications or to communicate with you;
75 | - To detect, prevent, or otherwise address fraud and abuse to protect you, GDN, and third parties;
76 | - To enforce the legal terms that govern our Services;
77 | - To comply with our legal obligations;
78 | - To protect the rights, safety and property of GDN, you, or any third party; and
79 | - For other purposes, for which we obtain your consent.
80 |
81 | #### Legal Basis for Processing of your information
82 |
83 | If you are located in the European Economic Area (EEA), United Kingdom, or Switzerland, we collect and process your personal information on the following legal bases set out by applicable law:
84 |
85 | _Performance of a contract:_ We use your personal information to provide the Services you have subscribed to, and to complete and administer the contract you have entered into with GDN.
86 |
87 | _Legitimate Interests:_ We use your personal information for our legitimate interests, such as to provide you with relevant content, improve our products and services, and for administrative, security, fraud prevention and legal purposes. You may object to the processing of your personal information for these purposes at any time.
88 |
89 | _Consent:_ We may use your personal information, with your consent, for specific purposes such as marketing, surveys, and research. You may withdraw your consent for the specific purpose or object to the processing of your personal information at any time.
90 |
91 | ### Who is your information shared with?
92 |
93 | We may share each of the categories of personal information we collect with the types of third parties described below, for the following business purposes:
94 |
95 | _Sharing with Users and the Public:_ We may share your personal information with other users of the Services and with the public if you choose to make your SaaS Profile public. You have control over what information is public. To change your settings, go to [User Settings](https://help.fullstack.llc/profile) in your profile. You should also be aware that any information you share as part of a project, blog, website etc. may be publicly available and you should consider this carefully when interacting with the Services.
96 |
97 | _Sharing with Managed Accounts and Administrators:_ If you have created a GDN account with your corporate email address, we may share your personal information with your Company if your Company enters into a commercial relationship with GDN. If this happens, then your use of the software and your account is subject to the terms and any data protection agreement between your Company and GDN.
98 |
99 | In addition, if you choose to become a member of a project, your username, email address, IP address, the date access was granted, the date access expires, and your access role will be shared with the group owners of that project.
100 |
101 | _Sharing with Service Providers:_ We share your personal information with our service providers. These are companies who provide services on our behalf, such as hosting our Services, marketing, advertising, social, analytics, support ticketing, credit card processing, security and other such similar services. These companies are subject to contractual requirements that govern the security and confidentiality of your information.
102 |
103 | For example, we use analytics providers, such as Google Analytics, to help us understand the operation and performance of our Services. To learn about how Google uses and shares data it collects through its services, please visit .
104 |
105 | _Sharing with Partners and Resellers:_ GDN works with third parties who provide sales, consulting, support and technical services for our Services. Where permitted and with your consent (if required), we may share your data with these partners and resellers.
106 |
107 | _Sharing with Affiliated Companies:_ GDN will share information collected with [companies owned and operated by us](https://help.fullstack.llc/lmg-info-shared).
108 |
109 | _Sharing for Fraud and Prevention Abuse:_ We may share your information when we have a good faith belief that the disclosure is necessary to prevent fraud, abuse of our services, defend against attacks, and to protect the safety of GDN and our users.
110 |
111 | _Law Enforcement:_ GDN may disclose personal information or other information we collect about you to law enforcement if required in response to a valid subpoena, court order, search warrant, a similar government order, or when we believe in good faith that disclosure is necessary to comply with our legal obligations, to protect our property or rights, or those of third parties or the public at large.
112 |
113 | _Merger or Acquisition:_ We may share your personal information if we are involved in a merger, sale, or acquisition of corporate entities or business units. If any such change of ownership happens, we will ensure that it is under terms that preserve the confidentiality of your personal information, and we will notify you on our website or by email before any transfer of your personal information.
114 |
115 | ### Is your personal information transferred across national borders?
116 |
117 | Our Services are hosted in the United States and information we collect will be stored and processed on our servers in the United States. Our employees, contractors, affiliated organizations and processors that process personal information may be located in the United States or other countries outside of your home country. If you reside in the European Economic Area, United Kingdom, or Switzerland, and we transfer information about you to a jurisdiction that has not been found by the European Commission to have adequate data protections, we will use available safeguards and legal mechanisms to help ensure your rights and protections, including using Standard Contractual Clauses or obtaining your consent.
118 |
119 | ### Security
120 |
121 | We work hard to protect your personal information. We employ administrative, technical, and physical security controls where appropriate, to protect your information. For more information on our security practices please see: [Technical and Organizational Security Measures for fullstack.llc](https://help.fullstack.llc/security-by-default).
122 |
123 | ### Data Retention
124 |
125 | GDN will retain your information for as long as your account is active or as needed to perform our contractual obligations, provide you the Services, comply with legal obligations, resolve disputes, preserve legal rights, or enforce our agreements.
126 |
127 | We may delete inactive accounts and associated projects and repositories after a period of twelve (12) months.
128 |
129 | ## Rights and Choices
130 |
131 | You have the right to access, correct, restrict or delete your personal information, and to port your personal information to another company. While these rights may vary by jurisdiction, GDN provides you with the same rights and choices, no matter where you live.
132 |
133 | You may exercise your choices and rights as follows:
134 |
135 | _To opt out of email marketing:_ You may opt-out of email marketing by clicking the “unsubscribe” link located at the bottom of any email you receive or by visiting our [preference center](https://help.fullstack.llc/optout/) and unsubscribing. You may continue to receive transactional email messages about your account and the Service after you have unsubscribed.
136 |
137 | _To opt-out of Interest-based advertising:_ If you wish to opt-out of interest-based advertising, please visit the Cookie Policy to see your options.
138 |
139 | _Request a copy of your information:_ You may [request a copy of the personal information](https://help.fullstack.llc/gdpr-rfi) that GDN has about you.
140 |
141 | _Update your Information:_ If you already have an account, you may access, update, or alter your user profile information by logging into your account and updating profile settings.
142 |
143 | _To delete your Account:_ You may delete your account by logging into your account and going to the “Delete my Account” option in your profile settings.
144 |
145 | Please note that due to the open source nature of our Services, we may etain limited personal information indefinitely in order to provide a transactional history. For example, if you provide your information in connection with a blog post or comment, we may display that information even if you have deleted your account as we do not automatically delete community posts. Also, if you contribute to a public project and you provide your personal information in connection with that contribution, your personal information will be embedded and publicly displayed with your contribution, and we will not be able to delete or erase it because doing so would break the project.
146 |
147 | If you contribute to a GDN project by commenting in, or creating an issue or merge request and you provide your personal information in connection with that contribution, your personal information associated with your contribution will be deleted and attributed to a ghost user. However, please note that if the content of the contribution contains personal information, this information would remain and you will need to submit a specific request to have this information deleted.
148 |
149 | ### California Privacy Rights
150 |
151 | Under the California Consumer Privacy Act (“CCPA”) you are entitled to certain rights such as access to your specific personal information, details about our processing of your personal information, and the right to delete your information. You may exercise all of these rights as described in the “Your Rights and Choices” section. GDN does not sell your personal information, as defined under CCPA, and has not done so for the past 12 months.
152 |
153 | You may designate, in writing or through a power of attorney, an authorized agent to make requests on your behalf to exercise your rights under the CCPA. Before accepting such a request from an agent, we will require the agent to provide proof you have authorized it to act on your behalf, and we may need you to verify your identity directly with us. To provide or delete specific pieces of personal information we will need to verify your identity to the degree of certainty required by law. We will verify your request by using one of the methods set forth [here](https://help.fullstack.llc/gdpr-rfi).
154 |
155 | ### Information GDN Does Not Collect
156 |
157 | GDN does not intentionally collect sensitive personal information, such as social security numbers, genetic data, health information, or religious information. Although GDN does not request or intentionally collect any sensitive personal information, we realize that users might store this kind of information in a GDN repository.
158 | If you are a child under the age of 13, you may not have an account. GDN does not knowingly collect information from, or direct any of our Services to, children under 13. If we learn or have reason to suspect that a user is under the age of 13, we will close the child’s account.
159 |
160 | ### Policy Changes
161 |
162 | GDN may change its Privacy Policy from time to time. When we do, we will update the date at the top of this Policy. If we decide to make a significant change to our Privacy Policy, we will post a notice of the update on the homepage of our Website. We may also provide notification via email of any material changes to our Privacy Policy.
163 |
164 | ### Contact Us
165 |
166 | Your information is stored by GDN on servers owned by Large Ltd., a holdings company, encrypted and stored at AWS Amazon Web Services.
167 |
168 | It's both our responsibility and the responsibility of our parent conglomerate to ensure legal protection and sheltering of the information Large Ltd. maintains privileged access to, and this information will not leave the Large Ltd. corporate umbrella, but may be shared with sister and/or child organizations. We will never sell core data associated with these enterprises, and it will always remain in-tact as captured, immutable or be purged.
169 |
170 | If you have questions or concerns about the way we are handling your information, please email us with the subject line "Privacy Concern" at `support@fullstack.llc`.
171 |
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-midnight
--------------------------------------------------------------------------------
/docs/images/README.md:
--------------------------------------------------------------------------------
1 | All images are certified to not violate DMCA regulations. No copyright infringing images are allowed on this service.
2 |
--------------------------------------------------------------------------------
/docs/images/fullstack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GlobalDeveloperNetwork/contributors/725ac01b3a3ffc52fd9cdffb65c44ce992e86984/docs/images/fullstack.png
--------------------------------------------------------------------------------
/docs/images/gitops.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GlobalDeveloperNetwork/contributors/725ac01b3a3ffc52fd9cdffb65c44ce992e86984/docs/images/gitops.png
--------------------------------------------------------------------------------
/docs/images/opencollective.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GlobalDeveloperNetwork/contributors/725ac01b3a3ffc52fd9cdffb65c44ce992e86984/docs/images/opencollective.png
--------------------------------------------------------------------------------
/docs/images/stackops.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GlobalDeveloperNetwork/contributors/725ac01b3a3ffc52fd9cdffb65c44ce992e86984/docs/images/stackops.png
--------------------------------------------------------------------------------
/docs/images/stackstandard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GlobalDeveloperNetwork/contributors/725ac01b3a3ffc52fd9cdffb65c44ce992e86984/docs/images/stackstandard.png
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | [](https://choosealicense.com/licenses/apache-2.0/)
2 | [](http://lmg.systems/ssi-roadmap)
3 | [](https://github.com/apache/groovy)
4 | [](https://npmjs.com)
5 | [](https://12factor.net/)
6 |
7 |
8 |
9 |
10 | # Why GDN?
11 | - We have been officially recognized by Open Collective as a non-profit 501(c)(6)
12 | - Our [ROADMAP!](http://lmg.systems/ssi-roadmap) contains a bus full of Open Source Developers!
13 | - We're tinkering away in order to build something [grand](https://codepen.io/largesoft/live/OJRpeBV).
14 | - Rest assured if you enjoy working across the stack, you are in the right place.
15 |
16 | > Please note! Much of the functionality described in this document is in extrordinarily active development (on Gitlab).
17 |
18 | ## Alpha preview
19 | Please sign up for our early adopters & investors alpha release preview using [this form](https://lmg.systems/zeronine) for contributor-level access to it.
20 |
21 | #### If you inhtend on using any code you find published to Github, expect that it will NOT be functional at minimum until the alpha version is released.
22 | It is slated for FY21Q03 which is essentially between now and the end of March.
23 |
24 | # GDN Contributor Information
25 | Welcome to the [Global Developer Network](https://lmg.systems/gdn-osc) 501(c)(6) [Official Open Source Collective](https://lmg.systems/gdn-osc).
26 | Built by code contributions from open source developers world-wide.
27 |
28 | We intend to accept contributions once our non-profit paperwork is officially approved, and 100% will go towards funding this development effort.
29 | We already have some [corporate sponsorship](https://fullstack.llc), but are always looking for more backers.
30 |
31 | # What are we doing?
32 | We are re-inventing the development process for Full Stack applications with an emphasis on business requirements, domain driven operations, security-first specifications with conformance to industry-standard best practices, and test coverage.
33 |
34 | Just ask us!
35 |
36 | # Discord Community
37 | Please join us on [GDN Discord chat](https://discord.gg/r5vXHwgb).
38 |
39 | ## GDN Repo for Contributors
40 | A repository designed for contributors to the [OpenSourceStacks.com](https://fullstack.llc) project, an initiative for providing a management interface for describing, building, and deploying different full stack strategies using open source software. It will provide freelance gigs for open sourcers while connecting them directly to clients, and will use a structured but enjoyable method for the onboarding process, virtual workforce solutions, and business process oversight to augment the experience via the [Full Stack Engine](https://fullstack.llc).
41 |
42 | ## What is this?
43 | A repository for contributor guidelines and other contributor related information. This repository will also contain a branch for the fully transparent open source [StackStandard.com](https://stackstandard.com) registry, which provides a taxonomy of behaviors from which [developers of packages and themes](https://www.notion.so/investhere/2-StackStandard-com-2563664485504dd9860d53a270df8631#78a9826a8a3740f6a7474f2d052a2ff3) may adopt conformance, and adopt usage of security control specifications for which we provide testing. Should you choose to be an early adopter, you will get a fancy badge for your website that says you adhere to these specific standards. We have a great process for validating the tests and presenting the status of your organization, and we will be marketing early adopters in our future campaigns.
44 |
45 | ## Contributor Benefits
46 | * Early access to our GA Amazon AWS Cloud on EKS.
47 | * The ability to debug your stack on our cloud at no cost.
48 | * The ability to test other combinations of stack technology on our service for free.
49 |
50 | Want to contribute dollars or code?
51 | - Please fill out [this form](http://bit.ly/0point9alpha)
52 |
53 | ## Early adoption of the language
54 | #### (Phase 1)
55 |
56 | GDN provides an open collective network of like-minded developers who are all seeking to participate in creating definitions for the Fullstack Domain Specific Language (FDSL) project. The language is actually a superset of GraphQL and can be used that way. It will also come in a short form notation style language that looks very similar to a DSL (Domain Specific Language) and is highly specific to the Full Stack Strategy domain. (i.e.- describing your stack technology and making sure it is fully functional, tested, and compliant with security controls.)
57 |
58 | ## How does it work?
59 | The FDSL provides an abstraction layer for applying `stack actions` at `build time`, and it does this through packages on NPM that are run as docker containers using our CLI. The CLI user does *not* need to worry about Docker or containers, as they are built intrinsically into CLI code. These `stack actions` running as `containers` perform as compilable tasks on your stack, including API calls, Transformations from RAC (results as code), introspection of packages (RASCI/ Results As Secure Code Introspection), attachment of telemetry for stack tracing (Event Listeners), and Fluentd Logging collectors (for attaching streaming logs to Kubernetes) on the stack. We are using [Terraform](https://www.terraform.io/) for some actions, and if you use our cloud, [Vault](https://www.vaultproject.io/) for secrets management controls (otherwise K8s Secrets).
60 |
61 | ### Testing
62 | These same abstractions allow for the inspection (Selenium UAT), unit and internal integration testing of [Docker](https://hub.docker.com/) images, package management, CDN, and other 3rd party software or API dependencies required to be compliant with specific standards in order to be deployed from a CICD pipeline or through `kubectl`. All a package maintainer needs in order to adopt this standard is our CLI tool, which is pluggable and modular, in order to create the `.stack` definition format and publish it to NPM via Git along with a [HELM3](https://helm.sh/docs/topics/charts/) chart of your stack. This is done automatically for multiple packages using the `monorepo` pattern [described here](https://github.com/GlobalDeveloperNetwork/contributors#loading-your-repo).
63 |
64 | > Since a Helm3 chart obviously needs to be created for each backend, we will [provide consulting](https://discord.gg/r5vXHwgb) for various backends until we have a CLI plugin for creating them. We are supporting the following configurations from our first Generally Available (GA) status:
65 |
66 | Google, Microsoft, and Amazon clouds for GraphQL APIs:
67 |
68 | * Postgres with a Hasura Layer, providing the GraphQL API
69 | * Postgres with an Express or Fastify GraphQL API
70 | * Postgres with a NestJS layer and GraphQL API
71 | * MongoDB with an Express or Fastify GraphQL API
72 | * Firestore with a GraphQL API (firestore-apollo)
73 | * Cosmos DB with a GraphQL API (using Hasura and the Postgres driver)
74 | * DocumentDB or DynamoDB with a GraphQL API (using AWS AppSync and Lambda, or DynamoDB configurations)
75 | * Socketclusters.io for streaming listener events.
76 | * Meili search nodes are also supported for those looking to implement realtime search in their cluster.
77 |
78 | ### Out of the box
79 | We provide the following functions out of the box:
80 | - GitOps strategy - i.e.- we abstract away k8s and make it simple to use for developers who don't have a PhD. in clusterology.
81 | - We provide a comprehensive, recursive installation method as post-install hooks so theme and other developers with many packages can publish easily to our system using one repo and by not having to modify all of their packages in egregious ways.
82 | - All code is built using our CLI (`npx gsys` for no global-conflicts one-time-dependency installs)
83 | - All code is tested using local integration tests and the ability to use Gitlab AutoDevOps or Github actions, while still providing test coverage to StackStandard.com.
84 | - All builds are triggered by a condition, action, and event chain that is langage agnostic, pub/sub socket stream-ready, and provides Vault support for runtime secrets.
85 | - Because we provide hosted Vault integration, you can distribute your app using Content Trust on the images and our CLI will store them on a secure Quay repo we maintain.
86 | - If you need digital asset protection, you can choose to encrypt your assets during S3 cold storage.
87 | - Our StackStandard documentation will explain all of our MVP security configurations, [offerings](https://app.getguru.com/card/c86b5pji/What-security-offers-are-going-to-definitely-be-provided-by-the-StackStandardcom-MVP), and more.
88 |
89 | ## What do you mean by a "Stack Definition"?
90 | A stack definition is a `.stack` file that is generated by a developer when creating their [Kubernetes-based](https://kubernetes.io/docs/home/) [Helm chart](https://helm.sh/docs/topics/charts/). Helm is an open source provider of a charting specification that simplifies deployment of K8s YAML by providing a `values.yaml` and `values.schema.json` file. These values are simply filled out by a user and when deployed they are assembled along with the charts. Our stack definition is created for build time operations, not deployment/ runtime. That being said, we still are supporting running build time integration tests via popular CICD. This is achieved by providing simple webhooks through endpoints that can trigger CICD jobs on our servers. Each version pushed to us is immutable and tree-checksums are validated along with DCT, and potentially Notary trust delegations (in the future). So it is trivial to support the use case of external CICD triggers so long as we can validate the chain of trust requesting it.
91 |
92 | ## Build time Ops
93 | Our focus is on the declaration of immutable artifacts that are secured, and provide digital signatures for validation and verification using GPG. We provide our offering separate from Helm via a CLI (Command Line Interface) that will ask you a series of initialization questions, and through your answers deploy a `.stack` definition locally for local testing.
94 |
95 | ## Testing the API
96 | We provide an indivdual language module for each transformation or integration test, this allows for each module to be public and open source in any language (that supports Git workflows), while still providing the flexibility to run locally. It also ensures that modules are versioned and immutable. As you develop your `.stack` file, you can utilize interactive examples that we provide and browse our documentation at [stackStandard.com](https://stackstandard.com) (will be launched by Feb 15th 2021).
97 |
98 | ## Publishing to your Helm chart
99 | Our CLI will update your existing SSI with conformance standards when tests succeed through our API. You can optionally have our CLI add in your stack definition to the Helm chart itself as YAML declarations, but this is not required. This can be highly useful for distributed applications that want to resell and conform to the FSDL. It is also very useful for UI theme, and other types of distributions where the stack needs to be modified idempotently.
100 |
101 | ## Idempotence and Language Support
102 | Right now we are focusing early adoption of just one language: ES6+ for Node.js stacks. In the near future we will be establishing this FSDL in a way that is language agnostic and supports multiple SDKs. We've planned for it, we just can't execute with at least 100 early adopters for each language.
103 |
104 | ## FSDL Privacy
105 | For some use cases where the stack has been modified to work with on-premise or private 3rd party software systems, it may be best to keep the stack definition private. We adhere to a standard that provides both options. See [StackStandard](https://stackstandard.com) for more details. (Launching January 15th 2021)
106 |
107 | # What does DSL describe?
108 | The DSL is actually a querying meta-language that looks much like javascript and/or string literals, just with additional capabilites. It is designed to make it as simple as possible to "ask" for a behavior based on a specific set of conditions and return a "result-as-code" (RAC) response. The responses are stored as Docker containers that are digitally signed, and distributed using NPM as a generic loader that can be easily re-used as individual NPM modules. This allows you to run everythign locally, and at CICD time, with the added benefit of 3rd party auditing (our service) whenever CICD builds are triggered.
109 |
110 | # Loading your repo
111 |
112 | ## Example Monorepo for Authors of multiple packages that want to use the Gitops.Systems (Gsys) and Fullstack DSL (FDSL) for CICD workflows (i.e.- Gitlab AutoDevOps or Github Actions):
113 | ```bash
114 | $ / package.json
115 | {
116 | "install:verify": "cd projects/verification && npx yarn-recursive", // runs tooling package build for encryption and docker manipulation
117 | "install:cli-all": "cd projects/cli-all && npx yarn-recursive", // runs yarn to build via npx the CLI and all supported plugins
118 | "install:PKG": "cd projects/PKG && npx yarn-recursive && \
119 | ln -s ./PKG ___INSTALL_YOUR_PACKAGES_HERE && \
120 | npx @fdsl/verify", // verify all of your own supported packages
121 | "postinstall": "npx yarn gsys && ln -s ./.bin/gsys gsys; gsys verify --recursive" // run verification from the gsys CLI
122 | }
123 | ```
124 | ## Building a Monorepo:
125 | ```bash
126 | npx yarn-run-all
127 | ```
128 |
129 | ## Example package contained in the directory of your choice:
130 | ```bash
131 |
132 | $ cat package.json | npx gsys publish behavior
133 | {
134 | "name": "@GlobalDeveloperNetwork/module",
135 | "description": "test-behavior",
136 | "version": "1.0.1",
137 | "author": "Full Stack Engine, LLC",
138 | "bin": {
139 | "gsys": "./bin/run load --with-tests=false ${CONDITION}"
140 | },
141 | "devDependencies": {
142 | "@gsys/loader": "^1.5.9",
143 | "gsys": "^1.1.0"",
144 | "dockerode": "^3.2.1"
145 | }
146 | }
147 | ```
148 |
149 | All results are digitally signed and encrypted by DCT using a private and public key pair that can verify author authenticity.
150 | The docker images can be [created by Node](https://www.npmjs.com/package/dockerode), since this is the first language we are focusing on support for.
151 |
152 | ---
153 |
154 | # Legal CYA
155 |
156 | Some portions of this repo are from the [CrateKube project](https://github.com/cratekube/cratekube), i.e.- the architectural standards, which is now deprecated by Cisco.
157 | - The code is deprecated and non-licensed, so we are resurrecting some portions of the project for our CLI.
158 | - This has been checked by our legal team and we are compliant with all applicable laws.
159 |
160 | ___
161 |
162 | > Questions or concerns about content provided by our service? We are DMCA compliant, so if you do have questions that need to be addressed, please contact our [legal](mailto:legal@large.marketing) staff directly.
163 |
164 |
165 | # Current Sponsors
166 |
167 |
168 |
169 |
170 |
171 | |
172 |
173 |
174 | |
175 |
176 |
177 | |
178 |
179 |
180 | |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 | # License Notice
189 |
190 | ___
191 | Copyright 2021. Global Developer Network (GDN).
192 | 110 Corcoran street, Durham, NC 27701. USA.
193 |
194 | Licensed under the Apache License, Version 2.0 (the "License");
195 | you may not use this file except in compliance with the License.
196 | You may obtain a copy of the License at
197 |
198 | http://www.apache.org/licenses/LICENSE-2.0
199 |
200 | Unless required by applicable law or agreed to in writing, software
201 | distributed under the License is distributed on an "AS IS" BASIS,
202 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
203 | See the License for the specific language governing permissions and
204 | limitations under the License.
205 |
206 |
214 |
--------------------------------------------------------------------------------