danirus / django-comments-xtd

A pluggable Django comments application with thread support, follow-up notifications, mail confirmation, like/dislike flags, moderation, a ReactJS plugin and Bootstrap 5.3.
https://django-comments-xtd.readthedocs.io
BSD 2-Clause "Simplified" License
594 stars 157 forks source link

Get rid of frontend dependencies #161

Open getup8 opened 4 years ago

getup8 commented 4 years ago

First off, thanks for creating such a great app, it has a ton of functionality and seems well built.

Just wanted to give some feedback after going through the tutorial, feel free to do with it what you will :)

It would be amazing if this could have zero dependencies (besides django-contrib-comments of course). But needing to use React, jQuery and Bootstrap from the get go is a lot to ask if you're using another CSS library (or none at all) and VanillaJS or another JS library. Maybe consider a VanillaJS implementation with some basic styling as the default version instead? And then have plugins / extensions? I know that'd be a lot of work..

Also, a setting that just didn't allow commenting / interacting with comments for anon users would be nice. Doesn't seem to exist unless I misread.

danirus commented 4 years ago

I do fully agree. It is a lot of work, but it's worth the effort. I have been thinking about it since a year but didn't have time to put on it.

About anonymous users, next release 2.6.2 will explain how to customize the app so that it doesn't allow anonymous users to post comments. It's in branch issue-140.

getup8 commented 4 years ago

That's great you've been thinking about it and are planning on it!

The new "only users can post" enhancement is great too.

I might play around with a VanillaJS implementation so will let you know if I get anywhere.

ashwani99 commented 4 years ago

@danirus @getup8 To add to this discussion, I think at this moment, the JS plugin is too much tied up with the django-comments-xtd package itself. I think it should be separated out with less dependencies as @getup8 mentioned. Along with that, it would be nice if there's an option to extend the JS plugin so anyone can work on top of it

jhancia commented 3 years ago

Hello, thanks for this excellent package. Wondering if there's an ETA for this vanilla javascript release. Have a deadline coming up and we'd love to use django-comments-xtd with the ajax javascript plugin. Despite experience with jQuery and bootstrap, our team isn't familiar with react and we weren't able to get it working.

We are also using bootstrap 3 and while we were able to modify a few of the templates to use the old bootstrap 3 classes, it looks like we'll need to modify the js plugin as well to continue using bootstrap 3. Some packages like crispy-forms have a 'bootstrap_version' setting where users can set the value to 'bootstrap 3', 4 or 5, and the package includes those different versions of the templates. That would be another excellent feature (not sure how much work it is!) It might be possible to include the previous versions of the templates and choose which ones to display based on the setting. Thanks so much.

danirus commented 3 years ago

Hi @jhancia, there is no estimation. I started working on it as part of other major changes in the app (branch issue-210, which uses a new model CommentReaction instead of CommentFlag). I wish I could have it by the end of the year, but at the current pace of development I am afraid I will extend beyond those dates. In the meanwhile if you need help integrating the current plugin based on ReactJS, please, open an issue here in GitHub or write me an email.

tian-yan commented 2 years ago

Same here, I want to express my gratitude to the team for this awesome package. In regards to the front-end dependency, even though this package has built-in support for JavaScript and BootStrap, I did not used them at all. In fact, my website under-development was built with TailwindCSS (not BootStrap) and I aims to build a Pure CSS front-end as I am very demanding in light-weight and customizing-flexibility.

Mte90 commented 7 months ago

So I was looking on how to use this project with Tailwind (it is just a template file so it shouldn't be difficult) but as others wrote the issue is the JS framework. I don't want react, I am more interested in HTMX but if it is JS vanilla it will be better.

I see various ticket for version3 that should remove the React plugin but they are very old information.

How we can help to move on the version 3.0?

danirus commented 7 months ago

The work to have a ReactJS-free and Bootstrap-free django-comments-xtd was moved to the comment's ink organization:

I didn't work on the project since almost two years. I do not consider it ready to use because the templating is over-complicated and caching comments is too messy.

Mte90 commented 7 months ago

Yeah I saw that the project doesn't get updates since 2 years, so we can consider the 3.0 milestone abandoned and that this project is like in maintenance mode on 2.9.x branch with react.

danirus commented 7 months ago

About django-comments-ink, postponed rather than abandoned describes better the current situation. About django-comments-xtd, it will stay with the ReactJS plugin and Bootstrap.

Mte90 commented 7 months ago

So I did:

With those changes Remarkable and Django libraries are used only if available. So I think that can be generated a bundle that includes also the React-dom/react libraries in this way it will be just a unique JS.

Mte90 commented 7 months ago

Reading the JS code the bootstrap templating is defined in the jsx file so to switch to Tailwind is required to change the code and compile it: https://github.com/danirus/django-comments-xtd/blob/8c56a4292ca2529c407d1b2574380db652d74a38/django_comments_xtd/static/django_comments_xtd/js/src/comment.jsx#L441

danirus commented 7 months ago

So I did:

With those changes Remarkable and Django libraries are used only if available. So I think that can be generated a bundle that includes also the React-dom/react libraries in this way it will be just a unique JS.

As I commented in PR #420, none of the two mentioned PRs (#417 and #420) remove the dependencies referred to in this issue, which are the Bootstrap UI library and ReactJS. Thank you anyway.