I have an SE clone. How do we feel about building on that?

What I would vote is for us to hold off on votes a little until we can actually evaluate existing solutions - and not just this specific one - more criteriously and on technical merits alone before considering the idea and putting it to a vote, at which point concerns such as level of familiarity and comfort from contributors would come into play as well.

I had @rodolphito helping me test qpixel last night and we found many indicators of qpixel being much more of a proof-of-concept than a finished product, contrary to a previous comment elsewhere stating it was mostly production-ready. Looks like it’s very far from that. I haven’t finished my analysis of the architecture and code so far, which is why, despite my previous statement, I wasn’t able to post my review just yet. But it’s coming.

Some problematic points I remember right now:

  • Very bad Unicode handling
  • Bad error handling - try logging in with a non-existing account, or editing someone else’s post
  • No proper whitespace validation
  • Missing: edit history, flag system (whole of moderation tools, in fact), markdown editor, edit and delete comments without requiring a full postback / page load, logging (errors, hacking attempts…), review queues, infrastructure for easy content import and synchronization (at the implementation level)
  • Undocumented limits and constraints (max length, allowed chars, etc)
  • The tags system is still very crude and looks more like a demo - I don’t see how it can be “fixed” without requiring actual reimplementation

This is all from the top of my head. Now, for some hands-on demo:

How long can a question be?


Maybe the scary error page is a server environment setting. Anyway, we had to test it. (Notice the bad horizontal scrolling.)

I can make your computer run out of memory by embedding an arbitrarily large image.

Who posted this?

No input sanitization (see also)

See more at https://qpixel.artofcode.co.uk/questions.

Reproducing one of my most recent comments on this topic from Discord:

(…) the poll text says “quicker launch, less dev work to do” and that’s something I’m going to argue against.
I can see the same thing I referred to at https://discordapp.com/channels/634104110131445811/641360136908046336/642549776277307412 happening here. We take something that exists, but doesn’t quite do what we want, and it ends up being much more of a headache to adapt because either the architecture is not flexible enough, or the implementation is just too different, or both.

For reference, the linked message says:

(…) shudders, because the project leaders decided to use a combination of Moodle + Wordpress and, given their requirements, it ended up being much more work adapting both for their needs than just implementing a solution from scratch.

I mentioned in my nomination (https://discordapp.com/channels/634104110131445811/638255503474163713/638530858516480016) that I’ve had a couple of projects fail, and this would be one of them. (I was just a consultant, not an employed developer, however).



It appears that a lot of our requirements have not been factored in at the design phase, and unless the architecture is really flexible and maintainable, it’s going to be a pain to implement them - and even if it is flexible, that’s not a hard guarantee. This is true not only of qpixel, but of most of the existing implementations. No wonder not one of them ever came even close to being capable of potentially disrupting SE.

In terms of being production-ready and feature complete, Question2Answer seems to be much more advanced, but it’s still not without its fair share of concerns (that requires a separate evaluation).

9 Likes

This is wasting more time when we could be done with writing standards and doing an initial commit already, I think we should drop the idea of working with already written projects and write from scratch. As @Marc.2377 highlighted, there are many problems already with the project, it will be a pain to work on them and correct them. I suggest we drop this idea as soon as possible and continue to start our work from scratch

7 Likes

@Marc.2377 I tend to agree with you on the issues of adapting other software, particularly projects of the one developer or very small group and never quite into production nature. It is simply the way things are.

But in case it isn’t 100% abundantly clear:

This critique of specific software packages is NOT a criticism of the authors. AT ALL.

My own projects are the same way. It is simply not possible, unless you devote 100% time (which most of us can’t do because of work and home and other projects) to a big project, it is extremely hard to get it “right” in all (or even most!) key aspects. And for that matter, even much larger projects with many people involved (I can cite a number of examples, but it really doesn’t matter) often fall short on various aspects due to long-ago design decisions combined with too few people who care (and have enough time) to improve things.

All of that points, IMHO, back to our situation here:

  • We have a core group - and growing - that has clearly stated commitments to quality code (setting strict coding standards, code review, etc.)
  • As a group, we are committed to producing a quality product in every sense - fast, efficient, accessible, secure, user friendly, managed well (in both development and day-to-day usage).
  • We clearly want to produce not just a “clone” of existing products but an improved product.

All of these goals point to starting fresh and doing things right. The only aspect where using an existing product makes sense is time to market. Which is a real issue. Unfortunately, it seems that the really polished products (like this forum and Discord) don’t have the features we need. And the products that have (some of) the features we need (i.e., more Q&A structured) are not complete/polished simply because they have not had the people & time put into them that this project needs.

Let’s do this right.

5 Likes

Cross-post from the other thread:

This is a general comment on the existing systems, not about one of them in particular.

Instead of starting with an existing system (since it sounds like both of them would require substantial work to match up with where our MVP seems to be going), can’t we build a new system but take advantage of existing components when they exist and fit ? It doesn’t have to be all-or-nothing. Maybe one of the existing systems has 90% of the database schema we want. Maybe one of them is 80% there on basic front-end mechanics. Maybe neither of them does login well but one of them has some bits that mean we don’t have to start from scratch. Etc.

We should design and architect what we need without being bound by other systems’ design debt, but we should not fall into the “not invented here” trap and insist on writing everything ourselves if there’s something we can more-easily adapt.

I don’t know how to translate this into a vote, so I haven’t voted.

4 Likes

@weegee:

This is wasting more time when we could be done with writing standards and doing an initial commit already (…)

To be completely honest, I’m very much inclined to agree. Earlier last week, I had requested if someone could be conducting the careful reviews we require on each alternative that we have listed - or just the major options - while I could be more focused myself in (i) the coding standards, (ii) writing my own proof-of-concept for RFC, and (iii) continue to get to know the team as I’ve been doing over the tech-lead-comms channel. Up until now we haven’t seen much of that. But I’ll consider appointing some specific contributors for this, so we can all be more effective as a team.

@manassehkatz:

This critique of specific software packages is NOT a criticism of the authors. AT ALL.

Oh, absolutely. Let me make this very clear as well. The list of observations I raised about qpixel here implies absolutely nothing about the qualifications and commitment to quality from the author.

Art’s implementation is much better than my own simply because it exists, and mine doesn’t, so… Yeah, you know what I mean. (And in case you don’t: Much effort was put into it and I don’t mean to belittle that.)
In my preliminary review, I tried to keep my distance and remain agnostic as to who the author is and what personal experiences and beliefs are involved; this is and will continue to be my standard approach - and the one I normally expect others to follow. If the way I worded some part(s) of my analysis suggests otherwise, I apologize deeply and welcome all feedback (via DM or email, preferably).

3 Likes

for an RFC may I suggest a Google document or a spreadsheet with sections open for public to edit/vote in? (I’m not an advanced Google docs user so idk if it’s viable but I’ve seen people create documents with main locked sections and parts available for any visitor to edit)

Probably with numbered/named sections so they can be referred to in discussions easily.

At least a live-edited RFC with a list of features would be nicer to follow than this forum format, imo.

Answering here as I can’t find the other thread, admins are welcome to move it if necessary.

can’t we build a new system but take advantage of existing components when they exist and fit ?

Absolutely, we can and should. Inspiration, design ideas, libraries, technical decisions and whatever useful components there are.

We’ll keep an eye for that at all times. Or so I sincerely hope.

1 Like

Um, by RFC my meaning is: I intend to subject my implementation to everyone’s review (in a dedicated branch or perhaps a personal repository of my own) and raise discussions among those with experience in software engineering and requirement analysis to evaluate my proposed approach. I don’t mean a full, formal RFC document as you know, official RFCs :grin:

2 Likes

A plea: be civil and assume good faith.

Assume that everybody here has good intentions.

Assume that not everybody has the same information you do, and vice-versa.

People here do not always agree (which is good!). Disagreement is not criticism.

Disagreement can look like criticism if we’re not careful, so please put some care into how you express it. If you’re on the receiving end, please look past any suboptimal expression and focus on the underlying message.

At the highest level we all want the same thing. Please let’s not get into fights about ascribed motives, personal stakes in code, or anything like that.

Thank you.

11 Likes

Poll results, including votes from Discord

Votes from Contributors are weighted at 2 votes each.

Yes received 22 votes from 14 individuals
No received 23 votes from 15 individuals

Result is a No win

1 Like

Wow, that’s a very close vote. Also, given that the difference in votes is the same as the difference in individuals, it’s an exact draw among contributors!

BTW, that raises the question: What would have been the conclusion if there had been an exact draw overall?

3 Likes

It probably would have gone to a revote or we would have worked out some sort of compromise between the two systems.

1 Like

You’ve lost me at C# / ASP :frowning:

Glad that somebody finally decided to come up with a future alternative to SE / SO. :slight_smile:

1 Like

A post was merged into an existing topic: What are we trying to build?

I’m sorry for not seeing this earlier. It’s kind of late now for an answer here (and we talked elsewhere since then, anyway so you know my stance), but just adding it here so it is made public: I agree with this approach.

Oh, and btw, just for curiosity’s sake: We actually found out there was an error on counting votes from the poll here.
The result is actually as follows: 15 people voted “NO” for a total of 24 votes (weighted). The number of people who voted “YES” remains unchanged (15 people for a total 22 weighted votes).

Yeah, doesn’t change much but I figured I’d let you know. Blame it on the hazards of maintaining two votes on different platforms.

3 Likes