Lucario621 wrote:
Obviously you're not listening.
I have tried to give you the best responses I can. What did I not answer? I'll try to clarify.
Lucario621 wrote:
You're seriously going overboard about tags and stuff. Seriously - there shouldn't be tags for "viewed", "created by x", or "downloaded" - even "favorited". The current methods are fine. Though we could definitely implement things like searching by user - but we don't have to use tags for that.
I agree; vote-able/weighted, tags/attributes may not be appropriate for everything.
I'm trying to show you the power of this idea. They can work together to help us find projects and collaborate in ways we have not yet.
Lucario621 wrote:
Seriously. We don't have to revolutionize Scratch that much .
I'll take that as a complement. I wouldn't want to be accused of thinking too small.
Last edited by JTxt (2010-08-04 12:34:23)
Offline
Believe me. I admire how much you're doing in hope to get this idea to the Scratch Team, showing it to as many people as possible, trying to make it as great as possible. But I'm just sayin you're going an inch too far :3
Offline
Lucario621 wrote:
Believe me. I admire how much you're doing in hope to get this idea to the Scratch Team, showing it to as many people as possible, trying to make it as great as possible. But I'm just sayin you're going an inch too far :3
I moved my comment from your Make the front page customizable idea to here:
AddZero wrote:
I agree! To make this even better, I think we need to make tags and galleries more relevant as well.
(One way, I think, is FaveTags. http://suggest.scratch.mit.edu/forums/6 … ags-a-fron ) Also by making tags more useful this way, the front page would become less important because people can go to a mini-frontpage for the tags they like. (games, art, pokemon) ( but they could still explore lesser known project types because tags overlap into multiple projects. games -> trig -> math)
Also, to make this simpler for the user, the frontpage could automatically suggest projects based on the tags you use. (by grabbing top/recently tagged projects from your favorite tags.)
And user customizable views would be useful as well. also to keep track of groups you belong to, etc.
Perhaps writing that there was going "too far"?
I still agree with and vote for your idea, but I feel we need something that will improve the quality of categories, or we're "putting lipstick on a pig."
The current website follows popular thinking: on or off tags (not weighted), and separate rating values:
- love it, (non specific to tags so it will also rank high in less popular tags it has little to do with. eg)
- views, (so often projects with enticing thumbnails or titles get views, on top of lists, then more views... eg "CLICK TO SEE" though it is better since the changed to top viewed recently.)
We can do better!
Your honest criticism continues to help this idea. Thanks!
I'm also very thankful for the positive input from many others--- even some from the scratch team; more from them would be excellent, but this idea must be usable by kids and young adults. If it can make sense to them, it's easy to use, and helps people find relevant/related content and collaborate better than any other site so far, then we did something great.
Otherwise, let's think up something better!
Last edited by JTxt (2010-08-13 16:37:04)
Offline
I have no problem with all these ideas. I think they are essential in making Scratch as diverse as possible.
Lucario, I seem to remember you being one of the people unhappy about the amount of art and uninteresting projects on the front page. FavTags would fix that.
Just so you know, I'm perfectly happy with the name FavTags.
One last thing. What if a tag was submitted multiple times (by different users)? How would it be represented? Would it be listed the number of times it was submitted?
Actually, maybe a better question would be "How will FavTags be displayed on a project page?". This idea would increase the use of tags, so there would have to be a good method for orginization. Imagine 200 different tags on one page!
Last edited by shadow_7283 (2010-08-08 11:06:51)
Offline
Thanks!!
shadow_7283 wrote:
One last thing. What if a tag was submitted multiple times (by different users)? How would it be represented? Would it be listed the number of times it was submitted?
A tag would only be listed on a project once, added by the project owner or another user.
When a tag is added to a project for the first time, it is given the score of 1. (For how people added it to their bookmarks with that tag. Then it's also added to the "recently tagged as X" on the X tag page. Where in effect it is nominated for that tag, then other people visiting the X tag page can visit the project then vote it up or down for X and other tags.)
So each tag on a project has a score. The tags are sorted by votes. So the tags are in order of what the community agrees are words that describe the project. Common tags like "game" would be at the top. If many people think it's "awesome" or a "favorite" those tags will have a higher score and higher in the tag list. Tags with scores below a certain number like -5 are hidden until revealed. So someone can add an "awesome" tag (or press the + or ★ if it was already added) to bookmark it with that word, others may agree and do the same, others may not (and vote down with - or ⇩, after they vote up with another tag), causing it to not progress in the "awesome" tag page.
shadow_7283 wrote:
Actually, maybe a better question would be "How will FavTags be displayed on a project page?". This idea would increase the use of tags, so there would have to be a good method for orginization. Imagine 200 different tags on one page!
It could be represented many ways.
I first envisioned it similar to how tags are now: a vertical list on the side, but in order of ranking, with a score next to each tag, with the option to vote up or down.
But then I put them inline (like text) just below the project and hid the score for each tag, until the user mouses over, which also reveals the option to vote down. This hopefully reduces clutter.
The most relevant would be at the top, and least relevant would be hidden... I don't imagine 200 tags on a project would be voted above -5. I guess most of those would be voted down and hidden. (unless the user reveals them.) Perhaps if that does happen, show the the top 50 tags voted above -5? or still show all voted above -5, but make the lower scored ones smaller text?
Also there is a text box for adding tags. (perhaps with auto-suggest to prevent misspellings and non-important variations, and a popup for picking from commonly used tags for that user, and groups the user belongs to?)
Please take a look at the mockup I made, I hope to improve it that and make it easier to follow shortly.
Last edited by AddZero (2010-08-10 17:07:00)
Offline
Reading though Folksonomies: indexing and retrieval in Web 2.0 By Isabella Peters I learned (very late) that Amazon has tag voting, and tag communities, very cool!
I think we could do better and simpler, at least for Scratch's target audience.
For example, I wouldn't put tag voting on an overview page, as to not encourage voting before viewing a project, (but for products, by voting they're assuming you're already read/watched it. )
And I don't see faceted search- combined tag communities (eg: games + trigonometry + flowers) with tags, for more focused communities.
Well, there's much more to be learned here.
Last edited by JTxt (2010-08-17 16:59:09)
Offline
I started this table ScratchR-1.x-major-features-and-function-overlap.pdf a while back while trying to outline thinking behind FaveTags. I kept working on it for Andreshmh, and in hopes that it can help other ideas.
I thought it should be mentioned here too.
Also, here's a form topic to discuss it specifically.
Let's please keep discussing FaveTags, or other better ways to improve the ways we bookmark, promote, categorize and collaborate on Scratch.
Last edited by JTxt (2010-10-25 14:57:40)
Offline
This is like my idea, where it analyzes the project's name and then chooses which one would fit the Suggested Projects.
Offline
Scratchthatguys wrote:
This is like my idea, where it analyzes the project's name and then chooses which one would fit the Suggested Projects.
Interesting! I couldn't find where you suggested that. Do you mind posting a link?
This isn't very much like your idea though. This categorizes projects based on what the community thinks are helpful tags for organizing the projects in their individual favorites, and for helping to keep their favorite public tag pages relevant. (It could also catigorize projects on the front page, but more importantly...) Each tag page becomes a mini front-page: "recently tagged as X", "top tagged as X"... So tag pages represent both upcoming and top projects more fairly.
I think this would add a stronger motivations for 'helpful' tagging.
I believe the community can add and prioritize tags for the community better than just the project creator, who may be biased.
And this takes pressure off the front page so it doesn't have to try to be the authority of what everyone is interested in. Instead, scratchers can go to "front pages" that interest them.
Example:
A project maker may also add the "Awesome" tag for organizing their project in their user page, and hope others will agree.
It will also show up on the "Awesome" public tag page under "Newly tagged as Awesome" so those that like "Awesome" projects will see it.
IF enough agree it's Awesome and put in their favorites under "Awesome", the project gets a higher scoring for "Awesome", and will show in "Top tagged as Awesome"
Popular single tag pages (like "Awesome", "Game", "Art") may be too busy to hope to be shown in them. But there's also multiple tag pages that are less busy:
If a project didn't make it in the "Awesome" tag page, that's OK. It still has a great chance to be shown in "Awesome + Racing + Snails" (if it scores high in racing and snails.) That will probably be a more accepting and like-minded audience anyway, that could give more valuable feedback.
Last edited by JTxt (2010-10-30 12:58:39)
Offline
awesome
Offline
support and this shuld get Itopiced!
Offline
Thanks!
I try not to bump threads without trying to add something useful, but it takes me forever to write and I end up with walls of text I think many don't read; also life and work is interfering. so, it's been a while.
I still think this (or something on/near this train of thought) has great potential for Scratch and/or other collaborative user generated content sites... it would change how we collaborate and self organize, for good, I think... what do you think?
Please fellow scratchers/scratch team,
will you read this over and help improve/promote/develop/discuss/critique/share a better idea?
Last edited by JTxt (2010-12-06 13:55:37)
Offline
I moved this question from here so I don't take it off topic.
TheSaint wrote:
JTxt wrote:
Please take a look and critique. It's in development now.
This is certainly an interesting suggestion. My only concern is that it can be abused just like the normal tagging system. If everyone likes the waffle tag, then they will vote up for it, even if it isn't relevant to the topic. Unfortunatly, any type of tagging system won't work perfectly because people will try and game it.
So, how do we mimize this?
Correct, with this system, if the majority of scratchers like the "waffle" tag to be used for any kind of project then yes, the "waffle" tag community page could become useless. (if they target the same projects together, more than the rest of the community can respond to.) But I believe this is unlikely to happen:
Lets say a person decides to tag many projects with "waffles" and rallies support: "Everyone, tag any project with wafflles!" (as this started. I'll refer to them as "project waffles".)
Those that frequent the "waffle" tag page to find, discuss, and collaborate on projects with waffles, will start to see irrelevant projects in "Newly tagged as Waffles"
They may decide to visit those project to vote them down for the "waffles" tag.
Or just wait for them let them drop off "Newly tagged as Waffles"
I believe in this environment "project waffles" would die out fast.
But lets say there are more people in "project waffles" than in the "waffles" community and they decide to vote up the same irrelevant projects as waffles, to try to make them "Top tagged as waffles" on the waffles page and make "waffles" a top tag on those projects.
As each project becomes popular in that and other keywords, and to the site as a whole, more people will watch the project.
Each person that views any project is invited to vote up tags that go with the content, and vote down tags that don't, easily. If they see "Waffles" near the front of the list and don't think it's useful/funny, or want to save the project in their bookmarks on their profile under "waffles", I think they're more likely to vote it down.
So the entire site and individual tag communities help regulate tags. With some orchestration a project may become popular in an irrelevant tag, but unless the majority of viewers agree with the tag, and don't vote it down, it wont stay.
Also, I think a reason why "project waffles" took off was because once the tag became popular for irrelevant projects, and showed on the front page, it became a place to advertise.
But I believe this desire would be less because new and good projects will have a chance to be seen on more popular and relevant tag pages like "game" In newly tagged as "game", and top tagged as "game" in 24 hours, week, month, all time...
and more importantly: in specific tag combination pages like "game+snail+racing".
I think the majority of scratchers will help keep tag pages relevant so they can collaborate with others with similar interests. ...and the majority in this system is more equipped to respond to a minority.
Last edited by JTxt (2010-12-16 15:35:31)
Offline
JTxt wrote:
I moved this question from here so I don't take it off topic.
TheSaint wrote:
JTxt wrote:
Please take a look and critique. It's in development now.
This is certainly an interesting suggestion. My only concern is that it can be abused just like the normal tagging system. If everyone likes the waffle tag, then they will vote up for it, even if it isn't relevant to the topic. Unfortunatly, any type of tagging system won't work perfectly because people will try and game it.
So, how do we mimize this?Correct, with this system, if the majority of scratchers like the "waffle" tag to be used for any kind of project then yes, the "waffle" tag community page could become useless. (if they target the same projects together, more than the rest of the community can respond to.) But I believe this is unlikely to happen:
Lets say a person decides to tag many projects with "waffles" and rallies support: "Everyone, tag any project with wafflles!" (as this started. I'll refer to them as "project waffles".)
Those that frequent the "waffle" tag page to find, discuss, and collaborate on projects with waffles, will start to see irrelevant projects in "Newly tagged as Waffles"
They may decide to visit those project to vote them down for the "waffles" tag.
Or just wait for them let them drop off "Newly tagged as Waffles"
I believe in this environment "project waffles" would die out fast.
But lets say there are more people in "project waffles" than in the "waffles" community and they decide to vote up the same irrelevant projects as waffles, to try to make them "Top tagged as waffles" on the waffles page and make "waffles" a top tag on those projects.
As each project becomes popular in that and other keywords, and to the site as a whole, more people will watch the project.
Each person that views any project is invited to vote up tags that go with the content, and vote down tags that don't, easily. If they see "Waffles" near the front of the list and don't think it's useful/funny, or want to save the project in their bookmarks on their profile under "waffles", I think they're more likely to vote it down.
So the entire site and individual tag communities help regulate tags. With some orchestration a project may become popular in an irrelevant tag, but unless the majority of viewers agree with the tag, and don't vote it down, it wont stay.
Also, I think a reason why "project waffles" took off was because once the tag became popular for irrelevant projects, and showed on the front page, it became a place to advertise.
But I believe this desire would be less because new and good projects will have a chance to be seen on more popular and relevant tag pages like "game" In newly tagged as "game", and top tagged as "game" in 24 hours, week, month, all time...
and more importantly: in specific tag combination pages like "game+snail+racing".
I think the majority of scratchers will help keep tag pages relevant so they can collaborate with others with similar interests. ...and the majority in this system is more equipped to respond to a minority.
I see what your saying, and it could work, but I am gonna play devils advocate here for a sec:
You right in that there will be the people who think its funny to have a waffles tag, and people who don't. Unfortunatly, for every person who doesn't, there will 3 that don't care, 6 that don't look and see it tagged, and 4 who won't bother to do anything about it. Your are basing the arguements on that each person will vote. This won't happen, simply because of apathy.
And while each person in the waffles community will vote for there tag, because they are devoted to it, and have a passion, the ones who detag will become frustrated, and quit detagging. It's not just the waffle tag, but the awesome tag, the random number tag, and about 100 others that each has a support group, and the peolpe untagging it only have one.
Just getting thoughts out...
Offline
TheSaint wrote:
I see what your saying, and it could work, but I am gonna play devils advocate here for a sec:
Cool, thanks for considering this!
Yeah, Voter apathy might be a problem.
I think it would take more people working together it mess tags up,
instead of one person that is needed now.) I hope/believe the community would respond.
(edited)
(perhaps: if you visit a project from a tag page, make it easier to vote up or down that tag. highlighted or a separate widget perhaps. ...to make helping to keep tags clean easier, though that can work both ways.)
Also with controlling missuse:
Andres suggested:
andresmh wrote:
I think having a sub-group of Scratchers acting as curators of the
tagging system could be a good way to start with well categorized
content. Then you can open it to the world once a structure and norms
have been created by a small group.
The democratic voting up/down might be good at the beginning with the
initial curators but then having a system for "good" taggers to have
more voting power would be good.
Yeah, so there can a "vote strength" value for users. All of a user's votes on tags would be multiplied by this number.
So, a moderator could nullify, weaken or increase a voter's vote power.
I personally dislike the idea of some users having more vote power than others, unless it's only used in extreme cases. And I'd prefer transparency so people can can trust it.
Perhaps voter strength could be community moderated somehow; perhaps when you visit someone's bookmarks, you can vote them up or down on the helpfulness of their tagging. But that might turn into a mess... or be good.
I'll put "vote strength" in to experiment, and expose/change it if needed.
Last edited by JTxt (2010-12-17 11:20:39)
Offline
I think this system is complicated to word but I'm sure it's possible to melt it into an easy to use, 'fluent' interface. Giving people more vote power than others, reduces the system's transparency and makes it (even ?) more complicated. Wouldn't it be best to start from a clean base, and only add additional rules if they really seem necessary?
I'm wondering 'I'll put "vote strength" in to experiment' sounds like you have something working, if so, congratulations because I wouldn't want to be the one coding this :p
Offline
JSO wrote:
I think this system is complicated to word but I'm sure it's possible to melt it into an easy to use, 'fluent' interface. Giving people more vote power than others, reduces the system's transparency and makes it (even ?) more complicated. Wouldn't it be best to start from a clean base, and only add additional rules if they really seem necessary?
Thanks, I hope it will be easy to use and powerful.
Yeah, I have a "voter_strength" in the user table, I think it may be important, at least for moderating who can start using it first. (as andresmh suggested.) We can use it as all or none, or more or less, depending how we use the value.
JSO wrote:
I'm wondering 'I'll put "vote strength" in to experiment' sounds like you have something working, if so, congratulations because I wouldn't want to be the one coding this :p
FaveTags / FavTags has a home, thanks to andresmh ; but not much code yet.
I think I have the database mostly figured out. And I think I know how many of the functions should work. But I'm afraid I'm doing it wrong. I'm hoping for more feedback from the scratch team and/or other experienced developers.
Andres has given great advice: make the most important parts first.
Although, I have a hard time balancing that with my thinking that it should have a good foundation for all the parts first. Because I think it's vital that all the parts work together, or we're just remaking what we have already: separate parts that do some similar things, but don't work together.
But, I probably need to just get something working soon. Release Early, Release Often instead of trying to build a cathedral.
I'll share more of my progress here soon so hopefully it can get even more experienced feedback.
Thanks!
Last edited by JTxt (2011-01-04 12:55:21)
Offline
Ok, here is my latest stab at the FavTags database.
I need to make some changes, (andresmh made some good points I need to consider more) may need to start over, but I hope it shows what I'm going for.
When a user first tags/bookmarks a project, it creates a TagVote.
(If the Tag already exists, it links to it, otherwise it creates the Tag first.)
Users can have 1 TagVote per tag, per content(project). The TagVote is permanent, but the user's Vote in the TagVote can change (-1, 1) and be hidden by changing the vote to 0. (That way a user can't game "recently tagged as..." on tag pages by re-voting, but can change their mind to (un)bookmark with a tag and affect the content's public score for the tag.)
...
Perhaps group tag membership could be left out to start, but I want it to replace private galleries for collaboration, and needs to work together well, so I would add the table, then enable it when we get to that point?
So yeah, that's my thinking.
What do you think?
Last edited by JTxt (2011-01-05 01:27:01)
Offline
Analyzing the schematic takes some time for me and I'll probably have to do so a few times, I'll get through :p
I've always had difficulties doing the most important things first with web development because, when starting something, everything is relying on something else and there's no real starting point.
I'm thinking, it might be useful to keep all TagVotes as you said, but keep a tag weight for every tag vote too. It Could of course be calculate from all tagvotes on runtime, but I wonder if that wouldn't be too stressy for the server
Offline
JSO wrote:
Analyzing the schematic takes some time for me and I'll probably have to do so a few times, I'll get through :p
Well, this is my first, so it's probably not your fault.
JSO wrote:
I've always had difficulties doing the most important things first with web development because, when starting something, everything is relying on something else and there's no real starting point.
I like the advice: "Do it" so you mess up and fix it faster.
(but I'm still working on a better theory for that before I can put it to action. :)
JSO wrote:
I'm thinking, it might be useful to keep all TagVotes as you said, but keep a tag weight for every tag vote too. It Could of course be calculate from all tagvotes on runtime, but I wonder if that wouldn't be too stressy for the server :/
Do you mean a way of caching the scores of each project to each tag?
Yeah, that could become necessary quickly... another table probably?
But first I'm going to figure out the queries that will be needed to calculate it.
(and/or do you mean more possible values for TagVotes? (a user's vote for a tag to a project) Currently TagVotes can be 1 or 0 or -1, for up-vote (bookmarked), canceled, or down-vote. It could be more values, a float even, so later on you could have a 5 star rating for tags or something... perhaps that could be used site wide and/or so that the user can sort their bookmarks pages. but I can leave that simple for now.)
Thanks for thinking about this and helping JSO!
Offline
Ha! I just found out about a Drupal module kinda similar to this: Community Tags
The database table is similar to the TagVotes table I made.
It connects the content (node id), tag (term id), and user (user id)... and has a date!
But it doesn't allow for down or canceled votes,
and no weighted tags (Though someone requested it.)
or have a modified date,
or have a way to show recent and top tagged items on the tag page, (though they can be customized quite a bit.)
or have comments on the tag pages, perhaps this Taxonomy Node module will allow it.
And I don't think there is an easy way to make group tag permissions for users. But that sounds like a pretty simple module to make.
But cool!
And I like the name Community Tags much better than FavTags
("FaveTag" and "FavTags" names are already used for unrelated projects.)
So I may try to build off this...
It would probably be slower though, and may run into other limitations. But I could probably build it faster than I could learn a new framework.
Last edited by JTxt (2011-01-06 18:16:26)
Offline
I always prefer building from the ground up instead of using a framework :p It's a personal preference though.
As for the db, I bet you're doing a way better approach but this is probably how I would do it:
table 'tags':
id, name, owner, weight
^ the object (project, gallery, ...) the tag is applied to.
What's the proper name for that?
table 'tagvotes':
id, tagid, userid, votestrength, date
This way, the weight would be sort of cached in the tags table. Only because I think that collecting *all* tags for every pageview, and calculating the tag weight from it could be sort of heavy for the server. I never did web dev for heavy use servers so I have no experience with that. I'm actually just guessing.
Without weight caching you could probably merge everything into one table. But then still, you have to store the name of the tag ('game', 'awesome') and you don't have to store it for every tagvote.
Now I have been thinking about it, you need a vote strength per tag anyways, to store a canceled tag, upvote or downvote. It would be fairly easy to store a vote strength for each user and just mulitply by that number at the time I make a vote (say I have a vote strength of 3 my votes could count for -3, 0 or 3).
I wonder what would happen if my votestrength increases/decreases after a while though. Would you store my tagvote with (-1, 0, 1) and then multiply by my votestrength every time you have to calculate a tag weight for a project? That way, when you increase my votestrength, it is applied to all previous votes I made too. Otherwise, my new votestrength only applies to new votes I make. Same for when my votestrength decreases, should it to apply to all the votes I ever made or just the new ones?
Last edited by JSO (2011-01-07 06:19:30)
Offline
Thanks for the thoughtful reply again JSO!
I started replying more directly, but my mind changed/clarified on somethings. I'll try this way but I might be missing some things. Sorry, I'll try to ensure I answered you well on Monday.
Tags are not directly related to content, and do not really have an owner. (although group tags can have members, and owners, later.)
The cumulation of TagVotes make the relation from content to tags.
Ok I see now:
There can be a TagContentScore table, that keeps the total for each tag to content score. So UserTagContentVote (renamed from TagVote) stores all the votes, but while voting happens it adjusts the the TagContentScore, so that can be read faster than adding up all the UserTagContentVotes.
Users could have a voterstrength that is used when adding/subtracting from TagContentScore.
a vote is still a vote (1, 0, -1 unless we change it to a star system, but not yet.)
If someone's voterstrength changes. it will need to adjust the TagContentScore for every UserTagContentVote they made. But that shouldn't happen too often I think.
(TagContentScore can be recalculated in case it gets out of sync. multipling everyone's voter strength to their votes and adding up.)
I think voter strength should affect past votes, as a way to reverse damage and perhaps to reward helpful taggers with more influence. (I'm still not a big fan of that, unless perhaps it's transparent, and perhaps community controlled.)
I started writing out a step by step example with sample data.
I'll try to clean that up Monday, thanks.
Last edited by JTxt (2011-01-10 11:21:46)
Offline
Hi, I just wanted to add some thoughts/questions:
(Sorry if these have been answered!)
How are projects ranked? If tags are weighted, and can have different numbers of votes, and projects can have multiple tags, the ranking seems quite complicated to me.
For example:
Sorting the list of projects on the homepage
Sorting a list of projects with a given tag / (tags?)
Is the importance/weighting of a tag dependent on the number of votes it's recieved from multiple projects?
Also, if you're considering implementing this, have you looked at couchdb? It's a different kind of database to using SQL/tables, but I kinda prefer it, and it seems to make life easier for scaling too, particularly for 'Views' which are certain lists/ways of listing documents from the database.
Good luck with your idea! Sounds a lot better than what I've seen of the current system...
Offline