Skip to content

NodeBB Development

Stay tuned here to hear more about new releases and features of NodeBB!

3.5k Topics 22.0k Posts

Subcategories


  • Posts from the NodeBB Development Blog
    96 Topics
    778 Posts
    julianJ

    Occasionally, we will get asked whether there are any differences between our hosted service and the open source project.

    It is as though we are holding back some great features and only allowing our paying customers access them! Conversely, it could be assumed that because we are hosting the software for others, that we would somehow out of self-interest or for economic reasons, deliver an inferior version with limitations.

    I'd like to say upfront that this is not the case for NodeBB.

    When you use our hosted service, you receive the same great NodeBB software that you can get for free off of our GitHub repository.

    What we're selling is support, maintenance, upgrades, and peace of mind delivered by our world-class† support team.

    You definitely can host NodeBB on your own! We've strived for years to deliver a piece of software that runs lean and fast on minimal hardware, great docs (some contributed by other admins!) that help you get up to speed quickly, and a fantastic community that will help you if you get stuck.

    The reason I take this principled stand is simple — I think it's unfair when artificial limitations are placed on software just for the purpose of getting customers to pay more.

    We've seen all this time and time again:

    You can't install any plugin you want, just a select few from a small list You can only have X units (tickets, posts, etc) of whatever you're using You can only have X admins/owners You can't see any messages older than X days

    These limitations are all artificial, and serve to restrict the use of something to the bare minimum. Anything extra is — of course — available for the right price.

    We don't do that. We tell everybody that NodeBB is powerful enough to run huge communities, and we stand by it. We tell everybody that NodeBB is flexible enough to look and function however you want, and we stand by it.

    These are the real limitations we impose on our hosting service:

    Hard drive space for uploads are imposed by our upstream provider and are set, though we are happy to add additional drive volumes for a fee) We have soft "pageview" limits that any user on our hosting can exceed (in fact, many do). We set them purely as a benchmark for the point at which your NodeBB may slow down depending on the type of load that you get, and encourage dialogue to make sure that you're on the right plan (server resources, etc.) We do not allow shell access for security reasons (and if you needed it, you probably could self-host)

    So please do rest assured when I and others tell you that what you see is what you get. No more, no less. I'd rather everybody get to use the best of NodeBB, instead of serving a special feature-reduced version for others.

    † I'm going to go out on limb here and say that we're probably the most qualified people to maintain NodeBB. Feel free to disagree 😉

  • You have a cool idea about NodeBB? Post it here.

    802 Topics
    5k Posts
    nhl.plN

    Some interesting feature requests can be found here:
    https://github.com/NodeBB/nodebb-plugin-2factor/pull/93

    In short:

    proposal to move all language files to Transifex and allow translators to work on translating plug-ins (pre-installed/default/bundled plug-ins were mentioned), 123456 vs. 123 456 as common i18n problem not only for Korea and Japan, some other shortcomings from Korean user point of view. Link Preview Image Korean translation by NavyStack · Pull Request #93 · NodeBB/nodebb-plugin-2factor

    First and foremost, I wish to express my sincere appreciation for the development of such an outstanding plugin. In my role as the coordinator for NodeBB's Korean and Japanese translations, I have strived to maintain consistency in wording with the primary translation project. At present, numerous default plugins of NodeBB come pre-installed. However, it appears that this applies not only to administrators but also to end-users. Therefore, it would be advantageous to enable the management of built-in plugin translations on Transifex as well. While I currently utilize NodeBB in production, there are instances where certain strings or plugins remain untranslatable, often exposing my users, who are not proficient in English, to such content. Hence, I would kindly request your consideration on this matter. Below, I have outlined several queries regarding the plugin, along with suggestions for enhancement: Some applications use a space character when presenting a 6-digit number. For instance, 123456 may appear as 123 456 when copied to the clipboard. Given the increasing prevalence of users utilizing this feature via a browser extension plugin, I believe enhancing the user experience by disregarding space characters and accepting numbers solely would be beneficial. There are instances where 2FA (Two-Factor Authentication) needs to be input more than once due to specific circumstances. For instance, upon pasting it into a browser or application, users are prompted to re-enter their username and password, even if the values are accurate. This could be due to either rapid typing or previous input. Personally, I circumvent this inconvenience by pressing and holding the CTRL key while performing CTRL + V. (But... sometimes I face Username and Password form page.)However, this workaround may prove inconvenient for the average user. While acknowledging the inherent trade-off between security and convenience, I believe there is room for improvement in this regard, particularly concerning 2FA. Occasionally, upon entering my username, password, and 2FA code, I find myself logged in as a non-member pop-up. This issue warrants attention for resolution. Your attention to these matters would be greatly appreciated, and I am confident that addressing these concerns would significantly enhance the usability and functionality of the plugin. I am currently using NodeBB in a production environment. Hence, updating without translations results in English displaying as is, akin to a bleeding edge situation. I kindly request measures to improve this. You can verify my commit timestamps, which reflect my working pace. There's ample time to pre-translate adequately for any additions. Your cooperation in presenting translation sentences prior to adding new strings would be greatly appreciated. Thanks for your support.

    favicon

    GitHub (github.com)

  • Found a bug? Why not make a bug report here?
    1k Topics
    7k Posts
    barisB

    Created an issue https://github.com/NodeBB/NodeBB/issues/12474

  • Focused discussion related to ActivityPub integration in NodeBB

    34 Topics
    346 Posts

    @trwnh context is a wonderful thing 😉

  • Help Translate NodeBB
  • 3 Votes
    16 Posts
    952 Views
    phenomlabP

    @tankerkiller125 I too opt for /recent as I prefer to see all activity rather than categories

  • Introducing public group chats

    25
    9 Votes
    25 Posts
    2k Views
    B

    @baris 👏 👏 👏 🔥

  • 5 Votes
    1 Posts
    699 Views
    barisB

    We recently received some inquiries about how long we will support 1.x and 2.x with security fixes.

    1.x will be supported for another 12 months up until August 2024 2.x will be supported for another 24 months up until August 2025

    We also released https://github.com/NodeBB/NodeBB/releases/tag/v2.8.16 and https://github.com/NodeBB/NodeBB/releases/tag/v1.19.12 containing some of the fixes from the 3.x line. If you are not able to upgrade to 3.x we encourage you to upgrade to these releases.

  • 2023 Roadmap Update

    7
    8 Votes
    7 Posts
    3k Views
    julianJ

    @phenomlab very true. A lot of talented people have done some surprisingly cool things with just the custom css panel.

  • NodeBB 3.2.0

    8
    7 Votes
    8 Posts
    623 Views
    omegaO

    @baris All good, after I ran some system updates, then did another build and this time, no error!

  • 1 Votes
    11 Posts
    721 Views
    B

    @julian said in [RFC] Change to the quick-reply `toPid` value?:

    While it is true that you can know at-a-glance whether a post has replies, I'd want to know what specific value it provides to you as an end user, besides the tautological one (i.e. it provides value when showing a post has replies, because it shows it has replies).

    For me one of the primary values of that information is found in picking up the thread of a conversation between two or more users. Traditionally forums have only had back-links, and the only way to read a conversation was to start at the very end and follow the reply-links through to the beginning, perhaps opening each post in a new tab so they could then be read sequentially once you find the beginning. The replies dropdown allows me to start at the beginning and follow the conversation as it bobs and weaves randomly through the thread.

    The broader point is consistency of expectation. If users aren't reading each post of the thread and they want to do what I just described, they could train themselves to <first check to see if there is a replies dropdown; if not, check to see if the next post is a reply; if both of these conditions fail then I am at the end of the conversation>. But more consistency makes it easier to accomplish this use case, as well as the simpler use case of gaining information about whether a post has received replies.

    (Just my $0.02. I am coming from long-form discussion forums where it can be hard to follow a conversation from post to post, where users generally do not read each post in a thread, and where time zone differences tend to place gaps between responses.)

  • [RFC] Non-privileged bumping

    Moved
    10
    2 Votes
    10 Posts
    593 Views
    omegaO

    FWIW I think there was a bug in a version of Discourse (or it was intentional I have no idea) but if a post was edited or other non-contributory actions (lie moderation) were done, it would bump the topic, again think it experience of it for too long.

    It caused a lot of confusion and sometimes in strained circumstances, people would interpret it in a negative way and lose the head. Rare, but it did happen once or twice. Obviously this was more random than the proposition above.

    I've never used a bump feature ever, other than old school "bump" which is sometimes a humorous affair and clearly signals the bump.

    I rather create and see created topics that will stand the time and value that need regular updating., constant maintaining because they are hot or timelessly useful. I also would think about more editorial management than allowing social management of information, because the "social" is over done IMHO and now Ai can be just as "social" as the next bot. 😉

  • NodeBB v3.0.0 — it's here!

    15
    8 Votes
    15 Posts
    4k Views
    julianJ

    We will look into it 😄

  • New features in 3.1.0

    19
    15 Votes
    19 Posts
    1k Views
    phenomlabP

    @baris Perfect. Thanks

  • Harmony & Persona language files

    12
    4 Votes
    12 Posts
    743 Views
    J

    @julian Thanks, now working
    I translated a string and was able to pull it right away!

  • 4 Votes
    1 Posts
    228 Views
    barisB

    A bug in our socket.io authentication code can result in Cross-Site WebSocket Hijacking (CSWSH)

    Affected versions <2.8.13 & <3.1.3

    We have resolved this in the latest version of NodeBB(2.8.13 & 3.1.3), and the fix has already been rolled out as a patch on all of our hosted customers.

    The fix is included in the latest 2.8.13 & 3.1.3 releases
    https://github.com/NodeBB/NodeBB/releases/tag/v2.8.13
    https://github.com/NodeBB/NodeBB/releases/tag/v3.1.3

  • 1 Votes
    2 Posts
    422 Views
    Gliding9426G

    @julian said in Now publishing images to GitHub Container Registry + Registry migration FAQ:

    ghcr.io/NodeBB/NodeBB (case insensitive)

    thanks, just changed the repository, but i got error from docker compose, it told me it must be all lowercase 🤠 (not case insensitive)

  • 1 Votes
    3 Posts
    247 Views
    julianJ

    Hi @Redbeanw44602! Thanks for voicing your concerns.

    In this particular change, the behaviour is only applied if explicitly enabled by the site admin. The default behaviour is unchanged: guests and regular users without email confirmed are able to browse the forum equally.

    In the case where an admin wants to gate content behind email verification, they can also opt to use the verified-users privilege group.

  • 0 Votes
    1 Posts
    464 Views
    julianJ

    Yesterday, I wrote a teaser about technical debt in NodeBB:

    In our specific case, there are other factors that also cause technical debt to incur outside of trying to "move fast and break things". Technologies change, design patterns shift, user expectations are adjusted, or scope is expanded after-the-fact. All of these could cause even a well-designed system to incur some form of technical debt simply due to the fact that you don't know how a given feature will evolve over time.

    Our experience with technical debt is similar to others' in many ways, although I feel lucky in that we're able to approach it a lot more differently than others.

    Specifically, many definitions speak of technical debt as something incurred in the pursuit of faster results. A trade-off that makes sense at the time due to time constraints.

    In our case, technical debt builds most often because we have a single vision for what a feature could be, but do not have the additional context to realize just how that feature could be used in the future.

    A contrived example — user groups

    A good example of technical debt is the user groups system. When initially conceived, a user group was akin to a Facebook group. A way for users to gather together under a common banner. We later expanded this with the formation of the group badge, which is still in NodeBB today.

    What we quickly came to realize was that there were tons of benefits that could be realized with a common user grouping system. Gamification could be tied to user groups, tagging groups of users made sense, and most importantly, privileges could be tied to user groups.

    Whenever we ended up in a situation where user groupings made sense, we made use of the pre-existing user groups system. It ended up simplifying a lot of things because we had that groups system that we knew would work predictably. It meant that separate, contained systems need not be re-invented every time you needed to segregate users apart.

    The debt? User groups as per the initial design no numeric identifiers. A user has a uid, a topic has a tid, a category has a cid, a post has a pid, you get the idea. So when it came time to create groups, I gave it some thought and decided that group IDs were unnecessary, as the primary identifier would be the group name itself. After all, why would a forum want two groups named the same thing? Madness!

    In hindsight, of course, a group ID system would make a lot more sense. It'd make even more sense given that the Write API works almost exclusively on those IDs (groups are the one exception).

    We're lucky in that while the debt exists, its impact on day-to-day development is fairly minimal. Other examples of debt are more impactful, but I can't easily think of any because we've addressed a lot of them already!

    A hidden benefit of O/SS

    A neat little side-benefit of the fact that NodeBB is open-source is that we can choose our priorities more freely as developers. While NodeBB Inc. itself pursues paid contract work and paid support, we often do have time in between paid work to spend time on the core product itself. While the draw is always there to develop new and exciting features, we have fostered an internal developer culture to address technical debt over time, as we consider any ease of maintenance burden is a win that is compounded over time. Likewise, any impactful technical debt often hinders development, and continuing to hack away around technical debt just makes it harder to resolve altogether.

    The other part of it is that our source code is open. If we are lazy and take shortcuts, someone will eventually call us out on it. 😓

  • 4 Votes
    2 Posts
    678 Views
    manaM

    I like it very much, and I am willing to use it for secondary development. The large screen and almost full-screen experience on the mobile phone make me feel like using a native app

  • 9 Votes
    2 Posts
    540 Views
    B

    In 2020-2021 years I tried NodeBB for the first time, it seems then it was the ~1.5 version of the forum and I remember exactly what I fell in love with at first sight - the navigator in the header 🙂

    F88C54E1-721F-4EB9-97E5-5D2550CF28D2.jpeg

  • 7 Votes
    4 Posts
    402 Views
    S

    Looking forward to v3 and harmony. I’ve been running the alpha and beta in Production for quite some time now. Super solid update.

  • 7 Votes
    14 Posts
    2k Views
    barisB

    We haven't released a new RC but there are some small fixes in harmony and core since the last rc. If you want to grab those you can update core and run upgrade. On develop branch.

    ./nodebb stop git pull ./nodebb upgrade ./nodebb start
  • NodeBB v3.0.0-rc.1 — The release candidate

    6
    11 Votes
    6 Posts
    687 Views
    FrankMF

    @DownPW said in NodeBB v3.0.0-rc.1 — The release candidate:

    ./nodebb stop
    git fetch && git checkout develop && git reset --hard origin/develop
    ./nodebb upgrade
    ./nodebb start

    Thanks. My test forum is now on v3.0.0-rc.1.

    @julian @baris Thanks for v3 🤓

  • Improved Post Queue tooling

    3
    +0
    4 Votes
    3 Posts
    233 Views
    julianJ

    @DownPW thanks! The less time of mine the spammers waste, the better.