Previous posts:
Hi, I'm continuing the work on the Custom Question Lists project. (See the above links for more details.) This post includes details about what I've been working on including things that have just shipped and what's in the pipeline.
Table of Contents
- Phase 1 update, what's been fixed and what's been changed
- Phase 2 (saving) update, shipping early November 2018
- Phase 3 (activity indicator) update, currently working on architectural design
Phase 1: Cheese has been moved, bugs have been squashed
If you've opted into Custom Question Lists (CQL), you've probably noticed some small changes. These include bug fixes as well as some design changes I needed for Phase 2. Below is a list of what's new and why I made the choices I made.
Bug fix: Complex tag queries are preserved when switching tabs. Previously, if you visited javascript and php and clicked on Newest, you would be taken to javascript or php. This was a product of how the tag string was transformed at various points a long the way. Now the whole tag string is preserved on navigation.
The tag editor now supports
and|or|not
keywords. Building on the above fix, the filter tag editor now supports all the rich queries available in the URL. If you want to see top voted, unanswered questions taggedjavascript php or python ruby
or active questions taggedjavascript not jquery
, you can now do that from inside the UI. It translates between-
andnot
when converting to and from URLs and tries to eliminate multiple consecutive operators. There's an open UX question on whether this will be confusing to users who don't know about or aren't expecting operators, and there's some previous work from new-nav that addressed that, which could be considered.If you're on a custom filter, you'll see a highlighted "Custom" tab. We didn't really have an indicator of where you were before.
Bug fix: Filtering by watched doesn't disable filtering by watched. Before, when you would select watched tags, it would redirect you to
/questions/tagged/a+or+b+or+c...
where a, b, and c are your watched tags. This would break the UI logic that let you check or uncheck the watched tags filter. Now, watched tags consistently lands you on/questions/tagged?tagMode=Watched
, which gets us the right UI treatment and simplifies the UI logic. Incidentally, we were already doing this with/unanswered/tagged
for watched tags.Tagging behavior has been restructured. (And needs to be restructured again.) Before, there was a "Watched" checkbox and a tag field. Now we have radio buttons for three tag modes:
- Use current tags: This is the default mode which ignores the value of the tag editor and just navigates you to the URL. (This option doesn't really need to be there and exists purely an implementation detail of other parts of the code. I was gonna do something cool with it but it turned out to be confusing so I'm gonna rip it out and you can just ignore it until then. "Custom tags" gets highlighted when you edit tags anyway.)
- My watched tags: This navigates you to your watched tags when the filter is applied.
- Custom tags: This navigates you to a question list with tags from the tag editor when applied.
I could go into more details about why "Use current tags" exists, but I'm bad at explaining it.
Bug fix: Tabs are links again. I'm a huge fan of opening things in new browser tabs, and that's back. It was just a matter of rendering the links server-side.
Bug fix 1,2: Paging is fixed. The code just hadn't been updated to use the new paths.
Bug fix: The
c++
tag works again. We were encoding+
as%2b
, but we were still encoding spaces as+
, so the backend still interpreted it ascmake+c++
orcmake c
.
Beyond that, some other changes have been implemented in the Phase 2 branch and while they haven't shipped, are worth describing now in case there are any questions:
The "Most Popular" sort will be removed. "Most Popular" was an attempt to bring the Hot, Week, and Month tabs into the question list, because right now Teams users don't have them on their homepage. There are three reasons why I'm removing this feature:
- It wasn't actually working as implemented. This is because...
- From a technical standpoint, popularity is different from other question lists. It uses information that's not in TagEngine to generate its own unique ranking system. This makes it both less flexible than other lists and less capable of integrating with other features of CQL.
- From a design standpoint, I personally feel like the hot questions list still belongs on the homepage and not in Questions. My reason for saying this is that I view the homepage as a "best of the site" discovery area and Questions is for when you have something specific you're looking for. With that criteria, the homepage is a better fit for that content.
There's still discussion within the company about what the homepage will become in the long term and if Questions gets morphed into that or the homepage can no longer hold hot questions, we'll be able to revisit putting them here. In the mean time, I've opened a task to look at putting hot questions back on the homepage for Teams users. There's not a lot that needs to be done code-wise (the content never actually went away). It's more a matter of reviewing the original rationale and making sure we're doing the right thing.
Filtering to "Today/Week/Month" will be removed. These were added to support "Most Popular". Without that, however, they lack a clear or consistent definition across the different sorts and filters and wouldn't really have value beyond just cutting off the tail of the list.
Where are things with Phase 2?
Phase 2, the ability to save CQLs, is moving along. The data model has been finalized and the UI bits are mostly in place, although dealing with the tag editor continues to interesting. Things should get wired up and ready for designer and architecture review next week. Then we can get it in front of you.
Where are things with Phase 3?
Phase 3 involves introducing saved lists to the left nav and providing an indicator method for new content.
- The left nav stuff is mostly pinned down, except for challenges relating to Teams. Those are well understood but will be a pain to work through. We have decided that the question lists visible in left nav will reflect the area of the site you're currently on, so if you're viewing public, you'll see your CQLs for the public site. If you're viewing a team, you'll see your CQLs for that team.
- The indicator logic is more tentative. Updating indicators via events in SQL presents its own performance constraints, especially when dealing with more complicated queries. The architecture team is exploring whether or not we can use TagEngine, the indexer that feeds the question list, to update the indicator while indexing changes. There are plenty of moving parts and stale caches to consider.
That was a lot to get through and I know I haven't addressed everyone's issues and concerns. If I haven't covered your specific bug or comment, I will try looping back to you on the previous post. If my reply is unsatisfactory or missing, feel free to add it again as an answer here. Likewise, if you have any thought, concerns or bugs you notice with the latest changes, please add it as an answer here.