1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Poggit - Public Consultation

Discussion in 'General discussion' started by SOFe, Dec 9, 2016.

Tags:
  1. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    Poggit consists of a continuous-integration (CI) and a plugin list.

    Poggit-CI is primarily used for building phar builds from source code for PocketMine plugin projects hosted on GitHub. After you authorize the Poggit application on GitHub, you can enable Poggit-CI for some of your projects, and Poggit will start building phar builds and carry out basic lint (including basic php -l syntax lint, PocketMine plugin structure lint and other simple inspections that are nothing compared to PhpStorm's inspections) whenever you push a commit or receive a pull request.
    upload_2016-12-9_22-47-5.png

    Poggit also has a plugin list, but unlike common plugin lists, Poggit's plugin list does not accept uploading phar files. They must be built by and imported from Poggit-CI. After submitting, they are reviewed in a rather complicated scheme:
    1. The developer submits a build from Poggit-CI along with additional released information (they are really detailed if you want to!). The build is only visible to staff members.
    2. A staff member carries out a quick and basic check to confirm that this plugin cannot cause more harm than deleting player data on your server, no malicious code, and not too simple to be released as a standalone plugin.
    3. The release is now only visible to all/some registered users on Poggit (register with GitHub). These users can review the plugin. When enough users approve the release, it is visible to all users and guests on the website, but with limited features (these features will be introduced in Poggit v2.0, which is far from us now).
    4. Official plugin reviewers will review and test the release. If the plugin is considered acceptable, it will be officially approved with all features enabled.
    5. If official plugin reviewers found the plugin meaningful enough to be featured, it will be displayed as a featured plugin. This "Featured" status is only effective on a single release, but does not affect its earlier/later commits.
    Some details are not included if they are not controversial enough.

    We would like to ask for your comments on the plans (actually some of them are already implemented) mentioned above.
    We would also like to invite for ideas on some names:
    • What should be the proper name of the plugin list (like CI for the other part)? It is currently called "Release", but it is a generic noun and is not specific enough to be introduced as a proper noun.
    • How should we accurately name the status of the different steps in the review? Currently we are using these names, but their meanings are not inclusive enough:
      • Draft (before the release is submitted to staff members for quick review)
      • Submitted (submitted but not quick-reviewed)
      • Checked (quick-reviewed by staff, but not approved by the community yet)
      • Voted (approved by the community)
      • Approved (fine-reviewed by staff)
      • Featured
    • How do we decide who can vote on plugins, as well as the weighting of their votes? What kind of people should be able to vote (or have more votes)?
    • Other things that you think are important.
     
    MK500, Awzaw, archie426 and 7 others like this.
  2. InspectorGadget

    InspectorGadget Zombie Pigman

    Messages:
    462
    GitHub:
    InspectorGadget
    Sounds cool!
     
  3. robske_110 (Tim)

    robske_110 (Tim) Wither Skeleton Poggit Reviewer

    Messages:
    1,342
    GitHub:
    robske110
    I think all users, after downloading the plugin should be able to vote :)
     
    Flupko likes this.
  4. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    What if the plugin developer creates spam accounts to vote for his own plugin until it gets approved?
     
  5. robske_110 (Tim)

    robske_110 (Tim) Wither Skeleton Poggit Reviewer

    Messages:
    1,342
    GitHub:
    robske110
    Then how about verifying poggit account with pocketmine forums and the forum account needs 10 posts. (Or better: 1-2likes)
     
  6. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    I have been thinking about this (better more likes), but it is quite difficult to work with the Forums API, and it is still possible that people can create ring accounts (account A likes account B, account B likes account C, account C likes account A again), and I want some people to have more votes, and we are seeing some like spammers on the forums.
     
    Awzaw likes this.
  7. HimbeersaftLP

    HimbeersaftLP Fish

    Messages:
    2,402
    GitHub:
    HimbeersaftLP
    ...
     
    Matthew likes this.
  8. Magicode

    Magicode Baby Zombie

    Messages:
    183
    GitHub:
    magicode1
    Well, people verified on the old forums when we moved here, right? Maybe, you have to be on these forums for a certain amount of time. Like Joined: 2 months/weeks ago or something
     
  9. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    That's manual verification. Not reliable enough to be used automatically.
    Another suggestion: If we hold plugin contests regularly, the prize could be an extra vote when approving plugins.
     
    Muqsit, HimbeersaftLP and Magicode like this.
  10. falk

    falk Slime Poggit Reviewer

    Messages:
    75
    GitHub:
    falkirks
    How do we decide who can vote on plugins, as well as the weighting of their votes? What kind of people should be able to vote (or have more votes)?

    You could just make votes a function of plugins posted. You would count each plugin stage as a different value (1 for draft and then more for each additional review step). Then you would plug that number into some log function (and round it or something) and get the vote weighting for the user. If you want to give every user a base vote of 1 (so people who don't make plugins can vote as well), you would just add 1 to the result of the function.

    Also, I do believe that the user who posts the plugin should have their own votes put toward their releases, which would allow users with more votes to pass review faster.
     
    dktapps, SOFe and Awzaw like this.
  11. Awzaw

    Awzaw Zombie Pigman Poggit Admin

    Messages:
    726
    GitHub:
    awzaw
    Those are excellent ideas :) It's a very elegant solution, although I think it would still leave Poggit open to certain kinds of abuse SOFe mentioned. Maybe that could maybe be mitigated by adding some other data to the mix though... which brings me to a potential problem that hasn't been discussed: if Poggit were to use any user data from these forums, then it would be forcing people to have both a GitHub account AND a pmmp.io forum account to use it fully - which seems wrong to me, even though it would certainly make it easier to prevent abuse. If a user is banned on here for being rude for example, should she necessarily be also excluded from voting for Poggit Releases, for example? And be unable to get any plugins approved thereafter?
     
    Last edited: Dec 10, 2016
  12. Awzaw

    Awzaw Zombie Pigman Poggit Admin

    Messages:
    726
    GitHub:
    awzaw
    Also after reading SOFe's post a few times 'Poggit-CI' and 'Releases' in the plural, sound the best to me so far (after 'Plugin List' ;-).

    Bands 'release' albums, record companies and shops provide a list of album 'releases'.

    Here's another possibility: in addition to rating plugins, Poggit users can award points to other users on their code/reviews/github activity etc, and a handful of chosen poggit moderators (maybe the code reviewers, but not necessarily) get the ball rolling. That data combined with Falk's suggestion above, and the right limiting, thresholds, weighting etc might work well.
     
    Last edited: Dec 11, 2016
    HimbeersaftLP and SOFe like this.
  13. MK500

    MK500 Slime

    Messages:
    77
    GitHub:
    markkrueg
    Thanks to all that are working on a well thought out plugin repository. It is desperately needed!

    One thing that jumps out at me here; is that even the developers of this are calling it a "complicated scheme". Are you taking into account the time it will take to review these plugins. It would be best to do this at least every 48 hours to avoid annoying new developers that want to jump into the plugin game. Thats some time and pressure on already limited resources (core developers). Maybe this should be as automated as possible and early stage plugins just get a "possibly dangerous" badge?

    This is the first bottleneck. A complex plugin could take a developer some time to really check for malicious code and possible risks.

    I'm a little unclear on step 3. Is the functionality where features of the plugin are somehow limited already built? Is the plugin modified automatically to limit features? Or are you talking about "features" of the visual listing for the plugin that will be disabled?

    Who are "all/some registered users on Poggit"? Anyone with a GitHub account? Only GitHub account owners approved by core team to review?

    Overall I worry that there are a lot of "people based" bottlenecks. This can easily lead to a system where plugins sit in stasis for weeks or months when core team developers are busy, unavailable, or just not interested in the particular plugin. Use an automated process as much as possible.

    My other suggestions/questions relate to final presentation of the plugin list. Remember to build this for your primary audience first (the plugins downloaders) and developers second. Because developers can handle something that is incomplete/work in progress...but downloaders are easily frustrated/confused if the presentation isn't simple and functional.

    There should be an easy URL; maybe https://plugins.pmmp.io? It should be searchable. There should be a place where keywords can be attached to the plugin by the developer; and this can be used to create categories or a keyword cloud.

    For the primary list page: It would be best to include the ability to have an icon, short description and review rating on the main list. Once clicked into the plugin there should be a detailed feature list as well as a version history.

    There should also be some sort of hierarchical Q/A area and the ability to link to a forum thread for more detailed discussion. It should be easy to click into the GitHub for the plugin as well for those who want to look at the code. There are a lot of examples of how to do this successfully; including what existed in the PocketMine-MP forum.

    Overall I think this is a very exciting development! I hope it becomes the premier repository for PMMP plugins. We certainly need one.
     
    SOFe and Jack Noordhuis like this.
  14. HimbeersaftLP

    HimbeersaftLP Fish

    Messages:
    2,402
    GitHub:
    HimbeersaftLP
    To make things simpler, you could also add a badge like "Verified Devs" to people whose plugins don't need (or need less) approvement steps because they are trustable, e.g. You @aliuly @falk etc.
     
    Magicode and Jack Noordhuis like this.
  15. dktapps

    dktapps Administrator Staff Member PMMP Team

    Messages:
    774
    GitHub:
    dktapps
    I would say "or need less" because even the best people can make big mistakes that it takes a second person to pick up on. It's not so much trust as it is quality assurance.
     
    falk likes this.
  16. Tatsuyuki Ishi

    Tatsuyuki Ishi Creeper

    Messages:
    2
    GitHub:
    ishitatsuyuki
    Good system, but the design is a little bad. Try a modern js framework.
    The plugin list is not in a grid.
    Also, consider make a more impressive logo.
     
    HimbeersaftLP likes this.
  17. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    Difficult to design, code and explain in words. But we plan to create an SVG graph that shows a flowchart of plugin approval to developers who care about it, so it is rather easy to understand in that way. Actually the developers don't need to understand this; as long as they know that you need to wait for somebody to review, that's enough.
    The first check is really quick. For simple plugins it can complete in one or two minutes, and for bigger plugins like EssentialsPE, it should take no more than ten minutes. We are just checking for suspicious or terrible code, and that kind of code should be obvious to experienced developers.
    Yes, but not too much. We are just viewing the source code by skimming, and we are not gonna accept obfuscated plugins. Plugins that passed this point are still potentially dangerous, but at least obviously malicious/spam ones would be banned.
    We also check the plugin description at this point, just to see if the plugin is doing something we don't want to do, or the code is obviously not doing what it claims to do.
    Some future features (actually privileges) that a fully-released plugin should enjoy. This is actually not finalized, and any discussion or suggestions of what should be additionally provided for plugins that have been completely approved are welcome.
    This is what we are discussing, about who can vote.
    Agreed. We are going to provide links as simple as poggit.pmmp.io/p/PluginName, and direct latest version download links like poggit.pmmp.io/p/PluginName/latest
    There seem to be a lot of bottlenecks, but in the end they are not that bad.
    We expect to have a bigger (and probably looser) number of reviewers at the first check so that it can ensure that plugins can pass it really smoothly.
    For the second check, i.e. community review, it is optional, and it only makes plugins visible to the public more quickly before the third check. If we have reviewers available, plugins can go to stage 3 and fully release without passing stage 2.
    For the third check, i.e. more careful review, you can assume, at worst, that it is similar to what happens on old forums, but I hope we can have more manpower than just one like in the past.
    Yep, planned :)
    Have a look at the temporary release submission interface:
    upload_2016-12-13_21-34-33.png
    upload_2016-12-13_21-35-37.png
    upload_2016-12-13_21-35-17.png
    upload_2016-12-13_21-36-8.png
    upload_2016-12-13_21-36-30.png
    upload_2016-12-13_21-36-48.png
    upload_2016-12-13_21-37-12.png
    So as you can see, there are some detailed information to put. It is not necessary that the developer look at all of them, but setting them properly can help future automated tools (such as automatic plugin installers/updaters) know better about the plugin being installed and decide on extra actions to perform.
    This is a bit more troublesome since we so far haven't been very successful in handling forums integration.
    Or just add them as reviewers ;)
    Fact: @shoghicp used to approve his plugins straight away!
    Well, if they are confident enough, they can approve their plugins directly since they (both personality and ability) are trusted enough, or if not, wait for someone else to review ;)
     
    HimbeersaftLP and Magicode like this.
  18. Magicode

    Magicode Baby Zombie

    Messages:
    183
    GitHub:
    magicode1
    I am loving the screenshots! It will be so nice to have a place to get plugins again.
     
  19. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    Too late. NIH again. But I don't think the code looks bad :)
    What's wrong with it? If you are referring to the "Recent Builds" list, it is not a plugin list. It is just random builds to show up to be "discovered". They don't even need to be "recent" actually, because any random builds could work as well :D
    Lowest priority of all :p
     
    HimbeersaftLP and dktapps like this.
  20. Magicode

    Magicode Baby Zombie

    Messages:
    183
    GitHub:
    magicode1
    I assume Poggit will use these forums to discuss plugin releases? Make a thread for each plugin like on the old forums?
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.