Giter Club home page Giter Club logo

puppet-rfc's Introduction

Puppet RFC

Puppet RFC Repository

This repository contains Puppet RFCs, which are "Requests For Comments" in the tradition of the IETF RFC process. They are proposals to enhance / add features to Puppet or something in the Puppet ecosystem. This is a community-focused process intended to improve openness and transparency in both Puppet Labs-funded and contributor efforts. For details, please read PRFC-0, which describes the rationale and process.

Historical note

From their introduction in 2013 until a renaming/reboot in mid-2015, the process and artifacts were called "Armatures", abbreviated to "ARMs". While the git repository and all current documentation are updated, it's possible you will see references to the old name in immutable artifacts like mailing list threads, bug tracker tickets, etc.

Index of PRFCs

PRFC Title Description Revision Date State
0 Meta-RFC Describes the Puppet RFC process itself 1.0.0 March 26, 2013 Completed
1 Templates Templates for creating a new Puppet RFC 1.0.0 March 26, 2013 Completed
2 Iteration Add iteration to the Puppet Language 2.0.0 Oct 24, 2013 Completed
3 Puppet Templates Add support to write templates in the Puppet Language 1.0.0 May 1, 2013 Submitted
Discuss
4 Heredoc Add support for Heredoc feature to Puppet Language 2.0.0 April 23, 2013 Submitted
Discuss
5 Structured Facts Implementation of structured facts in Facter 0.0.1 February 25, 2013 Draft
6 Puppet Capabilities Support cross-host application management and monitoring 1.0.0 February 20, 2013 Draft
7 Puppet Types Express Puppet Types in the Puppet DSL 0.0.0 February 26, 2013 Draft
8 Puppet Bindings Unified dependency injection framework for Puppet 0.0.1 June 1, 2013 Draft
Discuss
9 Data in Modules Focused specification for providing Hiera data in Puppet Modules 0.0.2 Aug 16, 2013 Draft
10 Additional Node Scope Add a level of scope for nodes 0.0.0 March 1, 2013 New
11 Execution Model Describe a next-gen execution model for Puppet 0.0.2 March 22, 2013 New
12 Star Resource Data Format Adds new resource data format to describe a resource without automatically declaring it 0.0.1 April 1, 2013 New
13 SSL Behaviour Describe Puppet's use of SSL, configuration options, and best practices. 0.0.1 April 17, 2013 New
14 Managing System Reboots Describe Puppet's ability for managing system reboots. 0.0.1 April 17, 2013 New - Discuss
15 Master to Produce Meaningful Status Messages Allow administrators and/or the master process itself to update the status response when /production/status/no_key is hit so that proper load balancer support can be achieved. 0.0.1 August 21, 2013 New - Discuss
16 Managing ACLs (Access Control Lists) Describe Puppet's ability for managing access control lists. 0.0.1 October 25, 2013 New - Discuss
17 Lambda Case Option Add ability to use a lambda as case option for advanced matching. (See PUP-4193) 0.0.0 - New. Discuss TBD
18 Ignored Parameter The work is to compare how variables like this is used in other languages and how this can be applied/made useful in the Puppet Language. (See PUP-4193) 0.0.0 - New. Discuss TBD
19 Direct Evaluation of Resource Instantiation Current behavior makes it very difficult for users to reason about evaluation order; this work aims to fix that. 0.0.1 - New. Discuss TBD
20 Iteration Control The idea is to specify the semantics for two functions: break(val = undef), and next(val=undef) that enables control of iteration. 0.0.1 - New. Discuss TBD
21 PowerShell Desired State Configuration (DSC) Puppet should support integration with PowerShell DSC as a supported module. LINK EPIC 0.0.1 - New. Discuss TBD
22 HTTP Authorization Framework Clojure-based implementation of HTTP Authorization system 1.0 2015-09-15 Posted - puppet-dev thread
23 XPP - Exchangeable Puppet Files XPP eXchangeable puPPet defines now the native parser can parse and validate PP files for evaluation by the Ruby runtime 1.0 2016-05-25 Posted - puppet-dev thread
24 Facter Config File A config file for facter, providing runtime settings 1.0 2016-05-24 Posted - puppet-dev thread

puppet-rfc's People

Contributors

benjfield avatar djmitche avatar ferventcoder avatar hlindberg avatar hunner avatar iristyle avatar jdwelch avatar joshcooper avatar jpartlow avatar magisus avatar nfagerlund avatar novakv avatar wfarr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puppet-rfc's Issues

Identifier request: Lambda Case Option

The ticket PUP-4193 is a bout pattern matching support in the Puppet Language. At first the ability to use a lambda as a case option was added to Puppet, but later (in the same ticket) reverted for the purpose of first being described and discussed.

This is a request to get an identifier for this work.

Identifier Request for XPP

XPP is a file format that allows puppet manifests to be pre-parsed and pre-validated before being used at runtime to compile a catalog. XPP also serves as an interchange format between different platforms; for example a C++ implementation of the parser, and the Ruby runtime.

Identifier Request: Iteration Control

There is currently no way to control the iteration in the Puppet Language as there are no mechanisms to cause an early exit, or skipping an iteration from an iterative functions lambda.

The idea is to specify the semantics for two functions: break(val = undef), and next(val=undef) that enables control of iteration.

Legal stuff - Copyright, License etc. missing

There needs to be legal information somewhere. License, Copyrights, etc.
When contributing what have you signed up for / what is it you are giving away.
Who may use the ideas, and for what purpose, etc.

Identifier Request: Direct Evaluation of Resource Instantiation

Currently, resources are instantiated in a lazy fashion when compiling a catalog. That is, a resource expression evaluation is (almost) partially evaluated (it binds arguments to parameters, but not efault values). The partially evaluated instantiation is queuedand the queue is processed in order when there is no more directly evaluated logic to evaluate.

This behavior makes it very difficult for users to reason about "evaluation order". The reasons for keeping the behavior are:

  • the amount of breakage a change would cause
  • very deep loops constructed with resource instantiation could overflow the stack (avoided by queuing)

The reasons for changing this are:

  • Makes reasoning about evaluation order much easier (resources behave as non parameterized classes do today)
  • There is no difference between a parameterized class (done as a resource) and a class include
  • Enables clean up of logic that now jumps through hoops to ensure logic is evaluated after the body of a given resource.
  • Removes one requirement (to keep the same order of evaluation) when refactoring catalog building

Describe how to comment

We need to describe how someone is supposed to comment.

  • To arm-0 and arm-1
  • To other ARMs

Suggest:

For arm 0 and 1, either do a PR with a fix (and comment there), or log an issue (a reference URL to the location in text is always helpful).

For other ARMs, the comments should really be directed to the repo where the work is being done. That repo should have an issue tracker turned on, and have labels with arm name-number (e.g. I would have arm-2-iteration as a label in my fork).

Identifier request: Module Namespace

Modules could leverage their given namespace to distinguish on one publisher's module from another and be imported based on that namespace.

Example use cases include separating the postgresql module used by PE from a general-use module, or extending a given foo-mysql module with bar-mysql that adds defines, classes, or types without conflicting over the 'mysql' module name.

Endorsements/Approvals

If we want to keep track of endorsements/approvals we could use signed tags. It may be difficult when the master project contains all ARMs -not investigated. An alternative is also to have ARMs ultimate approval/endorsement be controlled by a redmine issue.

ARM-8 - wat?

As stated in the spec

Why should this work be done? What are its benefits? Who's asking for it? How does it compare to the competition, if any?

I'd really like to see some answers to these questions. This spec seems like a extremely complex solution to a problem that doesn't exist.

a user may wish long for the perceived "simpler times"

Yeah...

Possible meta data additions:

[yanked from arm-0]

  • Startdate
  • Template/Pep version
  • Creation date (is perhaps already defined by looking at git data)
  • Author / Organization (is perhaps already defined by using git)
  • Associated issues this ARM will address (fix)

Add state and version to the index in root README

It is good to be able to see the state and version of the various proposals.

Propose that the README.md has the list of ARMs in a table where version and state is displayed.

We need suitable states - propose that the version indicates the state (where X indicates number > 0):

  • 0.0.0 - 0.0.X, initial (nothing there yet, please do not start commenting yet)
  • X.0.X - X.X.X draft (being worked on, comments welcome, but not ready for evaluation/review/decision)
  • X.0.0, review (open for comments/review)

Table also needs two dates:

  • when version was published (this is kind of hard to figure out; you need to go to the ARM and look at all of the files)
  • when the next draft/review version is planned to be due (useful for someone that is interested in a proposal - engage now, or wait for the next version).

The intent is that someone that publishes a new version updates the master index in the same PR.

Set up Issue Labels suitable for ARM repo

"Bug" does not seem to fit, the other are ok although "Enhancement" is kind of confusing - enhance what. Suggest we use something more suitable to text and process; such as "wrong", "unclear", "missing"

Need one that represents "Please give me an ARM-number". Suggest "arm-request" (to get arm number, and similar issues).

Identifier Request: Ignored Parameter

In PUP-4193, the value of having an "anonymous"/"ignored" parameter named _ is discussed. The intended use is as a variable name. When assigned, it is simply skipped. This is useful in a lambda where the function feeds values into the lambda that are not going to be used, and (as discussed in PUP-4193) as a wildcard in pattern matching.

The work is to compare how variables like this is used in other languages and how this can be applied/made useful in the Puppet Language.

Clarify how to use the templates in ARM-1

The current index.md of ARM-1 states that it is templates, but doesn't give clear steps on how to use them. The text should be updated to indicate the expected way of using the templates that it provides.

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.