Wanted: Discourse Hacker News Plugin

plugins

(Tom Newsom) #4

Just chipping in to say I agree - no need to rename Likes. Just move the heart icon and maybe overlay the counter on the heart, but no need to call it anything else.


(Dave McClure) #5

So if its a link-post, I have to click the talk bubble icon to go to the discussion?

I realize that’s how reddit works, but I always find it frustrating on reddit that when I click the main text in the list I’m taken different places depending on what type of post it is.

What do you think about the idea of switching things around a bit in your case to have a more seamless experience when browsing via the default Latest page?

I think the implementation could reduce the scope of the effort and possibly create wider appeal:

  1. Create a plugin where an additional URL field is can be made available on topics, not unlike what the tags plugin does here.
  2. If a link is included in a main topic post, an icon is displayed next to the topic to show there is a main, outbound link associated with the topic (not unlike what the solved-button plugin does here).
  3. If I click on this icon I’m taken off-site immediately to the link destination
  4. Otherwise, if I click on the topic name text, I’m taken to the discussion as normal.

Separately, an up-vote plugin could enable all the other functionality you described. I can see that being useful independently and it has also come up here on meta several times.


(Philip Battin) #6

Yeah, i think what i am trying to say is that we have no idea how to build it. So putting this out here hoping for someone in the community thinking this would be a great plugin and would work with us to make it happen. We’re UX designers and front end dev’s so we can at least contribute to that part.

I am really trying to gauge how difficult this is to create as i am not familiar with building plugins for discourse. In my mind it seems relatively simple as we’re only talking about a few basic features to be added.

Regarding likes vs upvote
@erlend_sh & @Tom_Newsom

I was thinking a lot about that. The system i propose is actually the way they implemented it on Designer News and i think it works pretty well. +1 could also work - but i think it has to be clear that you’re ‘upvoting’ something and not simply liking it, which also means the total number of ‘votes’ should be big and clearly visible so the user understands why some things show up higher in the lists than others. (Notice the default home screen view is the Top posts)

I can try updated the wireframes with a +1 solution instead!

URL Field

I think these are great suggestions. I agree that it can be a little confusing for some users that you sometimes click a title to reach content on the site and sometimes get redirected to an external link. Let me maybe try mock something up based on what you’re suggesting.

Regarding having an additional URL field, like the tags plugin - i am a little worried that it can be a bit confusing if it is always there no matter what category you’re posting in. What if you’re making a normal text thread and it contains multiple links? Some users might be confused when seeing the input field saying ‘Add link here’. "What link should i add in there?"
That is why i suggest that we have a dedicated link Category which changes the normal text field to a one-line input field for an URL without the WYSIWYG editor


(Ewan McDougall) #7

Hi just thought I’d mention http://www.echojs.com/ which is a clone of hackernews using opensource GitHub - antirez/lamernews: Lamer News -- an HN style social news site written in Ruby/Sinatra/Redis/JQuery


(Philip Battin) #8

This is great!

However, this platform, just like Telescope, is lacking all the other features that makes Discourse a great platform for discussion and community, such as

  • Notifications
  • Extensive user profiles
  • Mentions
  • Great comment features, such as an easy to use wysiwyg editor with drag and drop image upload
  • Follow posts
  • Super fast interface

Which is having this plugin for discourse would be amazing


(Philip Battin) #9

Update: Simplified and divided into two plugins

Big thanks goes out to people who took the time to give feedback on the plugin idea. As pointed out, this can be simplified and even split up into two different plugins. What i boiled it down to are these two plugins:

Link plugin

Need to have features

  • Ability to create link category where the WYSIWYG editor is replaced by a one-line link input field
  • Link is shown and can be accessed from front page of discourse forum in thread list view
  • In the thread itself, the link is the only content of the first post

Nice to have features

  • If Discourse cannot create one-box from link, the link is a simplified one-box where favicon and title is fetched.
  • Links are also shown in thread lists in digest mails from Discourse forum, so they can be accessed directly from your email client
  • Links are checked when pasted into link input field (e.g. did you type in a valid URL)

Wireframes

Link category

One-line input field which checks if URL is valid

If the link points to a destination we cannot create one-box from, link is displayed in a similar fashion as one-box without all the info that is usually fetched. Preferably we fetch fav-icon and title from destination URL

Thread view - first post only contains link

Front (Ability to click links in grey box to go directly to external link)

Digest email (Ability to click links in grey box to go directly to external link)


Upvote plugin

Basically a plugin that disguises Discourse’ default ‘like-system’ as an upvote system which also gives users the ability to vote posts from front page.

Need to have features

  • Ability to up-vote first post in a thread from front page of discourse forum
  • Change of name from likes to up-votes

Wireframes
Front page voting

Click to give your vote. Click again to remove it.

What it looks like in the thread view (Votes on first original posts are the ones shown on front. Notice all likes have been changed to up-voting for consistency)


We need your help

We’re designers, not developers. We have no clue how to build this. We hope someone wants to build this for free as a community plugin, but if that is not the case we’re also interested in hearing from plugin developers to get a quote on how much this would cost to build.

We’re hoping to launch our website sometime within the next 1-2 months and would love to have this feature at launch.


Suggestion: display vote/like counter in main page
Add ability to vote from the front page
(Philip Battin) #10

Question: A very simple way to do this might be if it is possible to add custom field to a topic - e.g. like what has been done with the tagging plugin.

Would it be possible to make something simple like:

  • For a specific category a custom input field is shown and normal text input field is hidden
  • Content of custom field is shown in thread list on front page (like tagging plugin)
  • In thread itself the content of custom field is injected in content area of first post

(Scripore) #11

How difficult would it be to implement something like this? And to maintain the plugin so it continues working with future Discourse updates?


(Philip Battin) #12

For the whole thing i heard everything from a week’s work to a month from people i contacted.

However, i think the simplest way to get started, by making a super super simple ‘submit link’ plugin would only be a couple of hours of work for an experienced developer. I outlined my idea of what it should be able to do below:

I am offering a brand new 32gb Nexus 5x to however could build the above :slightly_smiling:


(Philip Battin) #13

Here is a list of communities/forums that applied the ‘hacker news logic’

https://news.ycombinator.com/



https://www.reddit.com/


(Joe Buhlig) #14

Hey team! I want to add some information to this thread since I just made an attempt to build a piece of this.

Creating the link topic seems to be covered by this plugin: GitHub - danskdynamit/discourse-links-category

What I attempted was the upvote plugin. I found that without a significant amount of duplication of code and monkey-patching, it’s not possible to break out the like button and reuse it elsewhere. In order to add this like/vote button on the topic list, that’s exactly what you would need to do.

Currently, the like button is created within the widget for the post-menu. And since the like button has multiple actions tied to it, extracting it out of that widget isn’t a simple task. This is especially true when you account for those actions only being available from child widgets, which you can’t create from a plugin. So you would have to recreate the necessary actions and duplicate code.

As a community manager, my recommendation would be to sit tight and wait for plugins to be able to do this.

As a plugin author and contributor, I would ask if it’s possible to break the buttons in the post-menu out into their own widgets. I don’t think that would be too difficult and could likely lead to a lot of flexibility in authoring plugins.


Timeline Discourse
Add like_count column to topic list
(Michael - DiscourseHosting.com) #15

You can’t just use likes to implement upvotes. Upvotes decay over time, likes don’t. So there is more to it.


(Philip Battin) #16

I agree
The plugin that would change the name of likes to upvotes and place them on the front-page was simply a quick and dirty fix and it would work to some extend since Discourse uses likes to rank top topics and what to include in digest mails.

What would be really awesome would be to have this implemented on the Feature Voting Plugin so you can vote on topics from the front-page and a custom view that shows trending/hot and top topics this week and some way to make the highest rated topics be included in the digest email


(Philip Battin) #17

Link Plugin

The Link Plugin, as mentioned earlier in this thread, has been built by @fantasticfears - read more about it here

See it in action here


(Angus McLeod) #18

What’s the current status on the ‘upvote’ part of this spec?

As @joebuhlig notes, moving the like functionality to the discovery stream is a little tricky, but not impossible. It works relatively well in Topic Previews atm. The design of that could be tweaked to fit this spec.

Then it would be a matter of tweaking the list algo.


(Philip Battin) #19

We worked with @joebuhlig to try implement the voting buttons on the front page - but it turned out it was not as easy as we thought. So we’ve put that on ice for now.

So the plan for our site is to use plugin, Topic Previews, to display a like button on the front-page and we’re currently working with @joebuhlig on building a ‘hot topics page’ which is using a similar algorithm as Hackernews to sort topics. It should be done very soon and released on Github when ready.

Below how we plan to implement the like button on the topic list on Dansk Dynamit

Our dream is to completely customize the like buttons on discourse to maybe even change the name to upvote and maybe even change the markup to accommodate interaction animations like this one that i mocked up


Discourse Hot Topics
(Angus McLeod) #20

Cool, looks like you’ve got all the pieces you need.

In terms of putting all the pieces together, I reckon you have two options, both of which are viable.

  1. Integrate the code that topic previews uses to put like buttons in the topic list into the plugin @joebuhlig is building, rather than use two separate plugins. This would give you a bit more direct control, however will require a bigger dev investment. I can help out with thinking through any issues in translating the code.

  2. Use Topic Previews with your own CSS skin. Topic Previews is under active development, so you get maintenance for free. On this front, I assume you’ve tested the interoperability of the link plugin with topic previews? Just on first glance, there may be some conflicts.


(alejandro) #21

What is the status on this plugin? I am very interested in this!


(Philip Battin) #22

Hi Alejandro, please see here for how we built the site we wanted


(Sam Saffron) #23

This is now done and been live for a while! closing