Three.js: SO [three.js] appaling question quality

Created on 5 Oct 2017  路  15Comments  路  Source: mrdoob/three.js

The quality of three.js tagged questions on SO is horrible. Each question that makes sense and is properly formatted is followed by 20 that are just incomprehensible, RTFM, i've no idea wtf im doing sort of thing. At one point I started getting frustrated, but for some reason, I can't stop looking at them. I'm under the impression that some experts who used to frequent SO have stopped doing so.

I'm still learning how SO works, so I posted this, and got some interesting information, but i'm not sure what to make out of it:
https://meta.stackoverflow.com/questions/357466/three-js-tag-has-really-bad-questions

  1. 40% overall unanswered questions seem to be really bad, average is 29%, good is 10-15%. Sounds like it's worse than one of the two worst tags, almost as bad as the other.
  2. three.js seems to end up in the same spot as categories that attract many non-programmer types 3D graphics attracts a lot of beginners who neither have the math skills nor the programming skills to handle these APIs.

Since people do get referred to SO from here:
If you need help, please use [stackoverflow](http://stackoverflow.com/questions/tagged/three.js).

I thought i'd share this.

I'm also under the impression that a few years ago, there were more good quality questions overall. I've even seen links to West Langley's answers on SO as a three learning reference, but it looks like those are coming in less frequently.

I've heard that the resources and tutorials can be quite out of date. Three moves quite quick, and often has major overhauls (?), which would explain this. Maybe having more official tutorials that have to be fixed and working the same way examples do could address this?

Maybe some strategy and effort could be put to clean up SO's [three.js] tag. Perhaps rather than sending people to SO, we could send them to the docs, and possibly some three agnostic literature on graphics, webgl, math etc.

Also might be worth having a discussion on who uses three, and how. It feels that all the shortcuts that three offers work while someone is copy pasting the code, as soon as some modification occurs, things start breaking up.

The current situation could be good for the experts though. The more people dive into projects thinking it will be easy but get stuck, the more consultancy gigs should come, maybe i just need to jump on that boat.

Most helpful comment

I totally agree! I am an experienced web developer, who played around with 3D graphics about 10 years ago but lately my career has seen me combining the 2, so I am learning rapidly but do need a lot of help. I find myself drowning in unhelpful tutorials and misleading SO answers every time I search for help.

In response, a little while ago I drafted this manifesto that I was hoping would gather support and collaboration: https://github.com/martinjoiner/three-js-community-content-standards

In summary, I think a good way to start would be to ensure all tutorials and SO questions are tagged with the revision number they are using at the time. Doing this will allow posts to age gracefully and not continue to be misleading after they have become irrelevant.

If we can gather a Robin Hood style "band of merry men" (but with women too) and make a concerted effort to re-tag/edit every ThreeJS post on SO to contain the version number then it would go a long way. The simple process of encouraging the poster/reader to consider version number deepens their understanding of the code!

I do regularly triage questions on SO and 60% of posts get rejected as unclear, regardless of language.

All 15 comments

The call to action looks like this:

https://meta.stackoverflow.com/questions/252860/help-us-clean-up-the-android-tag

I think the situation is somewhat similar because SO is sort of an official three.js QA medium?

I've also noticed whenever there is an aframe question, people tag three.js even when it has nothing to do with three.js. I've never ever touched aframe, so i'm not sure if this should be happening.

I've also noticed whenever there is an aframe question, people tag three.js even when it has nothing to do with three.js. I've never ever touched aframe, so i'm not sure if this should be happening.

Yeah, I've noticed that too. Sometimes it's reasonable (when you write an A-Frame component, you're using three.js APIs directly) but if there's already a component that does something in A-Frame, you probably don't need any three.js code. I try to edit the tags on questions sometimes, to add or remove the tag, but it's hard for users to know.

FWIW, the A-Frame community has a bot set up that automatically posts new Stack Overflow questions into one of our Slack channels. That has been helpful for getting questions noticed. But ultimately A-Frame has a lot of poorly-framed questions too, and I do try to flag those and comment.

Ha, @pailhead , I think I know which one in particular triggered this:).

It's a tricky question; I don't think I've ever seen a successful (automated) attempt on SO to mitigate this problem. Almost every popular tag is riddled with duplicates, typos or RTFM's.

@donmccurdy - the threejs slack has a similar bot. Very helpful indeed!

What if we changed this:
If you need help, please use [stackoverflow](http://stackoverflow.com/questions/tagged/three.js).

To point to a page that explains how to post a MCVE, and then to SO?

@MichaelHazani there isn't one in particular :) this has been stewing for a while, btw which threejs slack?

https://threejs.slack.com/

It's fairly new and not as expert-riddled as I'd like it to eventually be:). But a nice little community.

To point to a page that explains

Bu...bu...but people do not want your explanations. People want help now, with zero effort on their part. If you could create some chat-like AI that would solve their problem by looking through existing SO answers, that might be useful to link to. But so far I have yet to see an implementation that would work better than google.

I totally agree! I am an experienced web developer, who played around with 3D graphics about 10 years ago but lately my career has seen me combining the 2, so I am learning rapidly but do need a lot of help. I find myself drowning in unhelpful tutorials and misleading SO answers every time I search for help.

In response, a little while ago I drafted this manifesto that I was hoping would gather support and collaboration: https://github.com/martinjoiner/three-js-community-content-standards

In summary, I think a good way to start would be to ensure all tutorials and SO questions are tagged with the revision number they are using at the time. Doing this will allow posts to age gracefully and not continue to be misleading after they have become irrelevant.

If we can gather a Robin Hood style "band of merry men" (but with women too) and make a concerted effort to re-tag/edit every ThreeJS post on SO to contain the version number then it would go a long way. The simple process of encouraging the poster/reader to consider version number deepens their understanding of the code!

I do regularly triage questions on SO and 60% of posts get rejected as unclear, regardless of language.

Yes!!! There is hope!

I dipped in and tried to do some cleaning of Three.js questions on StackOverflow at the weekend and I realised something that is relevant to this topic....

A lot of questions tagged as Three.js are about _techniques_ in 3D VR, not the specifics of how to achieve them in Three.js.

Check this post that I answered (he hasn't accepted it yet): https://stackoverflow.com/questions/46454729/three-js-transition-2-textures-with-zoom-and-blend-effects/46634405#46634405. At first his question appeared focused and answerable with a code snippet so I proceeded to try and help. But after a while I realised he's basically asking: _"How do I do what this other guy has done?"_ which is verging on _"Write my code for me"_. I wasn't going to write his code for him but I thought I would answer with a description and a hand-drawn diagram. Is he going to accept this as an answer? Place bets now.

Is it possible that part of the problem is that newcomers to Three.js are coming from the clear simple world of the DOM where everything is very shallow and easy to decipher and expecting it to be the same with WebGL/Three.js. Especially these days with browser's shipping in-built developer tools, it is normal for a self-taught junior dev to be able to pull apart someone's code and just understand the _technique_ at the same time.

If you have an input box on a web page and you want to know how it's doing that cool thing with the border changing colour on validation there's going to be 3 things to dig out: A block of markup, a block of CSS and some JavaScript that may or may not lead to a trail of dependencies. Read these via the dev tools and most people will get it, no invisible elements that need understanding.

But imagine a floating 3D text input box in a VR world, there would be several meshes, each with materials and geometries. There would be timed animation loops to make a cursor flash and loaders for the fonts, groups and helper functions to position objects and create rounded corners. None of this code would be standard, it would all be bespoke and searching the function names would not necessarily render results. 3D has a lot of "invisible" elements and as such the process of learning Three.js from someone else's work is a slow arduous process of recreating the code in a local dev environment and chopping out bits until you find the crux of the bit you are interested in and then studying/debugging and modifying that until you understand what's going on.

Are people just not prepared for the amount of work and effort required to write WebGL? Are these low performing questions on SO just another symptom of the erosion of "Front-end" and "Back-end" as a skill separator? These days, you have to be scientific and forensically deconstruct client-side code rather than just copy & paste bits until your page looks right. They are having to be proper developers for the first time in their careers and a lot of them won't like it!

So, as we clean up the Three.js tag on StackOverflow should the first question be _"Is this about a general 3D technique rather than Three.js specifics?"_ ...and if so... _"Where do we move it to?"_. Should we be really harsh in closing questions that are genuinely inquisitive and interesting but contain no Three.js code? Does StackExchange need to create a platform for general 3D techniques that we can migrate these questions to? They have platforms for Blender https://blender.stackexchange.com/ and 3D printing https://3dprinting.stackexchange.com/, why not one for VR?

In fact even you @pailhead have been sucked in to answer a question about general 3D/VR stuff: https://stackoverflow.com/questions/46603751/suggestion-on-how-to-create-a-window-over-a-wall The OP even referenced a post on a unity forum. The concept of how to punch a hole in a wall and fit a window frame inside it is a general 3D technique not specific to any technology. It's a head-scratcher of a problem whether you are using 3DSMax, Blender, Three.js or Unity and it is a valid topic to cover so there should be a thread somewhere of how to approach this?

I am learning a lot about StackExchange in this process.

I have just found that there once was a 3D graphics site but it closed after just 33 days in beta with only 14 users https://area51.stackexchange.com/proposals/5022/3d-graphics.

Do you reckon if we resuscitated it, we could could port all the three.js questions that are not about three.js in particular over to it and hopefully create enough momentum to stick? Or am I barking up the wrong tree?

@martinjoiner

I'm not sure what to think about that question. There are many ways to solve that problem, and some of them can be done with three. Generating procedural geometry is definitely something that can be done with three and is worth an explanation. My answer is mainly WebGL based, but it's still being used in conjunction with three. Ie. getting the GL context from three, and using it alongside it is a valid use case for the library. If anything I'd tag it with webgl because it can be solved by using a general graphics approach? I'd keep three though, i wouldnt make that question only about mesh processing or rendering algorithms.

There is a graphics stack overflow,
which seems to be doing better than that shortlived 3d one :( But moving all three stuff there if it's even possible would be overkill.

The gamedev stackoverflow is usually pretty decent as well, and a lot of questions are about 3D engines: https://gamedev.stackexchange.com

3D graphics attracts a lot of beginners who neither have the math skills nor the programming skills to handle these APIs.

Like bugs attracted to bright lights. 馃槅

Was this page helpful?
0 / 5 - 0 ratings