Welcome to Codidact Meta!
Codidact Meta is the meta-discussion site for the Codidact community network and the Codidact software. Whether you have bug reports or feature requests, support questions or rule discussions that touch the whole network – this is the site for you.
How should we approach a programming site or sites?
We have a suggestion for a site for professional coding, and software engineering and computer science also have some interest, and there are overlapping suggestions for cloud technologies and single-board microcontrollers. It seems likely that participants here have interests in other related areas too. How shall we approach this cluster of topics? Do we want one big tent -- a single programming site? Do we want a big tent and some specialized spin-offs -- what seems to have happened on SE? Do we want to plan for more focused communities from the start -- and, if so, what would they be?
I was an infrequent participant on SO; I have around 1200 rep after many years of passive, occasional posts. I don't have the right experience there to say with any certainty what worked well and what didn't. It appears to me that SO doesn't really have a community; it's too big for that. It might have sub-communities; I don't know how strong they are and how much they interact. And it might have had a community when it started; they're 11 years in now and things have changed. We'll be starting small; we are not operating at SO scale (yet). An advantage of a single site (or small number of clearly-differentiated sites) is that people know where to go; Balkanization where there are two-dozen different sites depending on which libraries or languages or tools you're using probably does not serve the programming community either.
I think a core diffentiator for Codidact is that we're putting community first from the beginning. We want to do what's best for the people participating here, whether that's one site or a handful or many (or one site and later spin-offs). We also have some tools they don't have over on SE, including categories and integrated blogs or wikis. And we're actively working on an open-source platform, so if it turns out there's something we need and don't have, we don't have to wait 6-8 years for somebody to consider the feature request.
It seems clear to me that there is interest in a place for questions about programming -- code, tools, design, and maybe processes. How shall we address that interest? What shall we build?
--
We resolved this by creating Software Development with broad scope. There's even a Code Review category. If the community grows to a size that's hard to manage and subsets want to spin off later, we can do that.
I've had some thoughts about this, which I'll try to coalesce into something resembling an answer. > Codidact is grow …
4y ago
Based on all the feedback here (and also on the related site proposals), I put forth this proposal: Create a single S …
4y ago
I don't know enough to have a full answer, but one differentiation that I think makes sense is for embedded systems prog …
4y ago
I want to offer a more community- and not topic-orientated answer to this question. Basically, you could rephrase the qu …
4y ago
Three problem is that a single supersite is a mess that is difficult to build anything other than a "codidact community" …
4y ago
I don't know about eventually, but while codidact is still getting started, it's better to not splinter communities. …
1y ago
Coming at this from a totally different perspective here. I think all of the above mention many great points but I can't …
4y ago
Lessons learnt from the past I've been at SO pretty much from the start. It is true that SO has sub-communities in a …
4y ago
This is less than a proposal: merely an idea. That's because I've not used SO much and don't know what works and what do …
4y ago
To answer the original question of how to approach programmer sites, I think a number of important features should be co …
4y ago
10 answers
This is less than a proposal: merely an idea. That's because I've not used SO much and don't know what works and what doesn't. So the following all has a big "maybe" attached to it.
The programming/development site should use tags for language-agnostic things (sort, input, etc.) and categories for languages. A language should start in the Other Languages category until it has (or is expected to have) lots of questions, at which point it gets its own. There should also be a Language-Agnostic category for general programming questions.
I've had some thoughts about this, which I'll try to coalesce into something resembling an answer.
Codidact is growing, but we're still a small project. To help us grow, we're looking to build active, thriving communities. To that end, we're currently only creating sites that have a community already interested.
If you have a community (anywhere from a handful of users up) looking for a site, we can host it for you. Post in this category describing the site you need, tag your post with [proposal] and we'll talk details.
If you don't have a community, but you have suggestions for sites we could create, you can post here using the [idea] tag to gauge if others are interested in helping you build that site. We're not currently creating sites without the support of a group or community, but with luck your [idea] post here will help you find that community — then we can convert your post to a [proposal] and discuss the details.
Thanks!
— The Codidact Team
That's from our posting guidelines in the Site Suggestions category here. I think it's relevant because of that first paragraph - "we're looking to build active, thriving communities".
What will draw people to this project? I think there's only a small handful of answers - dislike of SE, desire to build an open platform - but chief among them has to be people looking for answers to questions (or whatever other content types our communities allow). We have to be able to provide somewhere that can do that, or we don't have a community at all.
Which leads me to my point: I think we'd be better served by starting off with a single combined community. We're small, and we don't have huge numbers of users; splitting an already small number into separate sites for separate technologies leaves us with lots of sites, but not many communities, and little activity. Ghost towns isn't a good look.
So, I'd propose starting with a single site. If we get enough engagement that one type of content starts to overwhelm others, we can look again and create a new site for that technology, copying all its existing posts over. Until that happens, I think the benefits of having activity to show far outstrip any potential losses from simply not being the right kind of activity.
Having said that, I don't think we need one site for absolutely everything. Some topics are distinct enough to not be well-served by an umbrella site. What I'm suggesting here is one umbrella "programming" site; topics like - as aCVn has said - embedded systems, microcontroller design and programming, etc, could do with either being on-topic for Electrical Engineering, or having their own site. From your list:
- professional coding - umbrella site
- software engineering - umbrella site1
- computer science - umbrella site1
- cloud technologies - umbrella site1
- single-board computers - spin-off
-
For now. These are probably some of the first topics to spin off when the activity is there. ↩
Based on all the feedback here (and also on the related site proposals), I put forth this proposal:
Create a single Software Development site, planning from the start for spinoffs. Here's how I see that working:
First, I said "software development", not "programming", because we're not an SO clone and don't need to do exactly what they did (as pointed out here). I'm proposing a broad scope -- code questions, software design, architecture, process, tools, the works. In time that will get large and subcommunities with more-specific interests (like web development or C++ or machine learning) might feel lost in the larger community. That's an issue at SO, and "afterthought" specialized sites face challenges because their topics are also still on-topic on SO. We need a better strategy for subcommunities that want to get a place of their own. But id doesn't seem like there's a lot of interest in creating a bunch of small, specialized sites from the beginning and running the risk of falling below critical mass.
If the emerging subcommunity is forming around specific tags, that's relatively tractable, especially with tag hierarchies. Some here have suggested dividing up programming sites by languages or tech stacks; those would have tagging that's clear in 95% of the cases. (A question asking about differences between included-language-A and excluded-language-B would be an exception.) In this tags-based approach, the community would put together a spinoff proposal that lists the tags to move, and if there's consensus we could proceed.
We could then create a (temporary) category for the proto-site in which to collect the candidate emigrees, so people could sanity-check the questions that would be moving there. This allows some tuning -- we could start by moving everything with tags X, Y, and Z there, but when people say "no that particular question belongs on the original site", we could move it back. When the community is happy, we could then pick up that category and move it to a new site. While it's all getting sorted out, those questions are still on the general site and findable by search there, so this isn't too disruptive. (The last thing we want is to be bouncing questions back and forth between different sites while sorting this out.)
This approach lets us start with one general site while supporting specialized communities as they emerge. I don't think any of us can accurately say what specialized programming communities will exist in a year, so let's focus on a framework that lets them develop naturally while also having a home for the many other questions that aren't specific to a tech stack or language.
I don't know enough to have a full answer, but one differentiation that I think makes sense is for embedded systems programming versus more commonplace programming (desktop, web, server, ...).
The reason for that is that embedded systems programming often has very different constraints than what most programmers are used to working with. Very little memory (for both code and data), slow processor speeds, and extremely limited user I/O (a couple of pushbuttons and lights, maybe a few-digits seven-segment LCD display if you're lucky), are all common constraints that the typical web developer does not really need to contend with.
Granted, more and more systems that used to be truly embedded are now running some Linux variant on a single-chip (or even multi-chip) nearly-ordinary computer, just because that's available and easier to work with. But I do believe there's going to be a demand for true embedded systems programming for a long time.
On SE, this was solved by explicitly making bare-metal or RTOS firmware development on topic on Electrical Engineering SE. It's not off topic on SO, since it's still about programming, but if you're looking for an embedded systems developer expert answer, your chances have probably been better on EESE than on SO. (Note: My experience on EESE mirrors yours on SO, as mostly a lurker.)
I don't know if the best way to separate these is the way it's historically been done on SE, or if it would be better to separate based on available computing resources; with highly resource-constrained platforms having a specific place for their questions, and others having somewhere else.
It's reasonable to assume that any site that caters specifically to embedded systems programming, or even highly-resource-constrained-systems programming, won't see anywhere near the amount of traffic of a more mainstream programming site. The field just is much smaller. That, however, doesn't mean that the questions don't have legitimacy.
I want to offer a more community- and not topic-orientated answer to this question. Basically, you could rephrase the question to discuss any topic. Many topics have vibrant sub-topics. Mathematics is not just mathematics, besides algebra, calculus, there also are (applied) fields like statistics and game theory which itself is tightly knitted with economics.
Oftentimes, there are no clear lines between different sub-topics or even topics at a superordinate level. Think about medicine and psychology: Even though there are many questions that can clearly be assigned to either field, every question about, for example, psychosomatic disorders could be (partly) answered by a physician or a psychologist.
Many smart people spend a lot of time day in day out to categorise stuff, objects and data. We're doing the same right now. Some classifications are easy, some are hard, some are so questionable that they lead to misunderstandings or irritated questions. (And usually, as soon as you categorise anything, somebody already has a better idea to categorise it or at least claims to have a better idea.)
Maybe we should start out with a single site which is home to many or even all sub-topics. Let's see how it goes. This has some decent advantages:
- It eliminates possible confusion from new users as for where they should post their question.
- It keeps the workload low. Moderating one site is easier than two or even more.
- A single site allows for an easier interaction with users, meaning that feedback is not scattered in five meta-sites but focused in one site.
- In the end, the community that's there can decide what should be happening next. Many machine-learning questions? This should be an extra site.
Right now, we don't know how much participation is to be expected if we start a single site, two sites or any number of sites. Like on SE, it's always a gamble to create a new community - sometimes it works out fine, sometimes the start is promising only for the site to be slowly drying out from low user engagement. So instead of betting on multiple horses at once, it may be more sensible to bet on one for the time being.
0 comment threads
Three problem is that a single supersite is a mess that is difficult to build anything other than a "codidact community" and individual sites will have a lot of overlap.
The individual sites concept fits better with the vision of communities, so really you should go with that.
But obviously then you need to decide what communities they will be. In this situation you need to think what kind of shared item do people care about, and that IMHO will be by language stack.
Broader communities such as "cloud computing" are quite vague, is it full of questions about Amazon or Azure, or all the myriad web technologies, or consumer tech such as distributed video conferencing. Probably all of the above and more. That's not a community really.
Others are the same. Is a "professional programming" sure about meetings, project planning, budget and estimation techniques? I'm sure that wasn't in mind when that site was suggested.
So I think if you want community, you have to find almost existing communities and bring them onboard or give them a platform to visit. I use the python community as an example because if this, and that I read they consider SO to be a bad thing because it is full of python answers that are wrong or bad practice.
When I go to SO, the front page is full of stuff I'm not interested in. I go there to search for an answer and then leave. It's not a community, it's a resource.
Whatever comes about though, the one thing not to do is try and become a different version of SO. The split between SO and SoftwareEngineering on SE continues to cause problems with "this q belongs over there" misery. So much that they changed the mission statement of the site. So be careful of the general purpose catch all.
0 comment threads
I don't know about eventually, but while codidact is still getting started, it's better to not splinter communities.
Critical mass is make or break for communities. Getting to that critical mass is the most vital objective by far, early on. Reaching critical mass for one community is obviously easier than reaching it for 5 communities at once, that cannibalize engagement between each other. This does not apply to completely orthogonal communities though - software vs. Christianity has a lot less cannibalization than "professional" software vs... I guess amateur software? It will be the same people going to both anyhow.
Note, it's critical mass of questions too, not just users. So even if every user codidact diligently frequents all sections, their energy is still split between many sites. It's better to lump things together as much as possible. Ideally, communities should only be split if both daughter communities will still have critical mass.
This was one of the mistakes of SX. Instead of starting general and splitting off popular generic tags as needed, which would result in exponential growth, they insist that new communities be started in Area 51 from scratch, meaning that the critical mass problem must be solved again and again. It's like building a moon base and still launching all your rockets from Earth.
I've been active on SO, programmers, code review and a few other related sites. I feel like the boundary was always kind of thin. Based what I've seen, the most parsimonious explanation for why some of these offshoots exist was a combination of elitism, users being annoyed that not every question caters to them, and creating rules for the sake of rules on the older and more general sections. A lot of these offshoots could have just been tags that people can hide or favorite as they like. I suppose it does allow you to sequester moderation scope of users a bit, which is harder with tags. But then what is the value of locking a programmers mod out of moderating SO?
But this is really a discussion for the future. Right now the few programming sections are floundering. User count and activity are precious, and splitting sections would halve them or worse. For now it should definitely be handled by tags.
0 comment threads
Coming at this from a totally different perspective here. I think all of the above mention many great points but I can't help but feel that we will find more success in the community by offering something totally different than SO.
It needs to be broad enough that we can gather a large community without being so broad questions are all over the place.
A couple ideas:
-
Career advice QandA. Something totally different and you might love it or hate it but there'd be a huge market for it.
-
IDE QandA
-
A larger language tag like JavaScript or something where the community is big and we could try to offer something a bit more focused and unique. Maybe even something like advanced JS or functional JS or something like that.
-
As previously mentioned, a professional coding site is another great idea
Lessons learnt from the past
I've been at SO pretty much from the start. It is true that SO has sub-communities in a sense. Each major programming language (tag) has their own flavour of slightly different posting rules, different ways to deal with FAQ and canonical dupes and different tag usage rules for sub-categories (various libraries, versions of the language standard etc). Some even hang out in the on-site chat room for that programming language.
Each such major programming language tag has developed a certain culture, even though SO manages surprisingly well in keeping a consistent moderation policy across the whole site.
At the same time, lots of tags do not benefit from sharing the same site. The C and C++ tags (where I mostly hang out) has a constant problem with cross-posting both tags at once, which is harmful most of the time. You get the occasional C# mis-tag too. There's a similar name conflict between Java vs Javascript and so on. Many of the major programming languages do not benefit from sharing the same site, quite the contrary, since these tag collisions and different tag use cultures cause tension and frustration.
Proposal
My conclusion is that it would actually make a whole lot of sense to split up the whole programming site into smaller ones. I think the disadvantage of conflicting tag use and ambiguities is more significant than the dubious advantage of having a one-stop shop for everything programming-related.
Splitting up the site could be done either by spawning one site per major language/technology, or possibly by creating categories. How to categorize technologies and deal with potential overlaps in scope are topics of their own.
The various pre-SO programming sites tended to be one site, but with some flavour of "categories".
Regarding low activity/"ghost towns"
Low activity won't be a concern if we let these separate sites/categories mature just like any other site in the network. Don't underestimate how many users there are per major language tag on SO. A significant number of the whole veteran user-base there are quite unhappy with all the events over the last year. I'm still only there myself because there's no place else to go.
Each major tag probably has some 50-100 active domain expert veteran users. Then some thousands of active intermediate/experienced programmers and who knows how many beginners. If just 10% of those users were aware of Codidact & would be willing to help out, that's more enough to start a new site dedicated to a specific programming language or technology.
0 comment threads
To answer the original question of how to approach programmer sites, I think a number of important features should be considered.
- Making relevant versions of OS, programming languages, libraries, software and hardware visible;
- Having a way to tell whether the question/problem and the answers/solution apply to multiple (a range, multiple ranges or distinct) versions of each relevant OS, language, library. Let's say, in shape of a list of checkboxes of all the versions;
- Making it easy to add new versions and review older posts, update whether the question and answers are still relevant and work for newer versions.
These are direly needed on StackOverflow due to how old some of the questions and answers are.
Additionally, there needs to be a way to organize/group/link questions about the same, at the base of it, problem, but with slight differences between versions of relevant elements. Something like "Linked questions" widget on StackExchange.
Maybe with even tighter integration/consolidation of data. For example, adding a question variation to an existing question, with a brief description of what makes it different, so users could then browse the same core question, and pick between slight variations on the same page. This could turn the question into more of an all-purpose guide for solving the problem throughout all the versions of the software and OS combinations on one page instead of separate pages. Although it might make the page confusing and harder to navigate.
1 comment thread