Date   

Free set of 3 courses on “Secure Software Development Fundamentals” now available!

David Wheeler
 

All: There is now a *free* set of 3 courses on how to develop secure software, titled “Secure Software Development Fundamentals”.

I wrote it, with lots of comments & help from others. Special thanks go to Yannick Moy, who also translates the
CII Best Practices badge work into French!

The plan is to add a link from the “details” of the CII Best Practices badge to the course.
You do *NOT* need to take that course to get a badge, but we try to provide helpful links for people,
and I think this is a useful link. See: https://github.com/coreinfrastructure/best-practices-badge/pull/1505

The set of 3 courses is available on edX here:
https://www.edx.org/professional-certificate/linuxfoundationx-secure-software-development-fundamentals
If you want, you can also pay to take tests to earn a certificate & show that you learned the material
(that's how edX keeps running).

Please let others know about this set of courses. The price is hard to beat, and we really want more people
to learn how to develop secure software.

--- David A. Wheeler


Projects that received badges (monthly summary)

badgeapp@...
 

This is an automated monthly status report of the best practices badge application covering the month 2020-10.

Here are some selected statistics for most recent completed month, preceded by the same statistics for the end of the month before that.

Ending dates2020-09-292020-10-30
Total Projects33883453
In Progress Projects 25%+13251363
In Progress Projects 50%+10951129
In Progress Projects 75%+893918
In Progress Projects 90%+689712
Passing Projects472487
Passing Projects, 25%+ to Silver173179
Passing Projects, 50%+ to Silver115121
Passing Projects, 75%+ to Silver7477
Passing Projects, 90%+ to Silver3132
Silver Projects1717
Silver Projects, 25%+ to Gold119124
Silver Projects, 50%+ to Gold2931
Silver Projects, 75%+ to Gold1313
Silver Projects, 90%+ to Gold77
Gold Projects77

Here are the projects that first achieved a Passing badge in 2020-10:

  1. paypayopa-sdk-python at 2020-10-01 10:46:22 UTC
  2. CCTag at 2020-10-02 13:09:49 UTC
  3. PopSift at 2020-10-02 14:08:32 UTC
  4. paypayopa-sdk-node at 2020-10-07 05:38:49 UTC
  5. pagy at 2020-10-08 15:45:41 UTC
  6. octant at 2020-10-15 23:40:17 UTC
  7. asymptote-glg-contrib at 2020-10-20 11:03:19 UTC
  8. Tremor Event Processing System at 2020-10-21 10:11:40 UTC
  9. couler at 2020-10-22 01:01:19 UTC
  10. Warnings plugin at 2020-10-26 14:11:03 UTC
  11. translator-openpredict at 2020-10-27 23:12:19 UTC
  12. gochk at 2020-10-29 15:12:25 UTC

We congratulate them all!

Do you know a project that doesn't have a badge yet? Please suggest to them that they get a badge now!


Dan Kohn has died

David Wheeler
 

All:

I must bring you the sad news that Dan Kohn has died.

Dan was a pioneer who helped many people. Among many other things, he oversaw the explosive growth of the Cloud Native Computing Foundation (CNCF) as director and founded The Linux Foundation Public Health Initiative (LFPH). His Wikipedia page mentions some other achievements, such as the “first secure commercial transaction on the web”, but that page only scratches the surface: https://en.wikipedia.org/wiki/Dan_Kohn

Dan was instrumental in founding the Core Infrastructure Initiative (CII) & the CII Best Practices Badge. You’ll find his name all over the badging work, indeed, he approved a change just 18 days ago.

Dan will be sorely missed.

--- David A. Wheeler


Re: Plan to modify assurance case format (more claims, use SACM notation) - any thoughts?

Kevin W. Wall
 

Other than describing the SACM's ArgumentReasoning symbol as a "half-rectangle", I have no objections. (A "half-rectangle" is also itself a rectangle, so I think some alternate description would be better. Indeed, in certain cases people might even think "square".)

For those playing along at home, this is the symbol David is referring to:

image.png
I think "open rectangle" would be a little better, but there probably is some formal name for this. (Anyone know?)

Overall, I think the notation is similar in flavor to (i.e., has the look and feel) of UML diagrams, so perhaps a UML drawing tool would work better than Libre Draw. Long ago (at a different job) I used both Dia and Umbrello and they were acceptable, but according to this (https://www.linuxlinks.com/best-free-unified-modeling-software/) there are some better choices. Eclipse also has some UML plugins that might work.

So, FWIW, no objections from me.
-kevin

On Wed, Oct 21, 2020 at 7:59 PM David Wheeler <dwheeler@...> wrote:
For the BadgeApp we include an “assurance case”, that is, a set of claims/arguments/evidence explaining why we think it’s secure. You can see the assurance case here:

Some folks at MITRE have been reviewing our assurance case. My thanks - reviews make things better! Two overall suggestions have been made:
1. Use nested claims instead of nested arguments. Claims are simple true/false statements, so this change should make the material easier to follow.
2. Switch to the new SACM graphical notation instead of the older CAE graphical notation. CAE is more common, but SACM notation has many advantages.

I think these are good ideas & I currently plan to implement them over time. We want the assurance case to be maximally clear. I also want its assurance case to be potentially easy to use by others as a starting point (many assurance cases aren’t public, making them hard to learn from).

However, before committing to them, please let me/us know if there are any objections / concerns. If this is a bad idea, I don’t want to do it :-).

Details below.

--- David A. Wheeler


=== DETAILS ===

Up to this point we’ve used claims/argument/evidence (CAE) notation, which is wonderfully simple. Claims (including subclaims) are ovals, arguments are rounded rectangles, evidence (references) are rectangles. You can see its definition here:

Object Management Group (OMG) Structured Assurance Case Metamodel (SACM) specification here:
Historically this specification has worried about defining a standard interchange format for assurance case data. We aren’t trying to exchange with others, and I don’t know of any mature OSS tools that directly support the SACM data format, so this specification hasn’t been focused on a problem we’re trying to solve. However, the newest version of SACM has a new graphical notation. Claims (including subclaims) are rectangles, ArgumentReasoning (aka arguments) are half-rectangles, and evidence are shadowed rectangles. In addition, it uses “big dots” on connections.

Here’s a fragment of our assurance case in CAE graphical notation, including evidence symbols (we often suppress them due to space limitations):

Here’s the same fragment using SACM graphical notation (really a simplified subset of SACM):


Here are advantages of the SACM graphical notation over CAE’s graphical notation:

1. CAE Claim vs. SACM Claim. CAE uses ovals, while SACM uses rectangles. SACM has a *BIG* win here: Rectangles use MUCH less space, so complex diagrams are much easier to create & easier to understand.
2. CAE Argument vs. SACM ArgumentReasoning. CAE uses rounded rectangles, while SACM uses a shape I’ll call a "half-rectangle”. CAE’s rounded rectangles are not very distinct from its evidence rectangles, which is a minor negative for the CAE notation. SACM initially presented some challenges when using our drawing tool (LIbreOffice Draw), but I overcame them:
  - SACM’s half-rectangle initially presented me with a problem: that is *NOT* a built-in shape for the drawing tool I’m using (LIbreOffice Draw). I suspect it’s not a built-in symbol in many tools. I was able to work around this by creating a polygon (many drawing tools support this, and this is a very easy polygon to make). It took a little tweaking, but I managed to create a simple polygon with embedded text. In the longer term, the SACM community should work to get this easy icon into other drawing tools, to simplify its use.
  - SACM’s half-rectangle is VERY hard to visually distinguish if both it & claims are filled with color. I use color fills to help the eye notice type differences. My solution was simple: color fill everything *except* the half-rectangle; this makes them all visually distinct.
3. CAE Evidence vs. SACM ArtifactReference. In CAE this is a simple rectangle. In SACM this is a shadowed rectangle with an arrow; the arrow is hard to add with simple drawing tools, but the shadow is trivial to add with a “shadow” property in LibreOffice (and many other drawing tools), and I think just the shadow is adequate. The shadow adds slightly more space (but MUCH less than ovals), and it takes a moment to draw by hand, but I think that’s a reasonable trade-off to ensure that they are visually distinct. In addition: I tend to record evidence / ArtifactReferences in *only* text, not in the diagrams, because diagrams are time-consuming to maintain. So making *claims* simple to draw, and making evidence/ArtifactReferences slightly more complex to draw, is exactly the right tradeoff.
4. Visual distinctiveness. In *general* the CAE icons for Claim/Argument/Evidence are not as visually distinct as SACM’s Claim/ArgumentReasoning/ArtifactReference, especially when they get shaped to the text contents. That’s an overall advantage for the SACM graphical notation.
5. SACM’s “bigdot”. The bigdot, e.g., in AssertedInference, make the diagrams simpler by making it easy to move an argument / ArgumentReasoning icon away from the flow from supporting claims/evidence to a higher claim. You could also informally do that with CAE, but it’s clearly a part of SACM. In the SACM (like?) diagrams I’ve drawn I’ve omitted the bigdot in some cases, which may not be strictly compliant. I’m not sure how important that is, although I guess one advantage of “bigdot” is that it makes it much easier to add an ArgumentReasoning later.

Nothing is perfect. One problem with SACM’s ArgumentReasoning symbol - a half-rectangle - is that while it’s easy to connect on the left/top/bottom, it’s someone unclear when trying to connect from its bare right-hand-side. A simple solution is to prefer to put them on the right-hand-side. I wish they’d chosen another symbol that was still clearly distinct from the others, easy to hand-draw, already available in simple drawing tools, and did not take a lot of extra space. For example, they could have chosen an uneven pentagon (“pointer”) or callout symbol (with the little tail). But that’s a nit, it’s still an improvement & I try to use standard symbols when it’s reasonable to do so.



--
Blog: http://off-the-wall-security.blogspot.com/    | Twitter: @KevinWWall
NSA: All your crypto bit are belong to us.


Plan to modify assurance case format (more claims, use SACM notation) - any thoughts?

David Wheeler
 

For the BadgeApp we include an “assurance case”, that is, a set of claims/arguments/evidence explaining why we think it’s secure. You can see the assurance case here:

Some folks at MITRE have been reviewing our assurance case. My thanks - reviews make things better! Two overall suggestions have been made:
1. Use nested claims instead of nested arguments. Claims are simple true/false statements, so this change should make the material easier to follow.
2. Switch to the new SACM graphical notation instead of the older CAE graphical notation. CAE is more common, but SACM notation has many advantages.

I think these are good ideas & I currently plan to implement them over time. We want the assurance case to be maximally clear. I also want its assurance case to be potentially easy to use by others as a starting point (many assurance cases aren’t public, making them hard to learn from).

However, before committing to them, please let me/us know if there are any objections / concerns. If this is a bad idea, I don’t want to do it :-).

Details below.

--- David A. Wheeler


=== DETAILS ===

Up to this point we’ve used claims/argument/evidence (CAE) notation, which is wonderfully simple. Claims (including subclaims) are ovals, arguments are rounded rectangles, evidence (references) are rectangles. You can see its definition here:

Object Management Group (OMG) Structured Assurance Case Metamodel (SACM) specification here:
Historically this specification has worried about defining a standard interchange format for assurance case data. We aren’t trying to exchange with others, and I don’t know of any mature OSS tools that directly support the SACM data format, so this specification hasn’t been focused on a problem we’re trying to solve. However, the newest version of SACM has a new graphical notation. Claims (including subclaims) are rectangles, ArgumentReasoning (aka arguments) are half-rectangles, and evidence are shadowed rectangles. In addition, it uses “big dots” on connections.

Here’s a fragment of our assurance case in CAE graphical notation, including evidence symbols (we often suppress them due to space limitations):

Here’s the same fragment using SACM graphical notation (really a simplified subset of SACM):


Here are advantages of the SACM graphical notation over CAE’s graphical notation:

1. CAE Claim vs. SACM Claim. CAE uses ovals, while SACM uses rectangles. SACM has a *BIG* win here: Rectangles use MUCH less space, so complex diagrams are much easier to create & easier to understand.
2. CAE Argument vs. SACM ArgumentReasoning. CAE uses rounded rectangles, while SACM uses a shape I’ll call a "half-rectangle”. CAE’s rounded rectangles are not very distinct from its evidence rectangles, which is a minor negative for the CAE notation. SACM initially presented some challenges when using our drawing tool (LIbreOffice Draw), but I overcame them:
  - SACM’s half-rectangle initially presented me with a problem: that is *NOT* a built-in shape for the drawing tool I’m using (LIbreOffice Draw). I suspect it’s not a built-in symbol in many tools. I was able to work around this by creating a polygon (many drawing tools support this, and this is a very easy polygon to make). It took a little tweaking, but I managed to create a simple polygon with embedded text. In the longer term, the SACM community should work to get this easy icon into other drawing tools, to simplify its use.
  - SACM’s half-rectangle is VERY hard to visually distinguish if both it & claims are filled with color. I use color fills to help the eye notice type differences. My solution was simple: color fill everything *except* the half-rectangle; this makes them all visually distinct.
3. CAE Evidence vs. SACM ArtifactReference. In CAE this is a simple rectangle. In SACM this is a shadowed rectangle with an arrow; the arrow is hard to add with simple drawing tools, but the shadow is trivial to add with a “shadow” property in LibreOffice (and many other drawing tools), and I think just the shadow is adequate. The shadow adds slightly more space (but MUCH less than ovals), and it takes a moment to draw by hand, but I think that’s a reasonable trade-off to ensure that they are visually distinct. In addition: I tend to record evidence / ArtifactReferences in *only* text, not in the diagrams, because diagrams are time-consuming to maintain. So making *claims* simple to draw, and making evidence/ArtifactReferences slightly more complex to draw, is exactly the right tradeoff.
4. Visual distinctiveness. In *general* the CAE icons for Claim/Argument/Evidence are not as visually distinct as SACM’s Claim/ArgumentReasoning/ArtifactReference, especially when they get shaped to the text contents. That’s an overall advantage for the SACM graphical notation.
5. SACM’s “bigdot”. The bigdot, e.g., in AssertedInference, make the diagrams simpler by making it easy to move an argument / ArgumentReasoning icon away from the flow from supporting claims/evidence to a higher claim. You could also informally do that with CAE, but it’s clearly a part of SACM. In the SACM (like?) diagrams I’ve drawn I’ve omitted the bigdot in some cases, which may not be strictly compliant. I’m not sure how important that is, although I guess one advantage of “bigdot” is that it makes it much easier to add an ArgumentReasoning later.

Nothing is perfect. One problem with SACM’s ArgumentReasoning symbol - a half-rectangle - is that while it’s easy to connect on the left/top/bottom, it’s someone unclear when trying to connect from its bare right-hand-side. A simple solution is to prefer to put them on the right-hand-side. I wish they’d chosen another symbol that was still clearly distinct from the others, easy to hand-draw, already available in simple drawing tools, and did not take a lot of extra space. For example, they could have chosen an uneven pentagon (“pointer”) or callout symbol (with the little tail). But that’s a nit, it’s still an improvement & I try to use standard symbols when it’s reasonable to do so.


Re: Rate limits for non-badge-image requests

Kate Stewart
 

Adding Sean to this thread, as CHAOSS risk metrics have a dashboard
that uses the CII badge information.

Sean - any impact expected from your perspective?

Thanks, Kate

On Thu, Oct 1, 2020 at 7:30 PM David Wheeler
<dwheeler@...> wrote:

Some overeager people are trying to spider the entire best practices site all at once. This can cause trouble for everyone else. Our current rate limits don’t trigger soon enough, because they cover *all* requests, and we can handle many badge image requests.

So I propose adding a new rate limit for anything OTHER than badge images & static files. Details here:
https://github.com/coreinfrastructure/best-practices-badge/issues/1475
https://github.com/coreinfrastructure/best-practices-badge/pull/1478

The default rate limit I’m proposing is up to 15 requests every 15 seconds. That short time window will let us detect, far more quickly, when someone is making too many requests at once. It could be different, e.g., 30 requests / 15 seconds or 20 requests / 10 seconds. Recommendations welcome. The goal is to make it invisible to “normal” users, but stop abuses quickly.

I’d especially like to hear from anyone whose dashboard might be negatively impacted. If you just serve CII badge images it shouldn’t impact you at all.

If we use the CDN to serve the JSON data about individual projects we could exclude that as well, but that would be a different change.

--- David A. Wheeler




Rate limits for non-badge-image requests

David Wheeler
 

Some overeager people are trying to spider the entire best practices site all at once. This can cause trouble for everyone else. Our current rate limits don’t trigger soon enough, because they cover *all* requests, and we can handle many badge image requests.

So I propose adding a new rate limit for anything OTHER than badge images & static files. Details here:
https://github.com/coreinfrastructure/best-practices-badge/issues/1475
https://github.com/coreinfrastructure/best-practices-badge/pull/1478

The default rate limit I’m proposing is up to 15 requests every 15 seconds. That short time window will let us detect, far more quickly, when someone is making too many requests at once. It could be different, e.g., 30 requests / 15 seconds or 20 requests / 10 seconds. Recommendations welcome. The goal is to make it invisible to “normal” users, but stop abuses quickly.

I’d especially like to hear from anyone whose dashboard might be negatively impacted. If you just serve CII badge images it shouldn’t impact you at all.

If we use the CDN to serve the JSON data about individual projects we could exclude that as well, but that would be a different change.

--- David A. Wheeler


Projects that received badges (monthly summary)

badgeapp@...
 

This is an automated monthly status report of the best practices badge application covering the month 2020-08.

Here are some selected statistics for most recent completed month, preceded by the same statistics for the end of the month before that.

Ending dates2020-07-302020-08-30
Total Projects33093351
In Progress Projects 25%+12921312
In Progress Projects 50%+10701086
In Progress Projects 75%+875886
In Progress Projects 90%+666680
Passing Projects459464
Passing Projects, 25%+ to Silver166169
Passing Projects, 50%+ to Silver112114
Passing Projects, 75%+ to Silver7273
Passing Projects, 90%+ to Silver3131
Silver Projects1616
Silver Projects, 25%+ to Gold114115
Silver Projects, 50%+ to Gold2728
Silver Projects, 75%+ to Gold1313
Silver Projects, 90%+ to Gold77
Gold Projects77

Here are the projects that first achieved a Passing badge in 2020-08:

  1. taquito at 2020-08-04 23:03:03 UTC
  2. Eclipse Steady at 2020-08-14 09:36:40 UTC
  3. ludwig at 2020-08-16 18:00:30 UTC
  4. egeria at 2020-08-20 09:29:41 UTC
  5. rcosmo at 2020-08-24 04:35:51 UTC
  6. shortlink at 2020-08-24 08:25:12 UTC

We congratulate them all!

Do you know a project that doesn't have a badge yet? Please suggest to them that they get a badge now!


Proposed criteria introduction text

David Wheeler
 

All: Here's some proposed criteria introduction text.
Comments? It's lengthy, so I want to fix it up *before* our translators have
to deal with it.

The plan is to use this text to enable people to more easily see
all the criteria in *any* our supported natural languages.
People will be able to view "/criteria" on the BadgeApp and
see this (translated) introduction, and all the translated criteria.

--- David A. Wheeler

====

<h2 id='introduction'>Introduction</h2>
<p>
There is no set of practices that can <i>guarantee</i> that software
will never have defects or vulnerabilities.
Even formal methods can fail if the
specifications or assumptions are wrong.
Nor is there any set of practices that can guarantee that a project will
sustain a healthy and well-functioning development community.</p>
<p>
However, following best practices can help improve the results
of projects.
For example, some practices enable multi-person review before release,
which can both help find otherwise hard-to-find technical vulnerabilities
and help build trust and a desire for repeated interaction among
developers from different organizations.</p>
<p>
This page presents a set of best practices
for Free/Libre and Open Source Software (FLOSS) projects.
Projects that follow these best practices
will be able to voluntarily self-certify and show that they've
achieved the relevant
Core Infrastructure Initiative (CII) Best Practices badge.
Projects can do this, at no cost,
by using a web application (BadgeApp)
to explain how they meet these practices and their detailed criteria.</p>
<p>
These best practices have been created to:</p>
<ol>
<li>encourage projects to follow best practices,</li>
<li>help new projects discover what those practices are, and</li>
<li>help users know which projects are following best practices
(so users can prefer such projects).</li>
</ol>
<p>
The idiom "best practices" means
"a procedure or set of procedures that is preferred or considered
standard within an organization, industry, etc."
(source:
<a href="http://www.dictionary.com/browse/best-practice"
rel="nofollow">Dictionary.com</a>).
These criteria are what we believe are
widely "preferred or considered standard"
in the wider FLOSS community.</p>
For more information on how these criteria were developed,
see the <a
href="https://github.com/coreinfrastructure/best-practices-badge"
CII Best Practices badge GitHub site</a>.</p>
<p></p>
<h3 id='criteria_structure'>Criteria Structure</h3>
<p>
The best practices criteria are divided into three levels:<ul>
<li><b>Passing</b> focuses on best practices
that well-run FLOSS projects typically already follow.
Getting the passing badge is an achievement; at any one time
only about 10% of projects pursuing a badge achieve the passing level.
<li><b>Silver</b> is a more stringent set of criteria than passing but is
expected to be achievable by small and single-organization projects.
<li><b>Gold</b> is even more stringent than silver and includes
criteria that are not achievable by small or single-organization projects.
</ul>
<p>
Every criterion has a short name, shown below as superscripted
text inside square brackets.
<p></p>
<h3 id='criteria_other_projects'>Relationship to Other Projects</h3>
<p>
The Linux Foundation also sponsors the
<a href="https://www.openchainproject.org/"
rel="nofollow">OpenChain Project</a>, which
identifies criteria for a "high quality Free
and Open Source Software (FOSS) compliance program."
OpenChain focuses on how organizations can best use FLOSS and contribute
back to FLOSS projects, while the CII Best Practices badge
focuses on the FLOSS projects themselves.
The CII Best Practices badge and OpenChain work together to help
improve FLOSS and how FLOSS is used.</p>
<p>
<h3 id='criteria_automation'>Criteria Automation</h3>
<p>
In some cases we automatically test and fill in information
if the project follows standard conventions and
is hosted on a site (e.g., GitHub) with decent API support.
We intend to improve this automation in the future;
improvements are welcome!</p>
<p></p>
<h3 id='criteria_changes'>Changes over time</h3>
<p>
We expect that these practices and their detailed criteria will
be updated over time.
We plan to add new criteria but mark them as "future" criteria, so that
projects can add that information and maintain their badge.</p>
<p>
Feedback is <em>very</em> welcome via the
<a href="https://github.com/coreinfrastructure/best-practices-badge"
GitHub site as issues or pull requests</a>.
There is also a
<a href="https://lists.coreinfrastructure.org/mailman/listinfo/cii-badges"
rel="nofollow">mailing list for general discussion</a>.</p>
<p></p>
<h3 id='keywords'>Key words</h3>
<p>
The key words "MUST", "MUST NOT",
"SHOULD", "SHOULD NOT", and "MAY"
in this document are to be interpreted as described in
<a href="https://tools.ietf.org/html/rfc2119" rel="nofollow">RFC 2119</a>.
The additional term SUGGESTED is added.
In summary, these key words have the following meanings:</p>
<ul>
<li>The term MUST is an absolute requirement, and MUST NOT
is an absolute prohibition.</li>
<li>The term SHOULD indicates a criterion that is normally required,
but there may exist valid reasons in particular circumstances
to ignore it.
However, the full implications must be understood and carefully weighed
before choosing a different course.</li>
<li>The term SUGGESTED is used instead of SHOULD when the criterion must
be considered, but the valid reasons
to not do so are even more common than for SHOULD.</li>
<li>The term MAY provides one way something can be done, e.g.,
to make it clear that the described implementation is acceptable.</li>
</ul>
<p>
Often a criterion is stated as something that SHOULD be done, or is
SUGGESTED, because it may be difficult to implement or the costs
to do so may be high.</p>
<p></p>
<h3 id='criteria_achieving_badge'>Achieving a badge</h3>
<p>
To obtain a badge, all MUST and MUST NOT criteria must be met, all
SHOULD criteria must be either met OR unmet with justification, and
all SUGGESTED criteria have to be considered (it must be
rated as met or unmet, but justification is not required
unless noted otherwise).
An answer of N/A ("not applicable"), where allowed, is considered
the same as being met.
In some cases, especially in the higher levels,
justification and/or a URL may be required.</p>
<p>
Some criteria have special markings that influence this:<ul>
<li><b>{N/A allowed}</b> - "N/A" ("Not applicable") is allowed.
<li><b>{N/A justification}</b> - "N/A" ("Not applicable") is allowed
and requires justification.
<li><b>{Met justification}</b> - "Met" requires justification.
<li><b>{Met URL}</b> - "Met" requires justification with a URL.
<li><b>{Future}</b> - the answer to this criterion currently
has no effect, but it may be required in the future.
</ul>
<p>
A project must achieve the previous level to achieve the next level.
In some cases SHOULD criteria become MUST in higher level badges,
and some SUGGESTED criteria at lower levels become SHOULD or MUST
in higher level badges. The higher levels also require more
justification, because we want others to understand <i>how</i>
the criteria are being met.</p>
<p>
There is one implied passing criterion - every project MUST have
a public website with a stable URL. This is required to create
a badge entry in the first place.</p>
<p></p>
<h3 id='terminology'>Terminology</h3>
<p>
If you are not familiar with
software development or running a FLOSS project, materials such as
<a href="http://producingoss.com/"
rel="nofollow"><em>Producing Open Source Software</em>
by Karl Fogel</a> may be helpful to you.</p>
Here are a few key terms.
<p>
A <em>project</em> is an active entity that has
project member(s) and produces project result(s).
Its member(s) use project sites to coordinate and disseminate result(s).
A project does not need to be a formal legal entity.
Key terms relating to projects are:</p>
<ul>
<li>Project <em>members</em> are the
group of one or more people or companies who work together
to attempt to produce project results.
Some FLOSS projects may have different kinds of members, with different
roles, but that's outside our scope.</li>
<li>Project <em>results</em> are what the project members work together
to produce as their end goal. Normally this is software,
but project results may include other things as well.
Criteria that refer to "software produced by the project"
are referring to project results.</li>
<li>Project <em>sites</em>
are the sites dedicated to supporting the development
and dissemination of project results, and include
the project website, repository, and download sites where applicable
(see <a href="#sites_https">sites_https</a>).</li>
<li>The project <em>website</em>, aka project homepage, is the main page
on the world wide web (WWW) that a new user would typically visit to see
information about the project; it may be the same as the project's
repository site (this is often true on GitHub).</li>
<li>The project <em>repository</em> manages and stores the project results
and revision history of the project results.
This is also referred to as the project <em>source repository</em>,
because we only require managing and storing of the editable versions,
not of automatically generated results
(in many cases generated results are not stored in a repository).</li>
</ul>


--
--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


Rename route "/criteria"->"/criteria_stats", /criteria to display criteria

David Wheeler
 

FYI:
I intend to soon rename the route "/criteria" to "/criteria_stats". We
can then use "/criteria" to display the actual criteria in the
selected locale. This is technically a change in the user-visible API,
but in practice I expect no impact.

Details:
https://github.com/coreinfrastructure/best-practices-badge/pull/1453
https://github.com/coreinfrastructure/best-practices-badge/pull/1454

--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


Re: Renaming whitelist->acceptlist, blacklist->denylist

David Wheeler
 

All: Minor correction.
The more common term seems to be "allowlist" not "acceptlist" . E.g.:
https://www.zdnet.com/article/linux-team-approves-new-terminology-bans-terms-like-blacklist-and-slave/
So I plan to use "allowlist" everywhere, not acceptlist.

These are new words, so I didn't immediately notice the inconsistency.
I'll note that Google docs is *already* accepting allowlist as a single word.

--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


Renaming whitelist->acceptlist, blacklist->denylist

David Wheeler
 

All:

This pull request:
https://github.com/coreinfrastructure/best-practices-badge/pull/1449
renames “whitelist” to “acceptlist” and “blacklist” to “denylist" everywhere
in the CII Best Practices badge material, including the criteria text.
Note that “a whitelist” becomes “an acceptlist” (where “a” becomes “an”).

This is technically a change to the criteria text, but it does not
change the *meaning* of the text in any way.

As always, if you have issues or see an error, please comment on the pull request.

Thank you!

— David A. Wheeler


Re: has anyone scripted doing updates to the CII site?

David Wheeler
 

On Aug 12, 2020, at 5:43 PM, HANSEN, TONY L <tony@...> wrote:
David, here are some questions not answered by that page:
* Does the REST API support basic authentication (over TLS)? Or some other HTTPS authentication method?
It uses TLS to authenticate the best practices server, as well as provide
confidentiality & integrity between client & server.
Login session management uses an HTTP cookie, not basic authentication.

A quick summary is “do what a human user would do”. You use a POST
to log in (with username & password), and get a cookie that represents your session.
That cookie can then be used (for a period of time) by sending it as part of
future requests, and grants you whatever your account is authorized to do.

* When using the PATCH verb, what is the JSON input expected to look like?
PATCH /projects/:id(.:format) projects#update
This is actually implemented by the underlying Rails framework. I’ll have to search,
but I believe there’s lots of sites that go into this.

— David A. Wheeler


Re: has anyone scripted doing updates to the CII site?

Tony Hansen
 

David, here are some questions not answered by that page:

* Does the REST API support basic authentication (over TLS)? Or some other HTTPS authentication method?

* When using the PATCH verb, what is the JSON input expected to look like?

PATCH /projects/:id(.:format) projects#update

Thank you

Tony

On 8/12/20, 9:22 AM, "David A. Wheeler" <dwheeler@...> wrote:

On Wed, Aug 12, 2020 at 12:10 AM Tony Hansen <tony@...> wrote:
...
> So I’d like a tool that could be used to do an identical update across a variety of CII projects. I’d like such a tool to take a list of CII project IDs, a field name and an update to make, such as
> Of course, it would need to log in correctly with an ID that has been authorized on each of the projects.
> I started writing such a tool, but I keep getting caught up with issues with CSRF.

Tony: We developed the API so it *could* be done. But I have never
needed to do it, so I don't have code lying around to do it.

I'd be delighted to help anyone who starts down that path. I believe
it shouldn't be *too* hard,
the problem is that it has to be exactly right or it gets (rightly) rejected.

The current API documentation may help:
https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/api.md
... and if such code is created, we should add it to the API documentation.

--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


Re: has anyone scripted doing updates to the CII site?

David Wheeler
 

On Wed, Aug 12, 2020 at 12:10 AM Tony Hansen <tony@...> wrote:
...
So I’d like a tool that could be used to do an identical update across a variety of CII projects. I’d like such a tool to take a list of CII project IDs, a field name and an update to make, such as
Of course, it would need to log in correctly with an ID that has been authorized on each of the projects.
I started writing such a tool, but I keep getting caught up with issues with CSRF.
Tony: We developed the API so it *could* be done. But I have never
needed to do it, so I don't have code lying around to do it.

I'd be delighted to help anyone who starts down that path. I believe
it shouldn't be *too* hard,
the problem is that it has to be exactly right or it gets (rightly) rejected.

The current API documentation may help:
https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/api.md
... and if such code is created, we should add it to the API documentation.

--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


has anyone scripted doing updates to the CII site?

Tony Hansen
 

I’m one of the many people working on the Linux ONAP (Open Networking Automation Platform) Project. We chose to pursue CII badges from the very beginning, but because of the size of the project, we chose several years ago to use separate CII projects for each of the ONAP sub-projects. We currently have close to 40 CII projects covering the ONAP sub-projects.

 

For all of the application-specific questions, we rely on our project team leaders to answer the questions. However, when we do something (say, updating our build infrastructure to better satisfy one of the Gold questions), we are faced with updating all 40 CII pages with an identical update. Getting the project team leaders to do the updates has proven unreliable, and doing the update one project at a time is tedious at best.

 

So I’d like a tool that could be used to do an identical update across a variety of CII projects. I’d like such a tool to take a list of CII project IDs, a field name and an update to make, such as

 

projects: 3777, . . .

mods:

    signed_releases_justification: "All release artifacts are signed by the Linux Foundation prior to release.."

 

Of course, it would need to log in correctly with an ID that has been authorized on each of the projects.

 

I started writing such a tool, but I keep getting caught up with issues with CSRF.

 

Has anyone successfully scripted doing updates to the CII site? If no one has, is anyone interested in working with me on such a tool?

 

Thank you

 

                Tony Hansen

                tony@...

 

 

 


Software report on Zephyr notes CII Best Practices badge

David Wheeler
 

All:

Here's a team report, as part of an architecture class, where they
examined open source software projects:
https://se.ewi.tudelft.nl/desosa2019/
If you look at a part that discusses Zephyr:
https://se.ewi.tudelft.nl/desosa2019/chapters/zephyr/#Autotools

You can see a reference to the CII Best Practices badge! It sayd:
"In conclusion, Zephyr could serve as a role model not only for
Real-time Operating Systems, but also for open-source software
projects in general. It is a good example of how successful management
of open-source contributions and a well defined and documented
architecture can ensure and retain the software’s quality. They follow
some of the [CII best] practices as can be seen from their gold badge
and this process goes a long way in avoiding technical debt."

This report came out in Dec 2019, so it's a bit dated in terms of the
Zephyr release they're looking at (pre-LTS). However, as Kate Stewart
noted, "it has some nice creative ways of showing the info... I like
how they did some of the classifications."

My sincere thanks to Brett, and Kate Stewart, for noticing this &
telling me about it!


--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation

--
--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


CHAOSS Podcast #10 posted, notes the CII Best Practices Badge

David Wheeler
 

All:

CHAOSS Podcast #10 is now available, titled "Managing Risks and
Opportunities in Open Source with Frank Nagle & David A. Wheeler". The
hosts were Georg Link, Sean Goggins, and Kate Stewart.

The podcast mentions the CII Best Practices badge specifically.

You can hear it here:
https://podcast.chaoss.community/10

--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation


Mailing list server will be moving the Linux Foundation Single Sign-On (SSO)

David Wheeler
 

All:

The CII mailing list service is expected to soon switch to the “Linux Foundation Single Sign-on (SSO)” system
for logging in to the mailing list service. This is part of an LF effort to have *one* strong authentication service
for all LF work, so that people don’t need an endless numbers of accounts for LF work.

If you just receive emails, or you already use the LF SSO, then
there’ll be no change. Otherwise, when this change happens, you’ll need to do a
one-time account creation with the new LF SSO service. It should be very easy.

— David A. Wheeler


Please participate in the LF CII / Harvard LIST FOSS Survey!

David Wheeler
 

If you're a contributor to Free/Libre and Open Source Software (FOSS),
please participate in the LF CII / Harvard FOSS survey!

Here are more details, with a link at the bottom to the actual survey:

https://www.linuxfoundation.org/blog/2020/06/linux-foundation-harvard-announce-free-libre-and-open-source-software-foss-contributor-survey/

Thanks!

--- David A. Wheeler
Director of Open Source Supply Chain Security, The Linux Foundation