{"action":"created","issue":{"url":"https://api.github.com/repos/wbond/packagecontrol.io/issues/46","labels_url":"https://api.github.com/repos/wbond/packagecontrol.io/issues/46/labels{/name}","comments_url":"https://api.github.com/repos/wbond/packagecontrol.io/issues/46/comments","events_url":"https://api.github.com/repos/wbond/packagecontrol.io/issues/46/events","html_url":"https://github.com/wbond/packagecontrol.io/issues/46","id":64266453,"number":46,"title":"Process for reviewing packages on the package_control_channel repo","user":{"login":"FichteFoll","id":931051,"avatar_url":"https://avatars.githubusercontent.com/u/931051?v=3","gravatar_id":"","url":"https://api.github.com/users/FichteFoll","html_url":"https://github.com/FichteFoll","followers_url":"https://api.github.com/users/FichteFoll/followers","following_url":"https://api.github.com/users/FichteFoll/following{/other_user}","gists_url":"https://api.github.com/users/FichteFoll/gists{/gist_id}","starred_url":"https://api.github.com/users/FichteFoll/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FichteFoll/subscriptions","organizations_url":"https://api.github.com/users/FichteFoll/orgs","repos_url":"https://api.github.com/users/FichteFoll/repos","events_url":"https://api.github.com/users/FichteFoll/events{/privacy}","received_events_url":"https://api.github.com/users/FichteFoll/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-03-25T13:20:24Z","updated_at":"2015-04-12T15:00:55Z","closed_at":null,"body":"I'll use this ticket as a place to draft the process for reviewing packages. It will be updated over time when I feel like it. Eventually this should be added to packagecontrol.io. \r\nThis will allow us to introduce potentially more helpers to the process and can also serve as a checklist for experienced reviewers (such as myself) in case I forget something.\r\n\r\n---\r\n\r\nIt is assumed that you know about the `repository.json` file format. See [`example-repository.json`](https://github.com/wbond/package_control/blob/master/example-repository.json).\r\n\r\n### Reviewing a package addition to the default Package Control channel\r\n\r\n1. Review the pull request.\r\n  1. Check if the tests are passing. If they are not, make the PR author aware of the issue and potentially link to the error line on travis-ci. Beware that there may be scenarios where the tests are incomplete, so always review the changes briefly by yourself.\r\n  2. Check if there are no commits that modifiy an entire file and have 1000+ lines changed. It will completely mess up the history. Request the PR author to fix this by squashing/reverting/opening a new PR.\r\n  3. As of Package Schema 3.0.0, branch-based versioning is not accepted anymore for new packages. They must use tags, even for multi-branched releases for separate ST2 and ST3 versions. There is an example for this in the `example-repository.json` file.\r\n  4. Confirm that the user who authors the pull request has push access to the repo he wants to add. For an organization, check if the user is part of that organization or check if he pushed commits to the repo.\r\n  If he does not have access, see if the repo's owner has given permission to adding the package to Package Control's default channel or get his acknowledgement in the pull request by mentioning him.\r\n  5. Confirm that the package satisfies our [package naming policies](https://packagecontrol.io/docs/submitting_a_package#Step_2).\r\n\r\n2. Review the package.\r\n  1. Read the Readme and assure that you somewhat understand what it does. If there is no readme or you don't understand it (e.g. it's written in a language you don't understand), ask the PR author to add a readme, translate it to English (if the package has an international audience) or ask for an explanation.\r\n  2. Search for similar or duplicate packages on https://packagecontrol.io/. If there are any, see below for the \"similar packagejs) exist(s)\" section. Be smart in your search terms or remember adding a similar package previously.\r\n  3. Check that the repository has correctly formatted [semantic version](http://semver.org) tags with the appropriate prefix specified in the PR. If `\"tags\": true`, both no prefix and `v` will be recognized currently. (https://github.com/wbond/package_control/issues/887)\r\n  4. Check for specific files in the repository:\r\n    1. `*.pyc`, `*.cache` binary files are auto-generated by Sublime Text and stored in the same folder in ST2. Unless the package does not ship the `.py` source files, request the author to remove those files.\r\n    2. The `.no-sublime-package` file should only be used if really necessary since it [complicates overriding and modifying packages locally](https://packagecontrol.io/docs/customizing_packages). Such a file is needed if\r\n      - The package executes binaries included in the package itself using the `subprocess` module\r\n      - The package runs scripts included in the package using an external application, such as `node`.\r\n      - A bug in Sublime Text prevents a certain feature to work if in archived state. (none known currently)\r\n\r\n      It is not needed for bundling Python modules. Relative imports work in both ST2 and ST3 (although differently for ST2 in the package's root folder). If a module uses numerous absolute imports to import parts of itself (grrr) and an addition to `sys.path` is necessary, this should also work if the package is archived. TOTEST.\r\n\r\n    3. `package-metadata.json` should not be present! Ask the author to remove it.\r\n    4. If `messages.json` is present, check if it is correctly formatted (i.e. valid JSON, uses correct keys, specified files actually exist). ([docs](https://packagecontrol.io/docs/messaging))\r\n    5. Python plugins that use ST's API **must** be in the root folder of the repository, otherwise Sublime Text will not find them.\r\n\r\n  5. If a package defines no Python plugins, it is generally compatible with all OSes. ST2&3 compatability may depend but is usually the case. Point out if the pull request's requirements are too restrictive.\r\n  6. Optionally, review the source code of Python plugins.\r\n    1. TODO  \r\n      major: close all (file) handles; check if the package considers being an archived package on ST3; check if package satisfies its install requirements compatability-wise (does the code work on ST2/3? Windows? does it perhaps work on more than specified?); try to guess if a plugin is taxing on performance  \r\n      minor: don't hardcode forward slashes for file paths; point out general flaws in code or give tips\r\n3. If package is a dependency:\r\n  1. TODO\r\n\r\n### Reviewing a package change in the default Package Control channel\r\n\r\nGenerally the same steps as for when adding a package apply, except that you don't need to review the package since it has already been done when it was added. However, there are a few additional things to consider in certain situations.\r\n\r\n- For a repository rename, check if the old repository url redirects to the new. If it does not, mention that github has a feature that allows renaming a repository that adds 301 redirects and preserves issues and pull requests.\r\n- For a user rename, check that the old user (or repo) url `http://github.com/OldFichteFoll` redirects to the new user or repo url. This confirms that it was indeed a user rename and not a different user.\r\n- For a package rename (change of `name` attribute in package data), check that the old package name was added to the `previous_names` list.\r\n\r\n### Similar package(s) exist(s)\r\n\r\nTODO\r\n\r\n### Cleaning up old pull requests\r\n\r\nTODO\r\n\r\n---\r\n\r\ncc @wbond, @joneshf \r\n\r\nSince I'll be away from 27th thru 8th it sounded like a good idea to do that now."},"comment":{"url":"https://api.github.com/repos/wbond/packagecontrol.io/issues/comments/92076874","html_url":"https://github.com/wbond/packagecontrol.io/issues/46#issuecomment-92076874","issue_url":"https://api.github.com/repos/wbond/packagecontrol.io/issues/46","id":92076874,"user":{"login":"FichteFoll","id":931051,"avatar_url":"https://avatars.githubusercontent.com/u/931051?v=3","gravatar_id":"","url":"https://api.github.com/users/FichteFoll","html_url":"https://github.com/FichteFoll","followers_url":"https://api.github.com/users/FichteFoll/followers","following_url":"https://api.github.com/users/FichteFoll/following{/other_user}","gists_url":"https://api.github.com/users/FichteFoll/gists{/gist_id}","starred_url":"https://api.github.com/users/FichteFoll/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FichteFoll/subscriptions","organizations_url":"https://api.github.com/users/FichteFoll/orgs","repos_url":"https://api.github.com/users/FichteFoll/repos","events_url":"https://api.github.com/users/FichteFoll/events{/privacy}","received_events_url":"https://api.github.com/users/FichteFoll/received_events","type":"User","site_admin":false},"created_at":"2015-04-12T15:00:54Z","updated_at":"2015-04-12T15:00:54Z","body":"How do we feel about encouraging to use the naming conventions for color schemes or themes? Both seem to have two \"implicit\" conventions, which are:\r\n- `Color Scheme - <name>` and `<name> Color Scheme`, or \r\n- `Theme - <name>` and `<name> Theme` respectively.\r\n"}}