So on NodeBB a lot of the customization comes through themes and plugins, which can be substituted, created, shared, etc. But the access to this customization is somewhat host-dependent (and this is especially true when it comes to hosts that do not allow command line SSH server access). If a similar thing holds with Discourse, then I would suggest double-checking that the hosting company allows that level of deeper customization (and ideally command line access). You could easily leverage the deeper level of customization if you have need in the future, given the many developers among your users. — Leontiskos
This sounds great. I am of course willing to help as I am able, although I should say that this is precisely the time of the year that gets busy for me. — Leontiskos
Can I download my data?
Yes. You own your own data. A copy of your files (including uploads and avatars) and databases (full dumps) can be downloaded from the Backups menu of the Discourse admin panel at any time.
Plush seems like it's working pretty well. I really like the feature where I can click on the title bar and return to the post I just quoted. My concern is that Plush seems near the end of its lifecycle. If you look at the second half of my post <here>, you can see a number of the things Plush hasn't managed, despite requests. Most of that stuff has been standard for years now, along with ignore lists and strong moderation tools. If Plush won't budge on those things, then I have to wonder if they are in maintenance mode, nearing their expiration date. NodeBB and Discourse don't show evidence of this lifecycle issue. — Leontiskos
I think your experience is not normal because your moderation is not normal. I think that's why your forum is so much better than the alternatives: you have superior moderation and your moderators have a good grasp of philosophy. — Leontiskos
P.S. One significant feature that NodeBB hasn't yet managed is composer keyboard shortcuts. For example, Ctrl-i won't give you italics. — Leontiskos
Is this maybe the reason why some sites are quite slow in loading? I guess they must be the ones with a huge content. Do you know any of them --that use this method-- so I can check if this is true? — Alkis Piskas
I've got a bug related to sessions and it's so hard to find out what's going on there! — flannel jesus
I like magic most when there's a clear way to demystify what's actually happening underneath the hood. The biggest problem with magic that you can't demystify is that it's hard to predict what other kinds of things you can and can't do with it, you know? — flannel jesus
Java and Python are general purpose languages that can do anything, and on the other side you have PHP and JavaScript, which are just scripting languages
I get what you mean, but I wouldn’t classify them this way. — Bob Ross
It is not that I don’t like Python, but, rather, I don’t think it is a good server-side language for web development — Bob Ross
Well sure, but what is an email web client but a collection of notes, albeit most sent by others and to and fro. If you do anything but opening a note or adding to it (responding to an e-mail) say, changing account settings it does a full redirect to a different URL. — Outlander
Gmail slack Trello Netflix and grammarly — flannel jesus
I abhorred these things when they first came out. If your internet is not good or perhaps is throttled due to reaching an allotted usage level, nothing would ever load and worse never told you it didn't. They seemed to have improved it by forcing a manual redirect/better fail-safes in more robust frameworks but there was nothing like clicking a link or performing an action and the browser itself telling you "hey it failed" right when it did so you knew to refresh or try again later. Just my 2 cents. — Outlander
From my experience, I have seen python being used as a server-side language only relatively recently (but perhaps I just haven’t been around the right groups of people who love Python). Originally, people (as far as I know) used Java, C#, and PHP. If someone was running a website, it was most likely PHP or Java (and not Python). If python was used for web servers before PHP/Java (like Django) in a stable fashion, then I am simply unaware of it and will have to read up on that. — Bob Ross
I will have to checkout Django sometime though. Is it minimalistic or bloated? — Bob Ross
NodeBB was originally built with MongoDB, but it runs on Postgres just fine. That's what I deployed it on. I think that compatibility was added sometime in v2. — Leontiskos
The simple answer is that I wanted pagination, even prescinding from its SEO favorability. Infinite scroll on a long-form philosophy forum didn't seem right to me. NodeBB offers both, and individual users can even change the setting on the client side. So I'm not a great person to ask about Discourse, as I never installed it. I have it on good authority that it is a bit harder to install and consumes more resources, but those aren't deal breakers. Both platforms are robust, with more to offer than Plush. Granted, I have come to appreciate the simplicity and distraction-less nature of Plush. — Leontiskos
I had that idea until I installed Misago and started digging into the Github history. There are many more features than I had anticipated, especially when it comes to security, moderation, IP tracking, etc.—but I think ChatGPT has already given you a good sense of what is involved. — Leontiskos
Also, after I joined I realized more concretely that TPF has one thing no other philosophy forum has, and that no forum software can create: a healthy community of users. Without that, it's all just window dressing. — Leontiskos
Whatever you decide, I think a forum software would benefit from having a philosophical client. The things you guys have suggested and requested from Plush seem spot-on, and are much more thoughtful than the short-sighted requests I have seen from the business world. — Leontiskos
Would I be correct in saying that Plush only supports a sub-set of BBCode, i.e. not all the tags are implemented (e.g. tables)? — Wayfarer
Firstly, there is no "the best" framework or languages for programming: it depends entirely on what the project is that one is developing. — Bob Ross
newer languages (like Python with python flask) — Bob Ross
they are slower and tend to have been been pentested — Bob Ross
are the fad — Bob Ross
My philosophical approach to web projects is minimalism (viz., keep it simple stupid), compartmentalization (viz., always, always, always separate code so that it is modularized: cleaner, more scalable, easier to read, and takes up less storage), documentation (viz., always document what the heck this thing does, and pick languages and frameworks that are well-supported: easier to get people to work on the project, easier to teach them, and easier on you to develop with it), and secure (viz., don't pick the newest language, framework, or library on the block, it takes time for ethical hackers to find vulnerabilities); so I love minimalistic MVC (model-view-controller) frameworks with amazing documentation that utilize very well-known and well-established server-side languages, such as Laravel. — Bob Ross
With regards to libraries and frameworks like React and Angular, it is important to know that it all runs client-side, which adds runtime on the user's browser. Although it is beneficial to run some stuff on the client-side, to save server-side runtime, it is important not to over-bloat the client side; which I worry happens with those kinds of libraries and frameworks for a lot of projects who picked them just because they are in style right now. I would rather keep it simple, and use pre-compiled TypeScript for client-side operations, and keep it absolutely minimal to save client-side runtime. — Bob Ross
If you are trying to revamp this website, then please do not hesitate to contact me if you need any help; as I would not mind helping out with a site like this that I enjoy using. — Bob Ross
What are you guys currently using for the client-side, server-side, query, and style-sheet languages? — Bob Ross
Its use of indentation for syntax seems like a monumentally bad idea. What do you have to say for that? — SophistiCat
And are there advantages to Python beyond its use in server scripting? — SophistiCat
That would definitely be a meaty project, but rewarding if it could be done. Misago is the Python frontrunner, which is why it was my first choice. Unfortunately it is provided by a single developer who works on it in his spare time, but he is talented and I am sure he would appreciate help (see <this post> regarding the current plans for Misago). NodeBB and Discourse have multiple full-time developers along with the attached commercial interests, and therefore possess more stability. I agree regarding Vanilla and PHP. — Leontiskos
A crucial factor in my considerations was long form vs short form discussion formats, as a philosophy forum requires a more long form format. A lot of the newer, asynchronous forum frameworks cater to short form discussion and phones/tablets (Discourse does not even support pagination). They are becoming a blend of forums and instant messaging, running away from phpBB in a way that strikes me as both good and bad. If the architecture is suitable one could restyle them for long form purposes, but I am not great with CSS so I wanted something compatible with long form discussion right out of the box. Plush is good on this score, and Misago looks and feels a lot like Plush. — Leontiskos
Thanks for your thoughts. I didn't know you were a developer. I don't think I could call myself a developer at this point, although I could get back into it fairly easily. — Leontiskos
Taking these adjustments into account, the comprehensive project duration might come down to roughly 25-50 weeks (6-12 months) if undertaken full-time.
Building a forum with a feature set similar to Discourse from scratch, especially when learning React and Next.js concurrently, is a substantial endeavor. Here's a broad estimation of the time it might take based on various stages of development:
1. **Learning Basics (React and Next.js)**:
- **Duration**: 2-4 weeks.
- This phase includes understanding the fundamental concepts, building small projects, and becoming comfortable with the development environment.
2. **Design and Architecture Planning**:
- **Duration**: 1-3 weeks.
- Outline the features you want to implement. Decide on database structures, authentication mechanisms, state management strategies, and other foundational elements.
3. **Core Features (MVP - Minimum Viable Product)**:
- **Threads and Posts**: 2-3 weeks.
- **User Registration & Authentication**: 2 weeks.
- **User Profiles**: 1 week.
- **Basic Admin Tools (user management, basic moderation)**: 2-3 weeks.
- **Duration**: 7-9 weeks for a basic MVP.
4. **Advanced Features**:
- **Advanced Moderation Tools (post edits history, user warnings)**: 2 weeks.
- **Private Messaging**: 2-3 weeks.
- **Search Functionality**: 2 weeks.
- **Categories & Tags**: 2 weeks.
- **Notifications**: 2 weeks.
- **Duration**: 8-11 weeks.
5. **Additional Features (Common in Discourse and Similar Platforms)**:
- **Badges & User Levels**: 2 weeks.
- **Bookmarks**: 1 week.
- **Polls**: 1-2 weeks.
- **Attachments & Media Handling**: 2 weeks.
- **Duration**: 6-8 weeks.
6. **Testing, Bug Fixing, and Refinement**:
- **Duration**: 4-8 weeks.
- This is crucial. As you develop, you'll discover edge cases, usability issues, and bugs that need addressing.
7. **Data Migration and Integration**:
- **Duration**: 2-4 weeks.
- Migrating from an existing platform can present challenges, especially if the data structures differ.
8. **Deployment and Scaling**:
- **Duration**: 2-4 weeks.
- This phase includes setting up servers, handling security considerations, ensuring the platform scales with user growth, and other deployment-related tasks.
Given these broad estimations, you're looking at approximately **32-61 weeks (8-15 months)** to develop a full-fledged forum application with a feature set akin to Discourse. This time frame assumes you're working on it full-time. If it's a side project, the duration will extend accordingly.
It's crucial to note that these estimates are quite generic and can vary based on individual speed, unforeseen challenges, feature complexities, and other factors. Some developers might move faster, while others might need more time, especially when dealing with the intricacies of a forum application.
Absolutely, security is paramount when developing any web application, especially something as user-focused as a discussion forum. Neglecting security can lead to data breaches, unauthorized access, and many other serious issues. Let's break down the key security considerations and their potential time implications:
1. **Authentication**:
- Implementing secure login mechanisms is essential. Consider using established libraries or services like OAuth or Auth0.
- **Duration**: 1-2 weeks (on top of basic user registration & authentication).
2. **Authorization**:
- Ensure that users can only perform actions they're permitted to do (e.g., only admins can delete any post).
- **Duration**: 1-2 weeks.
3. **Data Validation and Sanitization**:
- Protect against SQL injections, script injections, etc. by validating and sanitizing user input.
- **Duration**: 2-3 weeks.
4. **Secure Data Transmission**:
- Implement HTTPS across your forum to encrypt data in transit.
- **Duration**: Less than a week (but requires ongoing monitoring).
5. **Data Encryption**:
- Passwords and sensitive data should be encrypted before being stored.
- **Duration**: 1 week.
6. **Session Management**:
- Implement secure session handling to prevent session hijacking or fixation.
- **Duration**: 1-2 weeks.
7. **Rate Limiting**:
- Implement rate limiting to prevent abuse (e.g., rapid-fire login attempts or spammy post creation).
- **Duration**: 1 week.
8. **Content Security Policy (CSP)**:
- Define what resources can be loaded to protect against cross-site scripting (XSS) attacks.
- **Duration**: 1 week.
9. **Cross-Site Request Forgery (CSRF) Protection**:
- Protect your forum from CSRF attacks by implementing anti-CSRF tokens.
- **Duration**: 1 week.
10. **Regular Security Audits & Updates**:
- Tools like Dependabot can be used to stay updated with the latest security patches for your dependencies.
- **Duration**: Ongoing, but setting up monitoring and automated updates might take a day or two.
11. **Backup and Recovery**:
- Regularly back up the forum data and have a recovery plan in place for emergencies.
- **Duration**: 1-2 weeks.
Adding up these security-specific durations, you're looking at an additional **12-19 weeks** dedicated solely to security. These estimates are, again, very broad. Some tasks may take less time if you're using specific frameworks or libraries that handle them out-of-the-box. However, security is not a one-time task. It requires ongoing attention, regular updates, and occasional audits to ensure that the platform remains secure as threats evolve.
Incorporating these security considerations into the earlier timeline, you're looking at a more comprehensive project duration of approximately **44-80 weeks (11-20 months)** if undertaken full-time.
I've recently been using Laravel with Inertia, React, and Tailwind for the frontend. Works really well. — Michael
I used to think that. I always thought that HTML should just be done in HTML, not JavaScript. But then I actually tried React and Vue and quite like it. — Michael
That strikes me as an overestimate. I've built business CRMs used by a FTSE 100 company in a few months. — Michael
Instead of building a forum software from scratch, why not leverage and customize an open source option? Vanilla/Plush seems decent for your purposes, but you could self-host for much cheaper if you are able to provide the technical labor. NodeBB, Vanilla, Misago, Flarum, and Discourse are some of the open source options I looked at. Using NodeBB with the Lavender theme seemed like the best option for a philosophy forum, although Misago is also very clean. — Leontiskos
the older approach catered to a low barrier to entry, with languages like Ruby and Python being easy to learn — Leontiskos
Yes, and I think this is why static HTML/Javascript is making a small comeback. — Leontiskos
There is a greater cognizance of maintenance and updating costs. In general it seems that the magnanimity of the tech boom is behind us. Cost and monetization loom larger than they once did when we were dazzled by the novelty and the low-cost-relative-to-the-past. — Leontiskos
See Cal Newport's Digital Minimalism for more on this. — baker
export default function Blog({ posts }) { return ( <Layout home> <Head> <title>{settings.siteTitle}</title> </Head> <section className={styles.articleList}> <ul className={styles.list}> {posts.map((post, i) => ( <ArticleListItem post={post} key={i} /> ))} </ul> </section> </Layout> ); }
If I am not wrong, one of the main guidelines of this site is to maintain the quality of the posts. I would rather be banned for being a 'fascist' rather than being ignorant. Agree, dear moderators? — javi2541997