NodeBB: Node.js-based forum software
github.com
github.com
Kinetic scrolling on Firefox for Android is broken. Do not fiddle with scrolling when doing web development, ever. I guarantee that you will fail.
Front page forgets the scroll position when coming back with back button (Firefox, Windows 7).
When you do AJAX stuff (or websockets or anything else not plain HTTP GET that browsers do when you click normal link), always show progress indicator right after you user clicks something. Now when the site is slow (because of HN effect?) user is shown blank page while the page is changing. All I can see is the top bar and the grey background after clicking any link. It takes 2-3 seconds before anything visible shows up. During this time always show some progress indicator.
Going back and forth quickly occasionally gives user a wrong page. For example right now my URL bar shows https://community.nodebb.org/topic/7/nodebb-plugins but content is a post by quahfamili posted 12 months ago with title Testing.
Bulletin board system gains nothing from "single page application" style architecture, it is a collection of documents, stick with it.
EDIT: Also, when using infinite scroll, do not put anything in the page footer. Now when the pages have copyright info and couple links in there, I can see those only for a split of a second before new content appears. Makes me go crazy.
Saying Nothing is to be gained is going a bit far. This is an interesting experiment, with some novelty, that will be iterated upon. I presume that the bugs will also be fixed.
EDIT - just checked and it does a moderately good job without javascript: "Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode."
This is probably an acceptable compromise. Just to clarify - I'm not arguing that everything should work with js disabled - just that it's a good litmus test for whether a website is fairly robust with regard to normal HTTP behaviour.
I'd have to say the Discourse project (http://discourse.org) provides a fantastic counter example to this. It shows what can be achieved when SPAs embrace the URL and a lot of thought is put into how the modern browser features can be used to improve the user experience rather than just jumping on the bandwagon.
Example forums:
http://meta.discourse.org http://discuss.atom.io http://discuss.emberjs.org
I just do not see any benefits going SPA style when working with data that is essentially collection of documents.
Especially if you're in Europe (I get a ping time of 24 msec from Switzerland), the pages load nearly instantly. It's actually the sort of thing that you notice and go "whoa" it's so fast.
Yet there's nothing special about it. It's just a regular web server, written in D, that serves pages really fast (probably out of cache).
If you use HTTP caching and compression appropriately, and keep your design light, there's no particular reason you need to use Javascript to speed things up.
Real-time updates, differential updates, cacheable partials, free distributed rendering, to name a few.
Specifically in the realm of cacheable partials, every single site out there that repeats elements between pages could benefit as a well-architected SPA. It's analagous to h.264 vs GIF: you can compress/cache the similar chunks and only update the deltas and save bandwidth, making your platform more scalable. Sure, GIF can compress each individual frame, but h.264 improves on that dramatically by compressing in another dimension. The essence, in my mind, of the SPA is keeping your HTTP requests DRY.
This sort of design element occurs way too often. I call them Tantalus footers, because they're always just out of reach. It also makes me wonder if the people who designed these things actually tried using them under real-life conditions.
This should be carved into the desk of every webdev on earth.
What do you mean? I've tried on Firefox (Beta) and Chrome on my Nexus 5 and it seems to work fine for me.
So tried Discourse, but the Docker-only installation turned me off (a magic black box). After getting it to run for a bit, apparently something crashed and got a gateway timeout. No Docker experience, so couldn't easily get in and get some log data. Hard to debug. After killing the container and restarted it worked again... not wanting to learn docker for setting up a simple forum (trying to avoid the rabbit hole). And how am I gonna update this box?
Then a look at NodeBB. Too immature, a little bit funky UI and also relatively hard to deploy. Don't have NodeJS running on one of our production servers.
Ended up with VanillaForums: untar... welcome screen... db credentials... go! Much cleaner than PhpBB and simple to setup. Styling was a breeze too. A couple of hours later I had a forum matching our identity up 'n running. Don't want setup and maintenance hell for something as simple as a forum...
If anyone is interested in beta-testing when I release the first public version on github, please drop me an e-mail and I'll let you know when it's ready (my e-mail is in my profile).
Especially, since I built my last 3 projects using Node.js, it seemed that learning another PHP framework like Laravel would not benefit me too much. Now, you might ask why did I not go down the node.js route. It's because I wanted to build LAMP based code which I could eventually open source if the project fails. I plan for it to become a standard PHP package for social-network type of sites. You know, just like you have Wordpress for blogging, you could use my engine for small social networks, or just MVPs.
I call "my engine" since I haven't named it yet.
Source: admin on a SMF2 forum.
My solution was to rely on Vanilla Forums for user management and authentication. They also have a pretty nice minimal theme designed for embedding in other applications.
I created a quick and dirty NodeJS plug-in for mimicking Vanilla's cookie hashing so that cookies could be read and validated from Node. It's worked out well.
Also when going onto the forum, I was clicking links but nothing was happening? Then I would click the home button and the last button I had clicked would then activate, like it was a click behind?
The home layout reminds me of hootsuite, I find the layout too cluttered. I'd imagine you would get used to it and you would know where to look eventually but I must admit it wasn't very intuitive.
The plus points are that I do think the world needs an overhaul on forum software, it's tired and hasn't changed much in 15 years. I don't think this has been done in vain.
The feature set looks good I just don't think you need the fading transitions and so much information all over the place. It needs simplifying; in my opinion.
Compared to some forums the would be a very big improvement in loading speed.
As far as the layout is concerned it's not intuitive i haven't seen anything similar so it takes a little getting used to however that doesn't mean it's bad.
Edit: I guess it's getting slightly slower now with the HN effect however I only noticed it going back to the home page.
This is a case of single-page-appification of something that really isn't an app at heart, but is simply a content-centric website.
Of course this is assuming the javascript isn't also piling on a bunch of nifty effects as well. For me, though, it seems to load really quickly.
The root, https://community.nodebb.org/, is a Pininterest/Google+/other tiling
Each of these forums is ultra-old-school BB threaded style conversations. It's a very weird mix of old and new ideas that doesn't work for me.
The reason I don't like these threaded conversations is once they go beyond a certain length, the only people who read or post to them are those that participated in the start of thread. It's just a way of having a public conversation. For anyone coming in later they need the question and the final answer - SO.
This isn't really news, there's a reason StackOverflow works, it's brutal quality filtering. I think a lot of people would still love to see a decent OS SO clone. OSQA is just dead. http://www.question2answer.org/ is the only active one I'm aware of.
It's refreshing to see people trying new ideas. And when I thought about the main page further, I kinda realized that a table-listing of forums is not great.
Best of wishes to this project. You left a lasting impression in barely a few seconds. I'm impressed.
That being said, I'm not digging that tiled design on the main page either. I think a list view would work fine, not need to reinvent the wheel there as long as the underlying technology is modern and robust.
The forum itself just seems like the same 90's forum from yesteryear with a new glossy coating. Once you've gotten used to the Reddit/HN way to manage content you simply can't go back to that.
It's perfectly usable even under the weight of at least HN, quite a lot of effort has clearly gone into it. There's some edges that want polishing, particularly around page transitions but I don't see much from a quick look or any of the comments that couldn't be resolved in short order. Most of the issues are where they've been a little keen to apply effects.
I'm not sure I'll ever warm to javascript on the server for my own needs, but good luck to them I say.
Just wanted to say, the "pinterest" homepage is just a theme. We've got an extensible API and an easy (hopefully) theming engine. Just to show you how different it can look like, open up http://convoe.com, give it a shot on your mobile as well - it's awesome. There are some themes out there that have a basic traditional view as well.
I'd like to say we're really working on the engine a lot, and once everything is stable we'll blow full steam ahead on cool themes, some traditional, some "modern" (whatever you like to think of that as). We also have almost 100 plugins in such a short amount of time, which hopefully shows how extensible our forum is.
We also have a widget system - you can drag and drop widgets on the home/sidebar/header etc. and replace components out. Here's an example of what I mean: http://i.imgur.com/GObRKQq.png
Please star us on GitHub and feel free to fork us and join our community, I'd love to hear what you guys think on how we can improve even more. :)
-- psychobunny, core dev @NodeBB
What's more, Node.js code tends to look horrible with all the callback indentation and spaghetti. An async server's programming environment and style could have been done way more gracefully.
The forum home page is a bit cluttered imo, especially with all the latest post quotes.
And obviously the javascript hijacking the scrolling behaviour on the landing page is something which I always find quite annoying, but it seems to be en vogue at the moment.
I hope this doesn't sound too negative, just a few things I noticed while browsing the demo.
* The usernames do not appear next to the avatars in the posts, and generally users are identified by avatar rather than username. This is very confusing, especially since avatars can change, and it's hard to distinguish faces in images that small.
* Along the same lines, icons are used all over the place instead of text. I find this annoying, as the icons are not self-explanatory, and I have to hover over every little icon in order to understand what I can do. For example, I had no idea what the "topics" and "posts" icons meant before hovering. Similarly, there is no reason to use text in the navigation bar (add an icon next to the text if you must). To be fair, the icons have the advantage of taking up less space on mobile.
* The styling was a bit jarring to me, with the high contrast and lack of strong borders between elements. The whole purpose of going to a forum is to read a lot of text, so it makes sense to use more neutral background colors. Of course, this can be customized I'm sure, so this is more feedback on the demo site rather than the platform.
But overall the implementation seemed solid, and I can see this eventually becoming a nice BB platform.
Edit: this is all based on https://community.nodebb.org/.
http://convoe.com/ also uses NodeBB with a completely different theme.
I use this NodeBB for one of my forums and I have no issues with it. The only complaints I have had was to do with a plugin and not the actual NodeBB software.
Their main theme at the moment is called Lavender and I do find it cluttered and a bit busy but there are other themes available to use. They do tend to change the theme with each major release so when 0.5.0 comes out soon there may be another theme for you to check out.
The plugin and widget system they have is very useful with new plugins being developed all the time.
The infinite scroll can be turned off.
I have had a few issues with upgrades but that was down to me a slight version error on their upgrade script.
The exceptions are web-apps that require heavy backend computation (javascript/node sucks at that), but even then you could use node + a work queue that's handled by a more appropriate language.
Nodejs has arguably the best websocket implementation of any language and has mature drivers for pretty much every database backend. It has various templating frameworks etc.
A BB just needs a database at the backend and a way to get that data out to a browser. In that regard, nodejs is more suited than many other languages.
I don't really get your comment since it seems to imply that writing it in nodejs comes at some cost and you need to justify that cost by saying you expect a lot of traffic. I've seen this attitude before when someone writes something in assembly.. "Oh, you're hand-optimizing your program's assembly? Unless you really need that performance I wouldn't think it's worth it to use assembly". The thing is, nodejs doesn't have all that many problems. Sure, there's the massive number of warts of javascript, but people have learned to write readable and less-buggy code in the javascript ecosystem at this point (promises, jslint, etc).
So to repeat my answer to your question: no it doesn't have to be nodejs to be "modern web", but I do think nodejs is appropriate for this use case.
Maybe I just too traditional, but there are far more mature back end frameworks available, without the warts of JS. For me I prefer to see a need or justification of using the latest software trends, not just because "its modern" or "that's how we do things nowadays" (a genuine response to a project I am involved in when I asked the case for using Node).
Node.js obviously has some use cases where it will shine, but I wouldn't have thought a BB was one of these places, as its quite a traditional kind of app.
Not to mention this thing is a pure, pre-ejected abortion of design. https://community.nodebb.org/ I'm not sure who these web designers think they're fooling with this crap. The "modern web" looks full of hipster goons who would have also cooked up the ribbon interface. I'll stick to my minimalism, black text on white backgrounds, usable forums, and not reinventing the blink tag.
I think with nodeBB we can safely say, NEXT!
I feel like I just traveled to the past.
I've been following these guys since the start and I think they have done a pretty good and refreshing job. They share some features with discourse and vanilla forums because they are the 3 competitors fighting for the modern BB software cup...
BB has been quite stagnated for decades, it is actually nice to see some "innovation" from all these projects.
(You are aware that all LAMP stuff is also FOSS)
We really need to explore new ways of interaction, and blending old fashioned boards with the new "real-time web" is a nice start. There's nothing bad in trying new things. Discourse, with rails, is another good take...
PS: I use a lot of LNMP for 70% of my freelancing projects, but for a forum that needs real-time capabilities Node is a convenient option.
I hope this comment gets picked up by @shit_hn_says.
Also, why are there upvote/downvote buttons on thread messages? Do they have any effect on visibility or are they just for show?
Throws the information at the user and expects attention.
Can someone help me undertand "require('./user/auth')(User); " ?? from https://github.com/NodeBB/NodeBB/blob/master/src/user.js
The auth property is then extended with a 'logAttempt' function and a 'clearLoginAttempts' function.
The User object in the parent context can then use these properties.
Oh, and I agree that the tabbing makes it look ridiculous. Javascript should use two spaces, nothing more, nothing less (let the fight begin).
That's not the code's fault, GitHub should set the tab-size[1] property to something more legible.
Reminds me of early php days puke.
I would guess they mean self-host is free, and the prices refers to hosted / managed instances. In which case, they should make this point much clearer.
You can still create an inconsistent state in Redis easily, even it persists well.
You could also view redis's data types as a form of constraint. Using a set instead of a list achieves the same purpose as using UNIQUE in SQL.
A simple improvement would be to use different text for these inverse operations (perhaps + and -, or >> and <<).
Do one thing, and do it well.
$75 monthly for MAX 2,500 users, seriously ?