Discuss Scratch

bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

Scratch Conference workshop signup tomorrow (Tue) morning 9am MIT time

bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

Scratch, Snap!, and social media

I'm halfway through reading Ten Arguments for Deleting Your Social Media Accounts Right Now by Jaron Lanier. He argues that the horrible state of the world, with everyone hating everyone else, “post-truth” statements by officials, and so on, is not the fault of the Internet in general, nor of smartphones, but specifically of social media, with their perverse economic incentives based on turning your attention into a commodity. (This is a different thing from providing a platform for people with common interests to meet; it revolves around things like keeping track of how many “followers” you have, which creates a market for pseudo-people.) He also argues that we can solve the social media problem by opting out in large numbers, which would force those Silicon Valley geniuses to develop a less harmful business model.

I should, I guess, mention both that Jaron was a friend of mine in my grad student days, and that even before reading this book I've made a point of staying off social media. (I do have a Twitter account, which I think I've used on three occasions. I never read other people's feeds, not even Jens. And I have a Google+ account because for a while you couldn't get a YouTube account without one, but I never read that either.)

So anyway, as the Snap! social site is soon to go live, we have to think quickly about its design. And the most obvious model is Scratch, which includes many of the mechanisms of horrible social media: likes, favorites, following, comments. Jaron's book gives a lot of research-based detail about how those things tend to turn people into, umm, a popular eight-letter word for “rear ends” that the filtering software probably won't let me use. Or rather, that that capability is already in all of us, and social media encourage that aspect of our personality rather than the more humane aspect. The enormous effort that goes into moderation here is required partly to catch massive attacks by outside, adult purveyors of a commodity I'm also probably not allowed to name, but is also required because well-intentioned members of the community are provoked into ___ness by the social media mechanisms. (Mea culpa: I have gotten snarky myself in Scratch on one occasion, toward people much younger than myself, provoked by comments on a (trivial) remix I made as a demo.)

So, why does Scratch have those terrible features? How do likes and so on improve the community? I know kids like likes, but plenty of things in life don't have likes, or badges, or followers, and kids like them anyway: ice cream, skateboards, and even, for many kids, books.

Part of the problem with social media is social pressure; one form of that pressure is public comments on blogs, YouTube videos, and Scratch projects. (Scratch takes pains to allow references to YouTube videos in Scratch comments, but to show only the video, not the comments, when you click the link.) (Technical aside: How can they do that without running into CORS problems?) Scratch comments do serve the purpose of offering advice to the author on how to improve the project, but they could do that without encouraging social pressure if the comments were private to the author instead of public. Scratch doesn't allow private comments because they worry, with some cause I guess, about bad guys luring kids into molestation.

So, I'd like to get advice from Scratchers about this. At this moment I'm leaning toward private comments on projects, no likes, no favorites, remixing but no remix counting (so none of those dreadful “add your name” projects), private following (even the followee wouldn't know about it), public comments on profile pages (because there, the social pressure is toward politeness). I get that “no favorites” would eliminate a source of promotion of a project to the front page. Maybe “most remixed” would work instead, although maybe it would leave to gaming by means of trivial remixes. Maybe private favoriting? You'd know (maybe) the number of people who favorited your project, but nobody else would. Maybe instead of “most popular” (leading to competition) something like “several people like” that would get you on the front page for a day or two.

Or am I underestimating the maturity of our community by thinking this way? (Remember, “our community” at any moment includes thousands of kids in a one-year course who haven't had the indoctrination in community values that Scratch kids get from each other.)

PullJosh
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

bharvey wrote:

So, I'd like to get advice from Scratchers about this.
A few things:
  1. Thank you for taking the time to think about these things. Running a community often offers the administrator a lot of power which – even if not abused, exactly – goes underutilized. Making sure to incentivize the right behaviors can make a world of difference.
  2. I love having the loves/favorites for a few reasons (although we could probably stand to have just favorites – no loves). Firstly, it gives me a way to keep track of and look back on projects that I enjoyed. If something is worth looking back on, I'll favorite it. I also like to use favorites as a way to share cool projects with other people. Anybody browsing my profile can see what other people are up to. (This begins encroaching on “popularity contest” territory, but I think that it makes a world of difference in helping quality projects be seen. It's beneficial not for project creators, but for project viewers.) Favoriting a project is also a great way to let the creator know that you appreciated it. Certainly, I could also leave a comment (and often do!), but having the simpler action is a nice touch as well. The main concern, of course, is that by displaying a number of favorites on each and every project, you'd be incentivizing an unnecessary focus on popularity/“fame”/etc. My recommended solution? Allow favoriting projects. Display a user's favorites on their profile. Notify a project owner when they receive a favorite (but maybe group similar notifications like twitter?) But do not display the favorite count anywhere, to anybody. Showing appreciation for a project is nice. Being appreciated is nice. But wanting to look impressive with big numbers? Not nice.
  3. Private following is a great idea.
  4. You mentioned “private comments on projects”. Does that mean all comments are private, or that it is an option? I love the comments, and think it's valuable to be able to see what others are saying about a project. Will it be a moderation nightmare? Maybe. But surely private messages are even worse?
  5. Comments, continued: Given that there are public comments, I might make another recommendation: Comment voting. Reddit does this, and – although there are plenty of things to criticize about Reddit – enabling votes does a pretty good job of filtering out the noise and promoting comments that say something meaningful. To be clear, you'd want to make vote counts on comments very, very private, and only use voting for comment ordering purposes. It would certainly be a bold choice, but I think it might make for higher quality discussion (and, importantly, higher quality reading) in the long run. (One caveat: Voting is much more useful when there are lots of comments, which I suspect won't be the case on Snap! projects. If that's a deal-breaker, I totally understand.)
  6. Also, while we're on the topic of comments, can we please have comment nesting? It doesn't need to be infinite, but at least more than one level deep. 5 or 6 should do the trick.

bharvey wrote:

Or am I underestimating the maturity of our community by thinking this way?
I'd say not. Certainly, the majority of users have the maturity and respect to be functional even if the system measures the wrong things. However, when dealing with such a large userbase, there will always be a user or two who cause a ruckus, and the more the system can work to prevent that, the less manual moderation you'll have to do down the road.
bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

Thanks, Josh.

About #2, I can see the virtues of favoriting, but I'd definitely like to avoid “I'll favorite your project if you favorite mine” (and similarly for following), which is why I don't want to say who favorited what. But another approach to consider is a rule that you can only favorite two a week, or something. Or maybe you can “favorite” all you want, but nobody gets to see that except you when viewing your own profile, and you can “like” two a week, which are public – or vice versa; I can never remember what the difference is.

Also, maybe you can only publicly like a project that was posted in the last month. I say this because I get a steady trickle of likes/favorites about projects I posted a decade ago, and that doesn't really help me or the community.

#4: I meant private only. But maybe I'm overreacting.

#5: Oh, no, please, no voting. That just encourages people to say things they think other people will like, and Reddit isn't my idea of a great role model, and I think the chronological ordering is just fine. (Or chronological by most recent post, as in the Scratch forum.)

#6: We are planning to use a third party free software forum system, which does threading. I suppose one way to handle project comments would be to have a forum thread per project; on the project page there'd be a “see comments” button that would take you to the forum. (Your Snap! login will work for every piece of the site.) Maybe those threads wouldn't be included in the global list of recently-commented-on forum threads.

(Maybe our forum site should be called Snagora!–would people get it?)

Hardmath123
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

What are the goals of the "Snap! social site"? Do you see it as a place people show off projects they're proud of? (Show of to whom?) Or do you see it as a forum where people hang out and talk and learn and make friends? Or do you see it as online storage for Snap! projects that happens to allow you to make a project publicly viewable (e.g. send grandma a link to a birthday card you made her)?

I think @PullJosh is right about favorites: being able to collect projects I appreciate and being notified when someone else appreciates my project are important components of the Scratch experience. But seeing what my friends have favorited is also an important component of the Scratch experience for me — it's a way I discover new projects.

I don't know what your content moderation policy is going to be, but I've received public comments calling me “idiot,” and I've received private comments calling me “idiot,” and the latter hurt much more. I've also seen a fair bit of constructive discussion on project comments. My first comment was on a project of Nathan's, and he taught me how “single-frame” worked in words I didn't understand, and then someone else clarified those words, and I learned something new from the entire interaction.

private following (even the followee wouldn't know about it)

…and the button says “stalk” instead of “follow”?

Depending on your goals (see above), I think it's okay for the followee to be notified, even if the whole social graph isn't public (you probably know this already, but Scratch displays followers and followees while hiding the number).

Technical aside: How can they do that without running into CORS problems?

I don't know how it works now, but at the time it redirected YouTube links to a Scratch-owned page that embedded the YouTube video (YouTube provides the appropriate headers to allow embedding videos, because people do that all the time in their blogs or whatever).

xn--cr8h
New to Scratch
48 posts

Snap! Team development discussion, vol. 2

might want to consider something like Hacker News' approach (not showing vote counts anywhere but using them behind-the-scenes to order comments and posts). i think counting things in general (likes, follows, remixes, downvotes) tends to promote a lot of toxicity

rip scratch forums 2007-2017
bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

Hardmath123 wrote:

What are the goals of the "Snap! social site"? Do you see it as a place people show off projects they're proud of? (Show of to whom?) Or do you see it as a forum where people hang out and talk and learn and make friends? Or do you see it as online storage for Snap! projects that happens to allow you to make a project publicly viewable (e.g. send grandma a link to a birthday card you made her)?
Good question. My not-so-good answer is that we have to have one because everyone keeps bugging us about it! And, less cynically, because what attracted me to Scratch a decade ago, despite its inadequacy as a programming language, was its amazing community of kids. For our first few years, we tried to convince the ST that it would be in their interest for our users to be part of their community, instead of a separate one. (I still think that's true; I worry that when our site is really running smoothly, the future Nathans and Kartiks and so on might be less present on the Scratch site, which would be a shame.)

So, yeah, show off, if we can engineer that to be noncompetitive; hang out and all that, for sure! I really cherish the friends I've made on Scratch, and I'm (sort of) an adult. Even though it's scary how much more our latest generation know about CS than I do, even about functional programming. We already have send grandma a link; that won't change.

I think @PullJosh is right about favorites: being able to collect projects I appreciate and being notified when someone else appreciates my project are important components of the Scratch experience. But seeing what my friends have favorited is also an important component of the Scratch experience for me — it's a way I discover new projects.
I see. Yeah, I do that too, sometimes. Okay.

I don't know what your content moderation policy is going to be, but I've received public comments calling me “idiot,” and I've received private comments calling me “idiot,” and the latter hurt much more.
Neither of those should happen. What was the context of the private comments? Not Scratch, I presume. This is the part that terrifies me; we can't just mechanically reject comments with the word “idiot” because maybe it's in a discussion of a project about Dostoevsky. Or, probably more commonly, maybe the context is “I'm an idiot” in response to a comment telling me about my obvious bug. We can have software that flags words and then have a human being read the comment, at least for the first week or two. (Human read before allowing the comment to appear on the site? Or review after it's online? Both seem horribly wrong in different ways, especially since we have exactly one person paid to work on Snap!.)

Oh, the more I think about this the scarier it gets. For example, I can see how it would be helpful in moderating to keep a count of how many flagged posts each user has had, or has had lately, or something, but that also feels really Big Brotherish.

(YouTube provides the appropriate headers to allow embedding videos, because people do that all the time in their blogs or whatever).
Ah. Thanks.

bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

xn--cr8h wrote:

might want to consider something like Hacker News' approach (not showing vote counts anywhere but using them behind-the-scenes to order comments and posts). i think counting things in general (likes, follows, remixes, downvotes) tends to promote a lot of toxicity
Right, I don't think sorting comments is enough of a benefit to justify having the counts!

djdolphin
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

PullJosh wrote:

(although we could probably stand to have just favorites – no loves)
Having both loves and favorites always struck me as weird. Favorites show appreciation to the creator and save the project in your favorites list, and loves are just an extra ego boost to the creator, I guess? I think having just favorites would be perfectly fine.

I agree that a creator should be notified when someone favorites their project. Make users' favorite projects public to help discovery, but don't show the favorite count on the project page. A possible alternative to showing the favorite count would be to switch the star icon (or heart, or whatever) to several stars at some easy-to-reach threshold like 3. It would indicate that several people like the project without encouraging competition like showing the actual favorite count.

Users should also be notified when someone follows them. I'd make the list of people a user is following public, also to help discovery. Users should be able to view who's following them, but keep it private, because making it public just encourages competition. And don't show the total number of followers on the list like Scratch does. If someone wants to know, they can count them up.

!
Hardmath123
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

bharvey wrote:

…we have to have one because everyone keeps bugging us about it!
Have we asked any of them why they want one, then? What do they say?

So, yeah, show off, if we can engineer that to be noncompetitive; hang out and all that, for sure!
It seems to me that “show off” inherently encourages some competitive behavior, in the sense that if the purpose of the site is for people to put up a project and have others see it, then of course they will start optimizing for having other people see it. It's natural, and not even necessarily a bad thing (I certainly learned some self-promotion skills on Scratch, simple things like “spelling counts” and “have decent project notes” and “be succinct but descriptive in titles”).

The trick is to avoid creating a zero-sum game. “Top liked projects” won't end well, because people want to get more “likes” than everyone else to be in that spot, and now it's a popularity contest. On the other hand, sending users private notifications when someone favorites their project is a positive-sum game. Everyone feels warm and fuzzy from the interaction, and you can keep doing it to generate more warm fuzzy feelings. Notice, for example, how Github has all sorts of “social” features like “stars” and “followers” and whatnot, but that nobody actively goes around saying “I'll star your repo if you star mine.” It's because for most, there isn't much incentive to having more stars than anyone else on the site.

On the other hand: part of why social media is addictive is that getting a “like” from someone you know gives that warm fuzzy feeling. People are suckers for things that feel good and come once in a while — hence slot machines, and why I refresh my email hundreds of times a day despite having push notifications turned on. If you enable a warm fuzzy feeling mechanism like “likes” or “favorites,” you're inherently creating this opportunity for addiction.

An idea people are discovering (or rediscovering) is to slow the pace of online interactions. For example, if you deliver all notifications in a batch at the same time each day, then you remove the “come once in a while” aspect and suddenly the website is a lot less addictive (I don't obsessively refresh the NYT Daily Briefing because I know that it only updates once a day).

What was the context of the private comments? Not Scratch, I presume.
No, I was accidentally Wrong On The Internet once (as opposed to just plain “wrong,” which I am all the time). I got a lot of hate mail, public and private, for it, and look hey I'm not a math major anymore! Long story, ask me later.

This is the part that terrifies me; we can't just mechanically reject comments with the word “idiot” because maybe it's in a discussion of a project about Dostoevsky.
Sure you can — it's not a perfect solution, but it's an excellent deterrent. Anything that makes you pause and think “do I really want to say this?” drastically increases the chances of you taking a deep breath and calming down and moving on. Besides, anyone wishing to refer to the big Russian novel will surely find a way to do so (as you creatively demonstrated in your post above… “eight-letter word”). It's a tradeoff worth making when you're dealing with kids, especially kids who aren't yet used to the what-you-say-affects-real-people-and-once-you-put-it-there-it's-there-forever nature of the Internet.

But that's not what I meant. I was saying that if someone were to throw an insult at me, it would hurt more if done via a private channel than a public one. (A would-be insulter is also likelier to say something rude if they know it won't be publicly visible.)

Oh, the more I think about this the scarier it gets.
Good. Yes, this should be scary.

It's not like anyone's else has figured out the right answer, though (have you heard of Club Penguin?), so no pressure to be perfect on the first try. :-)

Sorry, I don't mean to ramble — this has just been a thing I've been chewing on for a long time.
cycomachead
Scratcher
100+ posts

Snap! Team development discussion, vol. 2

djdolphin wrote:

Users should also be notified when someone follows them. I'd make the list of people a user is following public, also to help discovery. Users should be able to view who's following them, but keep it private, because making it public just encourages competition. And don't show the total number of followers on the list like Scratch does. If someone wants to know, they can count them up.


I don't know, I've found that being able to construct a social graph myself to be an extremely useful aspect of social networks. When I happen upon a new profile, the number of shared followers (people who I follow who are also following this person), is a super useful tool for knowing if there's a shared interest. Similarly, I've browsed people's github profiles and found people that way. One such example is where I know a person IRL, but maybe not their internet handle, and I can find them through some mutual friend or something.

Honestly, will all of this, I think the tech matters less than we want to believe. It's easy and fun to engineer solutions to problems. Yet, it's comparatively quite difficult to study, and monitor bad behavior. Compare random subreddits, or various Stack Exchange sites, or different courses' Piazza forums. They're all using the same technology, but can have _very_ different communities because the tone that's most prevalent or accepted is different, and moderation various widely.

I'm personally somewhat fond of HackerNews' ranking algo, but I'm not sure it's totally necessary from the get-go. HackerNews carters to a specific audience with a particular way of writing. I very much like the idea of needing some reputation before down voting, in general. Yet, I don't have that power and I mostly want to downvote rude comments.  ¯\_(ツ)_/¯

Anyway, I think the biggest thing is that we should feel free to study and experiment. I don't view a community, nor the tech powering a community as ever being finished. We should be adapting over time, but first we need to even support comments and remixing and whatnot!

Right now, the crucial thing is to make sure we don't mess anything up too badly – in that it's better to get started with a decent community sooner and improve that, than to build everything for the perfect community. However, we really just need to make sure we don't fall into a trap of letting some really bad take over a community. I have no idea how to handle that.

Reasons for Why I think the Snap! Site Should Exist

To get to the idea of why – I think it's very much about creating a community. “Showing-off”, perhaps, incurs negative connotations, but I don't think it has to be that way. For me, it's about sharing work that you're proud of, and hopefully finding others to collaborate with. The best thing about GitHub is the community. BitBucket and GitLab have fine (and sometimes drastically better) tools, but the thing about GitHub that is exciting for many people is that community.

From that community, I think a public site is a fantastic thing from a research perspective. I'm incredibly interested to see if we can form more specific communities within Snap! that demonstrate and teach CS. I also want reasons to get Snap! in front of people who are using it for unstructured learning. By creating a public community, we can hopefully compare formal and informal programmers, and learn more about how people use Snap!, and so many other things.
jokebookservice1
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

(Technical aside: How can they do that without running into CORS problems?)

CORS is about one website reading data from another website. Given that Scratch embeds YouTube, it has no way to read (or modify) the embedded site. The browser treats both sites as separate when showing them on the same page.

The ability to embed a site is enabled by default, you have to send a special header to say you don't want to be embedded. Sending the header solves the problem of “Clickjacking” where the Snap! favourite button (if it exists) is placed in a transparent <frame> over some kind of appealing content (e.g., “Win free money”). Since the frame is transparent, the victim will think they're clicking on the appealing content, not the favourite button. It'd be a good idea to mitigate against this (or at least think about the risks vs benefits of this), especially if there's a non-password-protected “Delete my account” button! You could have seperate views for the site when it's embedded, like a temporarily logged-out version?
bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

jokebookservice1 wrote:

the problem of “Clickjacking”
Aargh. I always used to tell my CS students that there are two things you should never try doing yourself: floating point computations and security. Always hire an expert.

Berkeley has a very active security group, and I think the very last step we should take before going live is to borrow a grad student for two weeks or so.

cycomachead
Scratcher
100+ posts

Snap! Team development discussion, vol. 2

bharvey wrote:

Scratch, Snap!, and social media

I'm halfway through reading Ten Arguments for Deleting Your Social Media Accounts Right Now by Jaron Lanier. He argues that the horrible state of the world, with everyone hating everyone else, “post-truth” statements by officials, and so on, is not the fault of the Internet in general, nor of smartphones, but specifically of social media, with their perverse economic incentives based on turning your attention into a commodity. (This is a different thing from providing a platform for people with common interests to meet; it revolves around things like keeping track of how many “followers” you have, which creates a market for pseudo-people.) He also argues that we can solve the social media problem by opting out in large numbers, which would force those Silicon Valley geniuses to develop a less harmful business model.

I should, I guess, mention both that Jaron was a friend of mine in my grad student days, and that even before reading this book I've made a point of staying off social media. (I do have a Twitter account, which I think I've used on three occasions. I never read other people's feeds, not even Jens. And I have a Google+ account because for a while you couldn't get a YouTube account without one, but I never read that either.)



So, I'd like to get advice from Scratchers about this. At this moment I'm leaning toward private comments on projects, no likes, no favorites, remixing but no remix counting (so none of those dreadful “add your name” projects), private following (even the followee wouldn't know about it), public comments on profile pages (because there, the social pressure is toward politeness). I get that “no favorites” would eliminate a source of promotion of a project to the front page. Maybe “most remixed” would work instead, although maybe it would leave to gaming by means of trivial remixes. Maybe private favoriting? You'd know (maybe) the number of people who favorited your project, but nobody else would. Maybe instead of “most popular” (leading to competition) something like “several people like” that would get you on the front page for a day or two.

Or am I underestimating the maturity of our community by thinking this way? (Remember, “our community” at any moment includes thousands of kids in a one-year course who haven't had the indoctrination in community values that Scratch kids get from each other.)


This is cool! I've heard a few interviews about his book recently. I don't know what to think, I suppose I should read it…but from hearing him talk I didn't get the impression that it was all that bad.

But in general, I think you need some stuff to be public to get the benefits of community. Lanier himself doesn't actually recommend people delete their accounts right now, or at least that's what he's said in interviews – it's more about how to view the problem.

I don't yet believe that it's impossible to have a community that has votes and numbers that is also nice. We want people to spend time with Snap!, not because it's good for us (like it is for FB and Twitter), but it's good for them to program and look at others' programs – whether that's learning CS or exploring creativity or learning to be a productive member of the community. Also, if the rest of the internet is meh, then I want more people to spend more time on Snap! because that's a better place to be.

I do think we could not show so many numbers at first; that seems like a fairly easy thing to play around with. But I do think, in the case of remixes, the remix tree is a super cool place to learn new things – especially if they're in a guided context, like a specific programming problem.

But this also goes back to my point about tweaking things: Once we see people gaming the system, I think we can put in safe guards. But, I think creating a system which we see as impossible to game is likely to stifle new and interesting uses.

I feel like there's a bunch of knowledge in past CHI proceedings that could help us.
bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

cycomachead wrote:

I've found that being able to construct a social graph myself to be an extremely useful aspect of social networks.
You should read Jaron's book and then we should have this discussion. (It's not a very long book.) He argues, and I agree, that the architecture of social networking is really terrible for society and that the benefits of finding friends are (1) not worth the cost, and (2) possible to design without the terrible parts.

And, I know this is going to sound pompous, but we are teaching children and we have a special obligation not to get them addicted to social media.

One thing we can do, it occurs to me, is adopt a different terminology. So, suppose instead of “favorite” we have a “bookmark” button. I bookmark lots of New York Times articles, some because I like them, some because I hate them, and some because they contain a specific small piece of information I want to use later. If I had to say these articles were my favorites, I wouldn't use the feature at all! And once you use neutral terminology, you don't feel the slightest urge to keep counts. This is also why “follow” is a better name than “friend” (as it was in the original Scratch site).

When I happen upon a new profile, the number of shared followers (people who I follow who are also following this person), is a super useful tool for knowing if there's a shared interest.
You can tell there's a shared interest because you like (not Like) their projects!

As for happening upon people and projects, as an anti-clique measure, we can put on the front page a feed of randomly chosen recent projects. And we can give each person a feed of projects that share characteristics (maybe level of sophistication, by some automatable measure, for example?) with your own projects.

I realize that kids get this incredible rush when they're chosen for the front page – I can see it expressed time and again in the project notes. And yes, I'm arguing that that rush is like a cocaine rush and we should take pains to withhold it from our users.

Honestly, will all of this, I think the tech matters less than we want to believe… They're all using the same technology, but can have _very_ different communities because the tone that's most prevalent or accepted is different, and moderation various widely.
I'm not intentionally focusing on technology; I agree that the style of moderation is also really important. But even making moderation possible will require technology. And I think that having or not having a “Love it” button isn't “technology” in the sense that automated backups is technology; it's a social and political decision in the design of a web site.

Anyway, I think the biggest thing is that we should feel free to study and experiment. I don't view a community, nor the tech powering a community as ever being finished. We should be adapting over time, but first we need to even support comments and remixing and whatnot!
Yes and no. I agree that it doesn't have to be perfect the first time, but that doesn't mean we just do any old thing, and it especially doesn't mean we mindlessly make it look like Facebook. (I think remixing is under control – you can load someone else's project and save it to your account. But yes, we should keep the history so we can present the project as “Jens's remix of Michael's remix of Bernat's original project” or whatever.)

“Showing-off”, perhaps, incurs negative connotations, but I don't think it has to be that way. For me, it's about sharing work that you're proud of, and hopefully finding others to collaborate with.
Agreed.

The best thing about GitHub is the community. BitBucket and GitLab have fine (and sometimes drastically better) tools, but the thing about GitHub that is exciting for many people is that community.
Github has a community? This is (really!) the first I've heard of it. If those other sites have better tools, let's move at least BJC, if not Snap!, there!

From that community, I think a public site is a fantastic thing from a research perspective. I'm incredibly interested to see if we can form more specific communities within Snap! that demonstrate and teach CS. I also want reasons to get Snap! in front of people who are using it for unstructured learning. By creating a public community, we can hopefully compare formal and informal programmers, and learn more about how people use Snap!, and so many other things.
I agree that things like the AT community on Scratch are fantastic. I am less sanguine than you about the merits of education research (we don't have to bore people here with that argument), but by all means, let's try it. Also let's have specific tools for particular use cases, of which the most urgent is support for classes in and out of schools. I want anyone to be able to start a class, into which others can enroll. There should be a mechanism for assignments, submissions, and all that, set up so that the students in a class still have a right of privacy apart from their explicit submissions. And I want two people to be able to own the same instance of the same project. (Joint ownership is way more urgent than the both-editing-at-once NetsBlox thing.)

bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

djdolphin wrote:

Having both loves and favorites always struck me as weird. Favorites show appreciation to the creator and save the project in your favorites list, and loves are just an extra ego boost to the creator, I guess? I think having just favorites would be perfectly fine.
“Bookmarks.” That's my proposed solution.

I agree that a creator should be notified when someone favorites their project. Make users' favorite projects public to help discovery, but don't show the favorite count on the project page… I'd make the list of people a user is following public, also to help discovery.
I need to understand this “discovery” business better. My first impression is that all these friend-of-a-friend techniques should just encourage cliques – or “bubbles” as they say in the social media biz. I'd like to see some creative new approaches, different from how Facebook, or even Scratch, does it. Here's a stupid idea off the top of my head, just to kickstart a discussion: Have a button that says “I have an hour to spare; show me ten random recent projects.” Then let the person pick “my favorite out of these ten.” Then do not count total picks per project! Instead, try to find statistical clusters, as in "people who bought this also liked that“ on Amazon. And use that to show the person an 11th project from the same cluster as the one s/he picked. And maybe even ask ”Did we guess right that you'd also like this one?" to refine the clusters.

(I am not a machine learning expert, but we have some… By the way, the Amazon recommendations I get are really bad. I would only want to do this if we could do it way better than they do.)

bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

Hardmath123 wrote:

Have we asked any of them why they want one, then?
Umm, we are doing so right now, right here!

The trick is to avoid creating a zero-sum game. “Top liked projects” won't end well, because people want to get more “likes” than everyone else to be in that spot, and now it's a popularity contest. On the other hand, sending users private notifications when someone favorites their project is a positive-sum game. Everyone feels warm and fuzzy from the interaction, and you can keep doing it to generate more warm fuzzy feelings.
Umm. Right, no zero-sum games. But “warm and fuzzy” is also dubious; read Jaron's book. On the other hand, building real communities is very worthwhile. I mean, I didn't get to know you because either of us favorited the other's projects, or followed each other. It happened because we hung out in the same AT threads. I grant the possibility that my use of the Scratch site is idiosyncratic.

Notice, for example, how Github has all sorts of “social” features like “stars” and “followers” and whatnot, but that nobody actively goes around saying “I'll star your repo if you star mine.” It's because for most, there isn't much incentive to having more stars than anyone else on the site.
So why have stars at all? That stuff makes me feel like I'm back in kindergarten.

On the other hand: part of why social media is addictive is that getting a “like” from someone you know gives that warm fuzzy feeling. People are suckers for things that feel good and come once in a while — hence slot machines, and why I refresh my email hundreds of times a day despite having push notifications turned on. If you enable a warm fuzzy feeling mechanism like “likes” or “favorites,” you're inherently creating this opportunity for addiction.
Yeah, exactly. That's what I want to avoid.

(But I'm very much aware that much of what makes you my friend–my real friend, not my Facebook-eqsue friend–is that we talk by email (and f2f, but we were friends before that), and that happened because I explicitly violated the TOS. I don't think I'm unique in that; I believe the Panther crew, for example, talked by email. Although I may be unusual in this context because I only have one email address that I actually read, rather than a special one for Scratch friends, etc. The brain-candy part of the Scratch site is, I think, in part a substitute for direct one-on-one conversation, but it's just not satisfying to people my age who didn't grow up with social media.)

An idea people are discovering (or rediscovering) is to slow the pace of online interactions. For example, if you deliver all notifications in a batch at the same time each day, then you remove the “come once in a while” aspect and suddenly the website is a lot less addictive (I don't obsessively refresh the NYT Daily Briefing because I know that it only updates once a day).
Great idea, thanks.

We can't just mechanically reject comments with the word “idiot” because maybe it's in a discussion of a project about Dostoevsky.
Sure you can — it's not a perfect solution, but it's an excellent deterrent. Anything that makes you pause and think “do I really want to say this?” drastically increases the chances of you taking a deep breath and calming down and moving on. Besides, anyone wishing to refer to the big Russian novel will surely find a way to do so (as you creatively demonstrated in your post above… “eight-letter word”). It's a tradeoff worth making when you're dealing with kids, especially kids who aren't yet used to the what-you-say-affects-real-people-and-once-you-put-it-there-it's-there-forever nature of the Internet.
Well, okay, that's another proposal for the list. Preemptive rejection of insult words. Although I really hate that asterisk thing Scratch does; it would be much more useful to pop up a window saying something like “Our not-so-perfect software has noticed this insult word in your message; are you sure you want to express yourself that way?” with action buttons such as “You're right; I'd like to edit my message before posting” and “I am using that word in a context in which it's not an insult directed to an actual person or persons.”

And I think this is harder for us than for Scratch because they're aiming for G and we're aiming for PG, or maybe PG-13. So the edge cases are edgier.

have you heard of Club Penguin?
I was a volunteer at an elementary school for several years. But the part about how they had 70 FTE doing moderation is daunting.

bharvey
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

cycomachead wrote:

This is cool! I've heard a few interviews about his book recently. I don't know what to think, I suppose I should read it…but from hearing him talk I didn't get the impression that it was all that bad.
The book is great! I don't agree with every detail; for example, I think he misunderstands the relationship between free software and free services. And he's into micromarkets, in which we'd charge users monthly fees for Snap! accounts, but credit their account every time they published a project, or something.

Lanier himself doesn't actually recommend people delete their accounts right now, or at least that's what he's said in interviews – it's more about how to view the problem.
I haven't heard the interviews, but in the book he's quite explicit that he wants “you–yes, you” to delete your social media accounts right now.

I don't yet believe that it's impossible to have a community that has votes and numbers that is also nice.
I worry that my quick summary is not doing the book justice. Numbers aren't the essence of the problem; it's the commodification of human attention and of data collected about people without their free (as in freedom) consent, because there's no practical alternative to Facebook and Twitter because of network effects.

I do think, in the case of remixes, the remix tree is a super cool place to learn new things – especially if they're in a guided context, like a specific programming problem. But this also goes back to my point about tweaking things: Once we see people gaming the system, I think we can put in safeguards. But, I think creating a system which we see as impossible to game is likely to stifle new and interesting uses.
I think that way of putting it misses the point. This may be partly my fault for presenting the issues inadequately. The problem is not that too-clever users are going to get around our niceness features! We are not going to treat users as enemies. The problem is that the entire mechanism of likes and comments and followers and rankings and all that was developed for a reason, and the reason isn't to improve human communication. It's to make a lot of money by commodifying people. So if we don't want to commodify our users, then it behooves us to start from scratch (not from Scratch) in designing an online community. If we start with the mechanism of dehumanification, we're not going to get things right by tweaking later. My straw-person proposal about showing users ten random projects is an attempt to illustrate what a designed-from-scratch communication channel might look like.

But yes, I agree that we should also consult UI experts about these questions.

PullJosh
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

bharvey wrote:

As for happening upon people and projects, as an anti-clique measure, we can put on the front page a feed of randomly chosen recent projects. And we can give each person a feed of projects that share characteristics (maybe level of sophistication, by some automatable measure, for example?) with your own projects.
Alright, here's an idea. We want to be able to show people interesting projects that they might enjoy, but want to avoid the front-page-hit rush for creators.

The front page can be one big list of projects which is randomized every time you reload. Each person sees a different set of projects, and it's different every time. And it is random, but it's weighted randomness. Some possible weights to consider: New projects are weighted higher than old projects. Projects with more favorites get a higher rating (and maybe favorites from people you follow count extra). Your own projects are weighted at 0, so they never appear.

I imagine there are more weights that could be used, and you clever people will have no trouble coming up with them. It's a nice, easily-extensible system that shows people all kinds of projects while still respecting their time (by showing more of the higher-quality projects, whatever that means, exactly). That being said, please tear the idea to pieces.

Edit: You also mentioned forum software. Please tell me it's Discourse?

Last edited by PullJosh (Aug. 6, 2018 12:02:22)

_nix
Scratcher
1000+ posts

Snap! Team development discussion, vol. 2

bharvey wrote:

Scratch, Snap!, and social media

Okay.. wow.. there were a LOT of posts about this while I was offline yesterday!

Having read your first post, bharvey, and no others, I'm going to give my initial opinion here. Sorry it's a bit of a mess and doesn't always tie in very well with the Snap! site.

When we look at Scratch, we see it mimicking many functional parts of Twitter, such as favorites (equivalent to Twitter “likes”), followers, and comments. We also see that Scratch's community mimics Twitter's in some ways.

There is usually a clear, even internalized, divide between “popular” and “not popular” Scratchers. Scratchers who get little to no interaction on their projects feel sad, and want to have more. This concept of “more” varies per the person. Some want to be “famous”, on the levels of people whose projects get boosted to top loved almost inevitably; others just want a few comments from people who are interested in the type of project they make. The same sort of thing happens on Twitter – browsing random profiles, it doesn't take me too long to find tweets along the lines of “does anyone actually read my tweets?” (I think I see less “how to get famous” or “how do I get famous?” -style posts, but maybe that's just because the people in the Twitter community are generally older than those in the Scratch one; or maybe I'm just not looking hard enough.)

So, then, the question is: How do we lessen this feeling of wanting more popularity? I think it's important to get to the root of that problem, to lessen that popular/not-popular divide. I doubt it's possible to altogether get rid of the feeling of wanting more, but making the split smaller is sure to help.

Lessening a divide means bringing up the base level – make “not popular” users “more popular” – and bringing down the upper level – the converse. I'm going to compare with the instance of Mastodon that I use, cybre.space. (Mastodon is, at first glance, a Twitter clone, and in common use has almost the same functions. But I'm focused more on the community than the technical things the site can do. Jargon-wise, “instance” means “a server/website which runs Mastodon and has a separate set of users/posts/etc.”)

On Cybrespace, and on all Mastodon instances, there are two timelines – the local timeline and the global, or federated, timeline. The federated timeline serves as a means of seeing what anyone is saying, doing, or sharing on any instance of Mastodon. The federated timeline is used as a means of discovery; for example, through there, I, as a user of the cybre.space instance, can see creations shared by users on the mastodon.art instance. The local timeline consists of posts created exclusively by users on the same instance you use. It's useful for finding people who are in the same community as you. There's usually less perceived friction in talking to, or interacting with, someone who has joined the same instance that you have; it's like talking to someone you've never necessarily spoken to but is within the same community building as you (perhaps one interested in the same topics, such as art), versus going outside and talking to someone on the street or in a different town.

(It should be noted that the local and federated timelines are purely chronological. These timelines contain all posts under their particular set (i.e. the single instance or all connected instances), only leaving out posts marked by their author “unlisted”. This should be contrasted to Twitter, where what position your post is shown is decided by a wholly obscure algorithm – one where the only commonly known factor is “how popular you are”. This inevitably leads to people wanting to be more popular just so that they can have a chance at having their posts seen, even by their followers.)

An important facet of Mastodon is that many instances have a “curator” of sorts. All instances have administrators (of course), and frequently these are users who keep relative watch on the local timeline and boost (equivalent to retweeting) creations or posts shared on their instance. This administrator user is usually in the default list of users a newly-registered account follows; while any user can “opt out” of seeing what their curator user shares by unfollowing them, most choose not to. Posts which are boosted by the curator show to their authors two things: First, that someone has noticed and had interest in their post – that is, the curator user – and second, that other people are interested – the ones who saw the post because it was boosted by the curator. To be clear, these numbers aren't absolutely huge or anything – four or five favorites, another boost or two, typically. But the interaction still matters and significantly increases the “not popular level of popularity”, thereby reducing the want to be more popular.

Also, while Mastodon retains many of the features that constitute how popular a user or post is, it somewhat puts them out of sight. In all timelines – the local and federated ones, as well as the timeline of posts/boosts from the users you follow, and the timelines on the profiles of individual users – boost and favorite counts are not shown until you actually focus and browse the post, but boost and favorite buttons are shown, as well as a reply/comment button. This encourages users to interact with posts without worrying about how popular, viral, or unnoticed they are. Likewise, on Twitter, you can view details of a user, such as follower count, simply by hovering over their avatar – nearly anywhere in the UI, but most importantly beside the posts they make that end up on a timeline you're viewing. On Mastodon instances, while the same details can be seen, they take a little effort: opening the user's profile by clicking on their avatar. This also encourages interaction without worrying about popularity and lowers the idea of the “popular level popularity”.

(One other thing – you never get notifications like “this user and 8 others boosted your post”. You'd get the boost-notification nine times. This again pulls away from focusing on the numbers; it also encourages you to view their profiles and see what they do, which in turn helps to build a community.)

To pull back to Scratch, let's compare. Like Mastodon, Scratch does not show details of a user when you hover over their username. But it does show like/favorite counts on projects before you've interacted. bharvey, you noticed this; you suggested that those counts might be either private or not automatically exist at all. I also want to compare the front page of Scratch to those of Twitter and Mastodon. As compared to Twitter, projects end up in various rows that necessarily function as popularity contests: What the Community is Loving and the same for remixing. Worse, the popularity of these projects is emphasized by placing the love or remix count beneath the very project icon on the homepage, encouraging users to view the most loved and remixed projects. Twitter presumably favors most-liked posts as well, placing the “In case you missed it” section relatively close to the start of its homepage (and that section goes on relatively long, showing in no particular order the most-liked posts created by the users you follow). You suggested a section titled “several people like”, and this is interesting to me; I want to emphasize that I don't think it's a good idea to make more likes equate to more chance at getting in that section, because that would bring back the popularity contest. Once a project passes a certain, relatively low threshold for going into that row, stick it in a hat and let it be picked at random.

Mastodon features the local and federated timelines, which are places to discover posts and creations by the community. Perhaps something similar could be made for the Snap! community? It's important to make note of Scratch's stance on this. On the Scratch homepage, there used to be a section titled “Recently shared projects”, designed to give attention to obscure projects created by users who don't have that many followers; this was removed because, quote, "Unfortunately our data shows that it doesn't do that very effectively, and unfortunately it can also be taken advantage of by troll[s] to show inappropriate content." This makes sense, yet at the same time it conflicts with what's seen, or rather not seen, on Mastodon: People browse and interact with posts on the local timeline frequently, and there is very rarely anything inappropriate which ends up there. And the local timeline shows all posts (save for unlisted ones), immediately once they are posted. This indicates that sites such as Mastodon are nearly wholly free of inappropriate content. (Perhaps trollish people – both adults and kids – are more likely to target kids. I could go deeper into the topic, but I don't want to try to make connections that aren't there, and I don't know enough to be certain. I mean - as I commented on that linked GitHub issue, I have never personally seen anything inappropriate show up in the recent projects row.)

One last thing I want to bring up, just as an observation: Scratch has many thousands of active users constantly. The Snap! site will not (it's not on the course of world domination quite yet ). Twitter has far more active users than even Scratch does. Mastodon instances do not. I'm not sure what conclusions to draw from this, but it seems important.

══ trans autistic lesbian enbydoggirls // 16 17 18 19 20, she/they
sparrows one word to the paragraph // <3 // ~(quasar) nebula

Powered by DjangoBB