From 65ebe74d7bfdf661502978311200d0c32f7b8be8 Mon Sep 17 00:00:00 2001 From: "David A. Wheeler" Date: Sat, 30 Jan 2016 12:23:08 -0500 Subject: [PATCH] Add 'discussion' criteria. Fixes #186 Based on a comment from Karl Fogel. See the lengthy discussion at https://github.com/linuxfoundation/cii-best-practices-badge/issues/186 Signed-off-by: David A. Wheeler --- app/models/project.rb | 2 ++ app/views/projects/_form.html.erb | 20 ++++++++++++++++++++ db/migrate/20160130165746_add_discussion.rb | 20 ++++++++++++++++++++ db/schema.rb | 4 +++- doc/criteria.md | 17 +++++++++++++++++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160130165746_add_discussion.rb diff --git a/app/models/project.rb b/app/models/project.rb index 5c61c82dd..3262da1a6 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -22,6 +22,8 @@ class Project < ActiveRecord::Base # Documentation documentation_basics: ['MUST', false, false], documentation_interface: ['MUST', false, false], + # Other + discussion: ['MUST', false, false], # CHANGE CONTROL # Public version-controlled source repository repo_url: ['MUST', false, false], diff --git a/app/views/projects/_form.html.erb b/app/views/projects/_form.html.erb index 057a48032..63ef85166 100644 --- a/app/views/projects/_form.html.erb +++ b/app/views/projects/_form.html.erb @@ -278,6 +278,26 @@ The project MUST include reference documentation that describes its interface.}, The project MAY use hypertext links to non-project material as documentation. }}) %> + +

+

Other

+ + <%= render(partial: "status_chooser", locals: {f: f, is_disabled: is_disabled, + criteria: "discussion", desc: %{ +The project MUST have one or more mechanisms +for discussion (including proposed changes and issues) that are +searchable, allow messages and topics to be addressed by URL, +enable new people to participate in some of the discussions, and +do not require client-side installation of proprietary software.}, + details: %{ +Examples of acceptable mechanisms include +GitHub issue and pull request discussions, Bugzilla, Mantis, and Trac. +Asynchronous discussion mechanisms (like IRC) are acceptable if +they meet these criteria; make sure there is a URL-addressable +archiving mechanism. +Proprietary Javascript, while discouraged, is permitted. +}}) %> +


Change Control

diff --git a/db/migrate/20160130165746_add_discussion.rb b/db/migrate/20160130165746_add_discussion.rb new file mode 100644 index 000000000..b3a59c84a --- /dev/null +++ b/db/migrate/20160130165746_add_discussion.rb @@ -0,0 +1,20 @@ +class AddDiscussion < ActiveRecord::Migration + def change + add_column :projects, :discussion_status, :string, default: '?' + add_column :projects, :discussion_justification, :text + + reversible do |dir| + dir.up do + execute <<-SQL + UPDATE projects + SET discussion_status='Met', + discussion_justification='GitHub issue tracker and pull requests support discussion' + WHERE project_homepage_url LIKE '%github.com%' OR + repo_url LIKE '%github.com%' ; + SQL + end + # dir.down do ... + # end + end + end +end diff --git a/db/schema.rb b/db/schema.rb index c83481c0d..ac569eecd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160123144005) do +ActiveRecord::Schema.define(version: 20160130165746) do create_table "projects", force: :cascade do |t| t.integer "user_id" @@ -156,6 +156,8 @@ t.string "test_continuous_integration_status", default: "?" t.text "test_continuous_integration_justification" t.string "cpe" + t.string "discussion_status", default: "?" + t.text "discussion_justification" end add_index "projects", ["user_id", "created_at"], name: "index_projects_on_user_id_and_created_at" diff --git a/doc/criteria.md b/doc/criteria.md index 94e07d1ba..d2bcf0dd8 100644 --- a/doc/criteria.md +++ b/doc/criteria.md @@ -195,6 +195,23 @@ Note that: [documentation_interface] - The project MAY use hypertext links to non-project material as documentation. + +*Other* + +- The project MUST have one or more mechanisms + for discussion (including proposed changes and issues) that are: + - searchable, + - allow messages and topics to be addressed by URL, + - enable new people to participate in some of the discussions, and + - do not require client-side installation of proprietary software. + Examples of acceptable mechanisms include + GitHub issue and pull request discussions, Bugzilla, Mantis, and Trac. + Asynchronous discussion mechanisms (like IRC) are acceptable if + they meet these criteria; make sure there is a URL-addressable + archiving mechanism. + Proprietary Javascript, while discouraged, is permitted. + [discussion] + ### Change control *Public version-controlled source repository*