-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC for steps to move to Refract 1.0 #13
Open
smizell
wants to merge
5
commits into
master
Choose a base branch
from
smizell/refract-1.0
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
d0a68e3
RFC for steps to move to Refract 1.0
smizell 77a6f81
Rename version to 1.0.0
smizell c7caa20
Add comment about creating separate repos for namespaces
smizell 743443c
Update per current state of RFCs and spec.
smizell e8a3629
Update 1.0.0 RFC
smizell File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
- Start Date: 2015-08-29 | ||
- RFC PR: (leave this empty) | ||
- Refract Issue: (leave this empty) | ||
|
||
# Summary | ||
|
||
The document provides some thoughts on how we can move forward to version 1.0.0 of Refract. This document is not proposing we move to 1.0.0 immediately, but to rather start putting steps in place to get us there quickly and being intentional about it. | ||
|
||
# Motivation | ||
|
||
As Refract is moving into production environments, we need to keep the following in mind: | ||
|
||
1. We want to have as a concise of a spec as necessary for newcomers | ||
1. We want to introduce breaking changes thoughtfully, which is what SemVer encourages. We currently can't do SemVer correctly without moving to 1.0.0. | ||
1. We want to start registering media types for Refract representations | ||
1. Moving this to production means people are actually going to start using this spec in the wild, and we need to prepare for feedback | ||
|
||
With this in mind, I'd like to start now thinking through the steps on how to prepare. This design outlines some small steps. Additionally, this document is open to additional suggestions in what we can do. | ||
|
||
# Detailed design | ||
|
||
## Versioning Namespace Documents | ||
|
||
In addition to moving to 1.0.0, we need to actually start versioning namespace documents. The reason for this is that we do not want a breaking change in a namespace to require a major version bump for the entire spec. | ||
|
||
**Proposal**: Move all current namespaces to API Elements project. | ||
|
||
## [Resolved] Namespace Functionality | ||
|
||
**This has been resolved by [RFC 0011](https://github.com/refractproject/rfcs/blob/master/text/0011-remove-namespacing.md)** | ||
|
||
The one area of Refract that we have not implemented in our implementations is namespaces. Currently, the design of namespaces mimics that of XML, but the way we have implemented it does not follow. In Refract, each element can have its own lexically-scoped elements as defined in its own namespace. This allows for namespaces to be defined and used deep within a data structure. | ||
|
||
Our implementations have diverted from this concept, and are rather relying on the document itself to define the elements includes. We still have namespaces, but the namespaces are not scoped within elements inside the document and are not explicitly defined in the documents. | ||
|
||
In order to get to 1.0.0, we need to think about whether we want to leave these kinds of things in the spec and change to them, or if we want to align the spec with what we've practically done. | ||
|
||
## Separating Out Serialization Formats | ||
|
||
An important concept of Refract is that it is a model for representing data structures and is not a JSON format. With that said, we do have two current formats as defined in the spec, and all examples in the spec use one of these formats. | ||
|
||
This decoupling I think is important, because it gives freedom to implementors to implement the best way they see fit in their language/platform, and it allows for other serialization formats to spring up that may be helpful to others. | ||
|
||
**Proposal**: Explain the difference in the conceptual model and the serialization formats, and create serialization guidelines for full Refract. | ||
|
||
## Inheritance | ||
|
||
Inheritance can be handled differently depending on the context in which the element is found. This shows up in how we handle inheritance within the data structure elements (now in API Elements). | ||
|
||
**Proposal**: Explain inheritance in some way, either in the base specification or through some type of guidelines document. | ||
|
||
# Drawbacks | ||
|
||
This could be considered to be premature. I am open to that discussion, and also to the idea of doing some of the things outlined above without having 1.0.0 in mind. | ||
|
||
# Alternatives | ||
|
||
We can extend the time we spend in pre-1.0.0 days. | ||
|
||
# Unresolved questions | ||
|
||
This document does not specifically address how we define namespaces, only to start the discussion on what to do about them. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with this being premature. We should let the spec evolve rather than trying to force 1.0.0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a note, I'm proposing we try to be intentional and determine steps we need to get to 1.0.0. I think we are actually a ways off from getting there though and not proposing we do it immediately.
Even if a step is allow for this to be in production for a bit, I'm good with that. Just wanting us to think what the steps would be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍