Hello, help with contributing?

Webdev here, just looking for some direction on contributing to the web project. Is there a standard setup process I need to do locally? Also looking for info on rules around submitting PRs (do I fork the repo, make a branch and make a pr back in?). Just looking for some help getting started. Thanks!

Here is the GitHub repository of the admin panel: https://github.com/pi-hole/AdminLTE

Yes you would fork it and open a PR. Here the contribution guidelines: https://github.com/pi-hole/AdminLTE/blob/7e602e0df4c28e093afeedee27a205209f1f5104/CONTRIBUTING.md
What is missing is that PRs should be signed off. Ah that is explained here: Redirecting...

Just a note, the AdminLTE / PHP stuff is set to be 'retired' soon with the next major release of Pi-hole.

I've played around with the idea of using Vue.js as the next framework but that's all open for discussion.

What is your background in webdev?

Thanks for the quick response! I was hoping to knock out some bugs. Is that a good place to start?

Hey Dan, my experience has been primarily on the front end. I've been doing React for about 4 years at this point, but would love to help you out with Vue. I'm Not afraid to get my hands dirty with server side either.

Ah, I thought the admin panel would stay as it is any only the webserver + PHP interpreter moves into FTL?

Yes and Yes (and partially No).

For v6.0 we are currently working on HTTP inside FTL. At the same time we'd really like to remove PHP because it just turns out to be a massive potential for security issues. All dynamic content will then have to be rendered client-side in Javascript. This adds a certain workload on top for v6.0 but it appears to be well invested effort.

Eventually (v7.0 or later like), we'd like to improve on the web frontend development which is currently writing HTML, JS and CSS by hand. It would be nice if we could benefit from a framework somehow.
However, this is not something we can "just start" because the web interface can already do so much that porting all these capabilities and features over into an altogether new framework (which does not need to look 100% the same) will be quite some work. Nothing is decided in this regard, yet.

More than now with Lighttpd spawning php-cgi to create dynamic pages from PHP? It's going off topic but it's interesting to me to understand how the initial plan with doing that just inside FTL via PH7 (or any other embedded PHP implementation) causes security issues compared to the regular webserver => CGI/FPM way. Is there a discussion on that which you can link, or Mattermost channel or so? :slightly_smiling_face:

Could make sense to migrate the pages/features of the admin panel in stages to a framework, so it is tested and can be fixed/enhanced more targeted before further pages are migrated. Also then it is not such a huge change that must be completed for a single merge, while all other parts of Pi-hole continue to be developed, like the problem with the v6 branch that stood so long parallel to v5 branch, that it cannot be merged anymore and probably needs to be redone from scratch.

I'm not talking about a comparison here but rather that having (and using) a dynamic interpreter at all.

I disagree. The FTL branch is still (more or less) in sync. We merge development (and now release/v5.9) every now and then to ensure the deviation doesn't get too large. Similar with AdminLTE, even when the updating isn't done similarly frequent. Core should likely be redone but that we something @PromoFaux started some time ago and it really wasn't all that important so far.

My plan is to take a few weeks of vacation around autumn to continue bringing v6.0 into an alpha-testable but otherwise feature-complete phase. From thereon, there should be no v5.x development at all.

Yes I meant the development-v6 branch in core. That made me think that adding more larger changes than the plain HTTP => FTL merge to the first v6 release might cause more such issues, so that doing further changes in future releases has some benefits. But probably I'm wrong.

Great to hear. Feel free to give me a ping (if I do not recognise anyway when browsing GitHub) and I'm open to help testing or updating/reviewing the shell parts (installed most importantly) :slightly_smiling_face:.

Great, thanks for the offer. At this point it's just a general concept of where to go and what to do. I'm not a web developer by any stretch of the imagination but I'd like to be able to work on the admin interface and the best framework that I found that would be relatively easy to implement and allow for community contributions is through Vue3. We had an experiment with React but we had to abandon it because only one person on the development team could work on it and there wasn't much, if any, community buy in to help with sustaining it. We felt that developing that version in that condition could end up costing the project in the long run. That developer has moved on to other projects and just finished his college degree and is starting a career that I know will be excellent, and I wish him the best.

This mirrors what DL has said in his post about version 7.0.

For now, AdminLTE is the web interface and there was some talk about the outdated version of Bootstrap that it uses and what can be done with that. We've dropped the older IE support so we can use some more modern JS in there but the current setup is to clone the AdminLTE repo locally and serve the html directly from that. So things like transpiling or other processing may not work unless we had some way of CI/CD to produce a master branch that is the code after processing. To me that feels like something that should be started from scratch on a new setup instead of trying to wedge in to the existing AdminLTE repo.

I do have a license for a Vue template ArchitectUI Dashboard Vue PRO - DashboardPack and it's Vue3/Bootstrap5.

Edit: Apparently it's Vue2 from looking at the packages.

Edit2: https://vuero.cssninja.io/ and I've forked another one that may be interesting. (GitHub - pi-hole/admin-one-vue-tailwind: Admin One - Vue.js 3 Tailwind CSS admin dashboard template)