HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ossf
best-practices-badge
Ruby2015–2025
ossf / best-practices-badge

best-practices-badge

🏆Open Source Security Foundation (OpenSSF) Best Practices Badge (formerly Core Infrastructure Initiative (CII) Best Practices Badge)

10Distinct people
26Mentions
1Explicit recommenders
1.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

🏆Open Source Security Foundation (OpenSSF) Best Practices Badge (formerly Core Infrastructure Initiative (CII) Best Practices Badge)

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

They're talking about a different kind of best practices, but I highly recommend taking a look at the Core Infrastructure Initiative's Best Practices Project [0], which was…

dankohn1 used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year26 dated mentions

Observed mentions: 2015-10-10 09:04:16 UTC to 2025-05-22 15:23:45 UTC.

024682015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC312
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC725
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC817
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

26 sources
Short summary: Netdata - "The open-source observability platform everyone needs!" (from their GitHub description) has been shipping their new dashboard (UI v2) as closed source blobs under a proprietary license (Netdata Cloud UI License v1.0) with no access to its source code. The old open source dashboards (UI v0 and UI v1) are going to be removed, leaving users no choice but to use the proprietary dashboard. Please see https://mastodon.social/@wolfshappen@fellies.social/11297258... for a detailed overview of the entire issue. I will try my best to narrate them here :). Netdata is a popular "open source" observability platform. By July 20, 2023, they released a new dashboard (UI v2) which is completely closed source, built in a private repository and is shipped under a proprietary license (https://github.com/netdata/netdata/blob/master/s
Read the rest
rc/web/gui/v...). This license explicitly prevents any kind of reverse engineering or separation: > The Software is provided in a binary form for use by end-users. You may not reverse engineer, decompile, disassemble, or modify the Software. The Software is licensed as a single product and its component parts may not be separated. Netdata owns Open Source Security Foundation (OpenSSF) Best Practices Badge (which is awarded only to free/libre open source software) but is now under discussion for removal because of the blobs - https://github.com/coreinfrastructure/best-practices-badge/i.... Major Linux distros are also aware of this issue. Debian - still ships the pre-blobs version, has an open bug report - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1045145. Nix - Split by themselves, packaged Netdata Cloud separately - https://github.com/NixOS/nixpkgs/blob/c3aa7b8938b17aebd2deec... Alpine, OpenSUSE, Red Hat, Fedora etc. have been made aware of the issue and are working on a patch. On the other hand, the open source dashboards v0 and v1 will be removed soon - https://github.com/netdata/netdata/pull/18125. Leaving users no choice by default but to use the closed-source dashboard. So if you have been using Netdata because you loved it for being open source, then you might have to reconsider your option :). (I used a title that explains the problem better, please let me know if it can be worded better.) Thanks!
In Tell HN: Netdata is shipping their new dashboard as closed source blobs
It is quite possible to responsibly implement Facebook "like" buttons on your own pages without violating your users' privacy. I wish more people would do it. I suspect that including Facebook like Pages the way Facebook wants you to do it could be considered a gdpr violation, if it were interpreted that way perhaps people would actually fix it. On the CII best practices badge site, we implement responsible links. As explained in our security assurance case, "We do have links to social media sites (e.g., from the home page), but we do this in a privacy-respecting manner. It would be easy to use techniques like embedding images from external (third party) social media sites, but we intentionally do not do that, because that would expose to an external unrelated site what our users are doing without their knowledge. We instead use the appro
Read the rest
ach described in "Responsible Social Share Links" by Jonathan Suh (March 26, 2015), specifically using share URLs. In this approach, if a user does not press the link, the social media site never receives any information. Instead, a social media site only receives information when the user takes a direct action to request it (e.g., a click), and that site only receives information from the specific user who requested it." Source: https://github.com/coreinfrastructure/best-practices-badge/b... Suh's page: https://jonsuh.com/blog/social-share-links/#use-share-urls I don't mind people sharing information on Facebook, as long as they choose to do so. If they chose to do it, that's fantastic. What bothers me is Facebook being able to track people without their consent.
In Dear Facebook: Stop cross site tracking by default
The CII best practices badge ( https://bestpractices.coreinfrastructure.org ), which identifies key best practices for OSS projects, doesn't forbid the use of the RSA algorithm. In many situations forbidding the use of RSA (when using a public key cryptosystem) is completely impractical today. RSA is really popular, and a lot of OSS projects must be compatible with systems and organizations that use RSA. Besides, it appears to me that the primary problem is people who roll their own RSA implementations. As the article says, "In circumstances where people implement their own RSA, all bets are off in terms of using standard RSA setup procedures, and developers will frequently do strange things...". It also later shows a picture where the disastrous choice is "rolling your own RSA". Yes, there are a lot of ways to screw up an RSA implem
Read the rest
entation (as noted in the article), but that's less important if it's implemented by people who know what they're doing. The CII badge does specifically address the problem of people who roll their own crypto. Specifically, its "crypto_call" criterion says: "If the software produced by the project is an application or library, and its primary purpose is not to implement cryptography, then it SHOULD only call on software specifically designed to implement cryptographic functions; it SHOULD NOT re-implement its own." https://github.com/coreinfrastructure/best-practices-badge/b... Full disclosure: I lead the CII Best Practices badge project.
In RSA is a fragile cryptosystem
I agree! I encourage anyone who's involved in an open source software (OSS) project to get a CII Best Practices Badge at: https://bestpractices.coreinfrastructure.org/ ; if you are using OSS, then you should prefer projects with a badge. If you want to see a video that explains the badge, see "An Introduction to the Core Infrastructure Initiative (CII) Best Practices Badge" at https://www.youtube.com/watch?v=JMptmhV06j8 New projects are participating every day (see https://bestpractices.coreinfrastructure.org/en/project_stat... ). The badging application is itself open source software; its project site is: https://github.com/coreinfrastructure/best-practices-badge/ (Disclosure: I'm technical lead of the BadgeApp project. Hi Dan!)
In Software Checklist (2014)
I just found and read through the criteria list. It's mind-bogglingly exhaustive, but in a very good way, and an excellent catalyst for maintainable, secure software. I'd regard it as universally applicable to any and all code. This list gets you in the door: https://github.com/coreinfrastructure/best-practices-badge/b... And this is the list that gets you a gold star rating: https://github.com/coreinfrastructure/best-practices-badge/b... Prepare to have your eyes glaze over. --- I had a go at summarizing the criteria. This is not an accurate reduction of the essence of the two lists; it comes close (I have no reason to misrepresent the criteria), but I've paraphrased here and there where I think it was editorially safe to do so (including slightly rearranging/renaming the major headings a little and swapping the ordering of points). The
Read the rest
following is NOT a substitute for reading the criteria. I wrote this to give a good idea of why you'd want to take the time to click the above links. >> The following is the criteria to get a _minimally_ passing score. << Website(s) - <Must> succinctly describe the project with a minimum of domain-specific language or siloed knowledge - <Must> explain how to obtain, provide feedback and contribute - <Must> use HTTPS+TLS Project - <Must> use an OSS license (OSI, FSF, or liked by Debian or Fedora); <may> be dual-commercially-licensed - <Must> provide basic documentation in 99% of circumstances - <Must> use a URL-addressable, searchable discussion system for unilateral participation (IRC or mailinglists with URL-accessible logging is acceptable) - <Should> use English Source version control - URL-addressable version control <must> be used - System <must> track who changed what, and when - <Must> list all interim releases, for accountability - Unique version numbers <must> be used for all user-facing releases; commit IDs are listed as acceptable version "numbers", as is use of SemVer, and use of other version representations - Release notes <must> accompany all releases Bug reporting - Project <must> provide bug reporting process; use of an issue tracker is recommended - Project <must> at least respond to (if not fix) issues after 2-12 months, and <should> acknowledge more than half of submitted enhancement requests in the same timeframe Vulnerability reporting - Project <must> provide a vulnerability reporting mechanism; HTTPS or email (possibly with PGP) are suggested - All reports submitted within the last 6 months <must> be responded to within 14 days Building - IF project must be built in order to function, automatic rebuild mechanism must be provided - Automated OSS test suite <must> be used - Tests for new functionality <must> be added to automated test suite Code warnings - Project <must> use compiler warnings, language strict/safe modes, or linting tools Security - Project <must> be built by at least one developer who knows how to design secure software (the 8 principles from Saltzer and Schroeder are noted) - At least one developer <must> have domain knowledge of common vulnerability-introducing errors relevant to the software, and how to mitigate against them - Project <must> use established and reviewed security algorithms/protocols - Project <must> use keylengths that meet minimum NIST requirements through 2030 (certain keylengths are noted) - Project <must not> use known-broken crypto - Security mechanisms <should> use perfect forward secrecy - Stored passwords <must> be iterated/key-stretched hashes with per-$user salt - Keys and nonces must come from a cryptographically secure RNG - Project delivery mechanism <must> be MITM-resilient (HTTPS and SSH+SCP are listed as acceptable) - Checksums <must not> be delivered over HTTP - Medium- to high-severity vulnerabilities <must> be fixed if they are public knowledge for more than 60 days - Project <must not> leak security credentials (sample credentials are exempted) Code analysis - Project <must> use a static code analyser, if one exists for the given project language(s) and is OSS; it is <suggested> that the tool be configured/used to look for vulnerabilities, if possible; it is also <suggested> that code analysis be rerun every commit or at least daily - Project <must> fix medium/high severity (CVSS 2.0 or higher) exploitable issues found by static analysis in a timely manner - The use of a dynamic code analyzer to major production releases is <suggested>, if an OSS tool exists for the project language(s) - If the software is written in C/C++ or another memory-unsafe language, it is <suggested> that a dynamic analyser (fuzzer, web application scanner) be used to look for things like buffer overflows/overwrites - It is <suggested> that the project make heavy use of run-time assertions that are checked by dynamic analysis tools
In The Only Linux Foundation CII Gold Rated Project Is a .. PHP Markdown Parser
I've been experimenting with multi-stage builds, and they do let me build a leaner image with clearer syntax by using one the first image to build my gems, and then copying the gems to the final image. <https://github.com/coreinfrastructure/best-practices-badge/b... However, that doesn't fix the problem of having lots of development and test gems installed in test that I don't want for production. I don't know of a way of copying just my production gems to a production image.
In Launching Today: CircleCI 2.0 Reaches General Availability
Do you recommend using the same Docker image that passes tests on CircleCI in production? I have an open source Rails app <https://github.com/coreinfrastructure/best-practices-badge> that self-certifies that open source projects are following best practices. It currently uses CircleCI 1.0 and then deploys to Heroku <https://circleci.com/gh/coreinfrastructure/best-practices-ba.... If I configure it for development and test, it will contain all the test and development gems in addition to the production ones <https://github.com/coreinfrastructure/best-practices-badge/b.... I would also need to include gcc and other build tools. But I would have immutability in that my dev, test and production images would be identical. Or, should I use one image for dev and test, and then build a different image for production, in order to have the smallest
Read the rest
possible size? CircleCI supports building <https://circleci.com/docs/2.0/building-docker-images/> further Docker images, but then there's a chance of losing dev/prod parity if, for example, a software dependency gets updated in the meantime.
In Launching Today: CircleCI 2.0 Reaches General Availability
Dan: Thanks again for your work (I also work on BadgeApp)! One other important change due to the Rails 5 upgrade was that because jquery-turbolinks doesn't support Rails 5 [0], we eventually had to drop both jquery-turbolinks and turbolinks. If you're using jquery-turbolinks, you may also need to drop both jquery-turbolinks and turbolinks. Turbolinks doesn't work correctly with many JavaScript libraries (causing no end of subtle bugs), and in our case the performance boost turbolinks is supposed to provide, so turbolinks just wasn't worth the trouble anyway. Good riddance. Rails 5 has some nice additions. I particularly appreciate that Rails 5 has two new security hardening mechanisms to reduce the risk of CSRF security vulnerabilities: per-form CSRF tokens and origin-checking CSRF mitigation. We use a number of mechanisms to make o
Read the rest
ur application secure [1]. The application doesn't have many LOC, but we do work to keep it that way. We try to reuse code where it makes sense, and always try to keep it simple. Still, it doesn't take many lines to create a useful app, and that's a good thing. [0] https://github.com/kossnocorp/jquery.turbolinks/issues/56 [1] https://github.com/linuxfoundation/cii-best-practices-badge/...
In Shopify now on Rails 5.0. started 12 years ago on 0.5, the First version released
My holiday project was to upgrade a Rails project I helped create to Rails 5. The BadgeApp [0] is used to certify open source projects as satisfying the Core Infrastructure Initiative's Best Practices Badge. It is open source, so you can see the diff [1] if you're interested. The upgrade took me several hours, and was greatly assisted by our 99% test coverage. Biggest line count change was from needing to explicitly specify params in tests. The biggest annoyance was that Fastly's gem still doesn't support Rails 5, so I needed to fork it [2]. I too am hugely appreciative of the Rails ecosystem. [0] https://github.com/linuxfoundation/cii-best-practices-badge/ [1] https://github.com/linuxfoundation/cii-best-practices-badge/... [2] https://github.com/fastly/fastly-rails/pull/67 Here are the app statistics: +----------------------+--------+-
Read the rest
-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 687 | 476 | 8 | 59 | 7 | 6 | | Helpers | 184 | 134 | 0 | 21 | 0 | 4 | | Models | 711 | 470 | 5 | 55 | 11 | 6 | | Mailers | 160 | 115 | 3 | 12 | 4 | 7 | | Javascripts | 405 | 308 | 0 | 35 | 0 | 6 | | Libraries | 369 | 281 | 0 | 0 | 0 | 0 | | Tasks | 369 | 281 | 0 | 0 | 0 | 0 | | Controller tests | 605 | 513 | 6 | 53 | 8 | 7 | | Helper tests | 56 | 45 | 2 | 7 | 3 | 4 | | Model tests | 398 | 309 | 9 | 37 | 4 | 6 | | Mailer tests | 71 | 54 | 4 | 5 | 1 | 8 | | Integration tests | 614 | 446 | 10 | 25 | 2 | 15 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 4629 | 3432 | 47 | 309 | 6 | 9 | +----------------------+--------+--------+---------+---------+-----+-------+
In Shopify now on Rails 5.0. started 12 years ago on 0.5, the First version released

Showing the 15 most recent of 26 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.