{"action":"reopened","issue":{"url":"https://api.github.com/repos/NixOS/nixpkgs/issues/13602","repository_url":"https://api.github.com/repos/NixOS/nixpkgs","labels_url":"https://api.github.com/repos/NixOS/nixpkgs/issues/13602/labels{/name}","comments_url":"https://api.github.com/repos/NixOS/nixpkgs/issues/13602/comments","events_url":"https://api.github.com/repos/NixOS/nixpkgs/issues/13602/events","html_url":"https://github.com/NixOS/nixpkgs/issues/13602","id":137676953,"number":13602,"title":"Add MAINTAINERS file + associated policy / tools","user":{"login":"edolstra","id":1148549,"avatar_url":"https://avatars.githubusercontent.com/u/1148549?v=3","gravatar_id":"","url":"https://api.github.com/users/edolstra","html_url":"https://github.com/edolstra","followers_url":"https://api.github.com/users/edolstra/followers","following_url":"https://api.github.com/users/edolstra/following{/other_user}","gists_url":"https://api.github.com/users/edolstra/gists{/gist_id}","starred_url":"https://api.github.com/users/edolstra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edolstra/subscriptions","organizations_url":"https://api.github.com/users/edolstra/orgs","repos_url":"https://api.github.com/users/edolstra/repos","events_url":"https://api.github.com/users/edolstra/events{/privacy}","received_events_url":"https://api.github.com/users/edolstra/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/NixOS/nixpkgs/labels/0.kind:%20enhancement","name":"0.kind: enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"edolstra","id":1148549,"avatar_url":"https://avatars.githubusercontent.com/u/1148549?v=3","gravatar_id":"","url":"https://api.github.com/users/edolstra","html_url":"https://github.com/edolstra","followers_url":"https://api.github.com/users/edolstra/followers","following_url":"https://api.github.com/users/edolstra/following{/other_user}","gists_url":"https://api.github.com/users/edolstra/gists{/gist_id}","starred_url":"https://api.github.com/users/edolstra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edolstra/subscriptions","organizations_url":"https://api.github.com/users/edolstra/orgs","repos_url":"https://api.github.com/users/edolstra/repos","events_url":"https://api.github.com/users/edolstra/events{/privacy}","received_events_url":"https://api.github.com/users/edolstra/received_events","type":"User","site_admin":false},"milestone":null,"comments":26,"created_at":"2016-03-01T20:24:24Z","updated_at":"2016-03-04T07:25:23Z","closed_at":null,"body":"Following up on http://lists.science.uu.nl/pipermail/nix-dev/2016-February/019811.html.\r\n\r\nTo prevent the Nixpkgs from descending into chaos, we need some policy about who is allowed to commit/merge what. We already have meta.maintainers for packages, but not for other parts of Nixpkgs/NixOS. In particular it's completely unclear who \"owns\" central parts like `lib/` so it risks becoming a free-for-all. \r\n\r\nSo I would like to propose the following:\r\n\r\n* Add a MAINTAINERS file (in the style of https://www.kernel.org/doc/linux/MAINTAINERS) listing who is responsible for particular topics / subsystems. This would generally only list things that cannot be expressed via the meta.maintainers field in packages or modules, such as cross-cutting concerns or general responsibility for a set of related packages like KDE. Example entry would be\r\n\r\n        HASKELL INFRASTRUCTURE\r\n        H: peti\r\n        F: pkgs/top-level/haskell-packages.nix\r\n        F: pkgs/development/compilers/ghc/*\r\n        F: pkgs/development/haskell-modules/lib.nix\r\n\r\n  where \"H:\" is a GitHub user name and \"F:\" are filename-matching regexps to help identify whether a particular change affects this subsystem (not required).\r\n  \r\n* Add meta.maintainers fields to NixOS modules.\r\n\r\n* Document the policy (e.g. changes need approval from the responsible maintainers).\r\n\r\n* Make a little tool that given a diff tells you who the responsible maintainers are. It would do this by 1) matching the modified files in the diff against the \"F:\" regexps in the MAINTAINERS file; and 2) looking for a meta.maintainers field in the modified files. Also make a GitHub bot that applies this tool to incoming PRs and pings/assigns the maintainers.\r\n\r\nDoes this sound reasonable?"}}