Tuesday, March 14, 2017

Some notes about the current state of comments, and thoughts about future plans are below.

0) Spam.

So far
there hasn't been comment spam on the new comment system(yet!)... but eventually
some will get through the different layers of defense. Which are a web
app firewall (through cloudflare) (which helps block bots and abusive
proxy servers), user signups required, limits on the number of accounts
and comments that can be posted per hour, making the spam useless for
SEO(nofollow on links) and then a spam classifier.

The spam classifier is pretty basic. It only uses the message text so far, and not other features like 'how old is the poster account', or 'does the user account have another other accounts linked'. Despite that, and only having been trained on a few thousand messages it seems classification works pretty well. It scores 0.97 for ham, and 0.76 for spam when it is cross validated on the test set.

It's sort of weird having source code available for a website, and also trying to ward off spammers. Because if they looked, they can see exactly the measures taken to prevent spam. People who are dedicated to it will be able to easily spam, but casual and automated spam should be able to be stopped.

We used to have a 'grey listing' style account signup, where people could only sign up with a secret link. Whilst this worked ok, it also made it quite challenging. You needed to reach out to the community, or know someone who was already in it. This really did reduce the amount of spam though.

Disqus
(a service) commenting was removed, and comments imported from there. This was because they
added advertising without getting consent(which I received a lot of complaints about). Additionally we didn't have much control over managing the comments in a way which more suited our community (more on this below).

​

Gravatars are being used for avatars. There's no profile image for the website itself.

What's left to do with comments...

1) Doc comments

The old "doccomments" need to be moved into the new comment system. This is because the documentation
lives in static files and is not produced by our website. Additionally,
you can have multiple comments on a single page. Then they need quite some moderation for spam and abuse.

2) Better moderator tools

Adding
spam/unspam links for moderators to
quickly classify something. Also a list of recent comments that need
moderation. The current system for this is really quite clunky.

The aim
is to really reduce the work needed to be done by moderators.

Moderating internet comments is soul destroying work... so let's make robots do it.

3) Optionally disabling comments on projects

After some discussions I've
decided to add an option for projects to disable comments. This way
people don't have to deal with unwanted silly criticism if they don't
want to. So, if someone is ready to get feedback for a project they can
turn on comments. If they just want to show people what they've done
(and perhaps get feedback from their own circle of friends) then they
can leave the comments off. There's been a number of people who got some
really weird demands, abuse, and other unsavoury comment behaviour...
and just quit their projects. eg. this is one project which quit
https://www.pygame.org/project/182 Another person removed more than 20
projects after getting some nasty comments from anonymous strangers on
the internet.

4) Comments only from other makers

Additionally, I think it might
be a good idea to only allow people who have posted a project to post
comments on other peoples projects. This will stop the drive by trolls,
and make comments more a discussion amongst peers. Gathering useful
feedback, and having constructive criticism is a great thing. I guess
this will be an optional thing as well, since whilst feedback from peers
is often of a higher quality, hearing from others is also very useful.

[comments allowed options]

- no comments on this project

- comments from other project owners only

- comments from everyone with an account.

This
will also be a nice signal that the pygame community is about making
things, and that we place importance on making things.

"If you want to
comment on this project, you first have to share a project of your own".

5) Reactions, ratings, awards, and stars/favourites

The
ludumdare, and pyweek systems have multiple ratings for different
aspects of a project. They ask for feedback on particular things. Sound,
fun, innovation, production... etc. So I'd like to store those for
comments.

Again, this will be optional for projects. Each will have a [Seek feedback.] option.

Feedback like this will make giving more useful comments easier.

Additionally,
a 'didn't work for me' option people can click can let people provide
that feedback easily without polluting the comments too much.

[didn't work for me] [on which OS][stack trace]

Whilst
pointing out defects is useful, it can also tend towards annoying
nitpicking and turn into unwanted bikeshed arguments. It also can get in the way of more long form thoughtful
discussion.

Awards are fun too(as used in ludumdare/pyweek), like "best duck main character".

Favourites,
and stars are useful for keeping a list of ones you personally are
interested in. They're useful for following projects. Also for "which
projects do other people like".

6) Social auth logins

I've
also added fields to projects and user profiles for linking up your
twitter username, your bitbucket, and github urls. It's useful to know
github/bitbucket links for projects. This allows downloading change
information from there, and even releases. Much like how the pygame community
dashboard brings information in from dozens of different social
platforms, I want to allow projects to have that too.

More
importantly, people who want to form teams or work on their projects
with others will be able to ask for contributors (or even know where to
find the project!)

Allowing people to just
enter their github/bitbucket/twitter/etc user names means they don't
need to link their accounts for signup. However, letting people use these will allow people to join more quickly. For
those truly too lazy to enter in an email address ;)

7) Putting the Python Code of Conduct in front

Putting the Python Code of Conduct in front is another conscious decision. Which in short says to respect each other, and don't be mean. It says the whole python community, along with the pygame community expects to be able to participate in a friendly constructive manner. So it's right there on the front page.

"Leave a thoughtful comment"

The messaging, and branding also tries to suggest people to be thoughtful. Rather than have a "submit comment" button we have a "leave thoughtful comment" button. It's a little thing, but hopefully it signals to people that they should play nice.

Multi coloured branding

8) How to write good criticism?

I'd like to be able to point people to articles on how to do good criticism of both software, and of arts projects. What makes good feedback? What makes a good review?

Is the purpose of a review to nitpick? Is it to help energize people, to recognize people for their work?

"When it was my work being critiqued, it made me excited to push my design and thinking forward."

I'd to point out reviews of a quality, as good examples. Writing reviews is an art form in itself. My time writing arts reviews really helped me working in creative fields, as much as receiving reviews. It really is a different thing to review a creative piece, compared to reviewing a purely functional piece.