-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UI Update discussion #5937
Comments
I would love to see this happen as Gitea isn't very usable on mobile devices, but this would be a massive undertaking and one that I hope would not take away all the developers from maintaining and working on regular features for Gitea. 😃 |
Focusing only on CSS now, I have two primary concerns:
|
Dropping less in favour of native css variables would mean dropping support for some browsers, but I guess I'd be okay with that since most of the people using Gitea are devs anyways who usually are using up to date browsers. A new design might also help to make it more clear Gitea is much different from Gogs because as of now, both share pretty much the same ui. Framkework-wise, I'd throw bulma.io in the mix as that is something I've used in the past and found it pretty good. I takes the hassle out of most things while still allowing high custimization and therefore easy theming. |
I think that giving Gitea its own unique UI is something that would certainly help show the difference between it and Gogs, At the same time I have to say that less or scss is probably something that should continue to exist in this project as some of their functionality is not available in CSS, framework wise I have no opinion that would benefit this discussion since I personally just use Bootstrap 4 for my projects (not something that should be used here) |
Bulma sounds good to me :) thought it means full UI rewrite sadly |
I am definitely in favor of plain CSS and using standards like Flexbox and Grid over frameworks. Grid provides a lot of features that non-Grid frameworks cannot. |
@andrewbanchich Bulma is based on flexbox |
Yes, but if it isn't based on Grid then it's still a framework that is using something in a way it wasn't meant for. First, grid frameworks used floats for layout, which was a workaround since floats weren't meant for any kind of layout. Now they are using Flexbox for the full 2D layout, but Flexbox is only meant for 1D layouts. Grid is meant for 2D layouts, and it can do things Flexbox cannot very easily, so I feel like we should just use the standard CSS Grid. In my opinion, there isn't much need for a grid framework anymore. |
Bulma is very lightweight and gives you quite nice looking style out of box, I don't think we have designer who could do us nice looking design for gitea here |
Agree, I certainly need those as well and there is no clean CSS solution for color adjustments like this. I personally prefer SCSS over LESS, but for light usage, both should be about equal.
Grid is certainly an option, but are there any suitable frameworks based around it available? |
@kolaente can you share it in some separate git repo somewhere? As I have been playing with bulma also and would be nice to work on this together |
The design made by @kolaente reminds me of Gitlab a little bit. It's great that there is a topic to discuss an enhancement of the UI. Personally i like the desktop design because it is close to Github. I guess this may help many developers to get started with the service. Sometimes i add issues via my phone. The UI can be used, yes. But some other services have a better responsive UI. Unfortunately i am not that good with CSS. Maybe Twitter Bootstrap could be used to be responsive (you can only select grid for example) and the other components like buttons have the custom layout. |
I like GitHub's (everything in the middle) design more than GitLab's. I find it less distracting. |
I'm new here - it started with opening issue #6687 and looked at less code and ask about a solution in sass. Afterwards @techknowlogick pointed me to this issue. GitHub GitLab/Bitbucket Css/ vs. sass Bulma theme I will use gitea either way, but i would like a improved dark theme (no stylus patch) and without variables more work to adjust something and get every page. Maybe i can help a little bit with style stuff, it it is wanted. |
On topic of a sidebar or other major redesigns: I think a main appeal to many users is that Gitea's UI is so similar to GitHub. If we change layout fundamentals like adding a sidebar, it will be very disruptive to users accommodated to the current layout and GitHub. I'm not sure I would accept it. |
Like @silverwind said: I guess it's very easy for users to switch or use Gitea if they are familiar with Github because the UI looks nearly same. |
Maybe starting with using variables and mixins for more consistency in current theme. For Example. A private repo in sidebar hat 36px height and a public repo or organization 35px. Also Organization have less margin to left side. Also the width of both container is different. In profile second row of organizations has no margin t first row. About the menu: Most navigation is OK and intuitive, but the Menus on top in settings/admin are really strange. I prefer the Menus in a list. Much easier/faster to find the wanted entry. Also font-face is a complete mess. Lato is defined in sematic-ui.css and in index.css. I don't mean the |
I think we should always keep less items on menus to handle that. Less is more. :) |
Something that'd make development of custom front-ends super easy would be the (not easy) task of creating an API for Gitea servers. That way, the front-end could be written in whatever framework people are comfortable with - Mithril, React, vanilla JS, whatever. |
@NetOperatorWibby Gitea has an api, it is just not feature-complete as of now, see https://try.gitea.io/api/swagger |
I'm developing a bitbucket-like custom theme for gitea. The UI library that bitbucket used is built on top of React (Ref: Atlaskit), so I integrated React into Go template with some "dirty" means. I maintained a string-to-module mapping in JS, and exposed a Honestly, the current implementation doesn't really meet the philosophy of React apps, but it works, and in fact, it's simpler than a "real" React SPA, because you don't need to care about routers and global states. |
@balthild Looks awesome! So this is essentially a "translation layer" put on top of Gitea which translates the Gitea Template to React? |
@kolaente Yes. The reason is not only about the lack of APIs, but also the internationalization library. There's no JS equivalence for |
I like the curent stile - but this is only my opinion |
I do not always like the view under "Changed files". From time to time I have pull requests where 20 files and more have been modified - which is not always avoidable (Migration PHP 5.6 -> 7.3). The problem is that the browser needs a lot of time to show the changes. The Pull Request page loads fast. Only the syntax highlighting eats up a lot of time. Here a view similar to Gitlab is recommended. I'm talking about a pull request view like in this style: #5937 (comment) |
I'm still wondering if there is any UI framework out there that can really replace our use of Fomantic-UI. It needs to:
Bootstrap 5 almost fits that bill but dropdowns would need to come from another library and their CSS variables are pretty much a work in progress. |
why not build it on top of bulma? Clean and fully flexbox based :] |
I wrote of Bulma because of icon fonts but it seems they do at least support SVG icons. E.g. https://bulma.io/documentation/components/dropdown/ has icon font stuff in the example code but if you check the live example, it's actually SVG and something (JS?) is hiding the icon font: Only thing lacking in Bulma is CSS vars, but I guess that could be worked around, thought their Sass variables probably present the same issue with fomantic where one cannot specify CSS variables for colors because then Sass color variation functions would inevitably throw up. |
Seems like CSS vars are on the table for Bulma at least, jgthms/bulma#2981. We definitely want to wait on that. |
Maybe take a look at Tailwindcss, I moved from Bulma to it recently, and it provides much more, with a cleaner code and a better DX. |
Not sure about Tailwind. It would mean we have to litter our HTML with those helper classes and there's no more style sharing between components. It's a different paradigm that can work for small sites but I'd see it being a pain if you want for example to change all box headers which would previously be one line CSS change would now be a 100 line HTML change. |
I would go with Bootstrap (v5 uses variables in FE).
It is the most common and known that increases the chances for a PR and also often different library offer Bootstrap class/template support. |
@silverwind I'm happy to say that's not the case! That was my first impression as well. But once you're done prototyping, you copy all these classes and replace them with a single one. Here's an example from the docs. |
I would still rather write css than have to lookup from tons of helpers 🤷♂️ |
@lafriks TBH I sometimes look up normal CSS props, so I cannot see the problem with looking up the helpers. For me, it saves time to type |
Values can be easily moved out to variables but knowing css is more useful to know in general but that's a bit off topic already |
I think tailwind isn't right for us and this |
The first version of Gogs used Bootstrap ... :) |
@wxiaoguang pointed me this way. I've read the thread and see, there's a lot to unpack. May I? Tooling focusedFrom my observation here, the discussion is tooling-centric. That's okay, given the number of developers here, but perhaps not the best approach. I'd like to take into account feedback gathering from User Research if possible: BrandingBut also: Finding your own voice. This can feel a bit too corporate for some of the folks here, but bear with me. Probing questions would be:
UX, not only UIBased on that, you can derive some ideas. This affects different parts of the UI, like the chosen colour palette, typography, spacing, tone and voice etc. Styleguide, Component Library oh myNext thing I want to highlight is the migration to Vue. This could end up in a component library. Although worthy, I'm not sure, whether it is enough. I spent some time the last days to triage confirmed UI issues on this repository and digged up, where to find the code in need of change and what remaining questions are open (for me personally if I were to work on it). @lunny opened #19902 to track those. I've also learned about inconsistencies of elements, not yet turned into a Vue component, e.g. #3605 Speaking of components, I noticed that https://storybook.js.org is gaining traction in the community. Utilising that could help also documenting and testing components (in isolation, as screenshot etc). The biggest hurdle I can see here is the interplay with Go templates. If you want to develop more than a component library, take a look at styleguide. The community collects examples over at http://styleguides.io ToolingRegarding the tooling question: It depends. I would look for a CSS only library to handle the grid and smooth over browser inconsistencies. Interactive elements can be handled by Vue (or as Web Components?). Listening to the audienceI suggest to track user feedback as issues. For example https://news.ycombinator.com/item?id=31633837 mentioned that the org UI has potential for improvements. Would be great to reach out and ask for concrete issues (I'm not on Hacker News, though). Potential roadmapIf I were to advise, I would move away to Fomantic, but keep their CSS classes for now. During this migration, listen to complaints (not only about Gitea, but also other Forges) to detect areas, that could be done better. |
A clear and feasible roadmap is the key to success. I have closed #18302, just copy my thoughts here, the uncertain problems without answers on the roadmap in my mind. Background
Questions
|
What about using alpine.js for the JS part? It is conceptually pretty close to Gitea's server rendered templates and only enhances it. It has very simple learning curve to new contributors too. |
I was in favour if alpine for a long time. However, I feel they pivoted into a direction I can no longer recommend. That being said, looking at the current Vue components, I feel like we should pick something with a vibrant ecosystem, that already provides parts of what we need. |
didn't we agree to move more stuff into VUE3 components we do include? |
One thing I haven't seen mention of is Custom Elements, which lets you get a Vue/React style component interface without all the overhead. Custom Elements are native to the browser and have very good support across vendors. This would lend itself well to being instantiated across the many templates Gitea has. One example framework is lit or lit-html. https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements |
I'm not really sure, if this is the right place for this, but I'd like to bring some attention to the theme of Freeplay over here: https://codeberg.org/Freeplay/Gitea-Modern I think, it looks really cool and unique. Maybe a UI/UX makeover could take some inspiration from this? |
Maybe we can start by converting css to tailwind/windicss/unocss/etc? |
This will likely hurt some feelings, but as an actual gitea feature contributor myself (who plans to contribute more in the future, too), it has to be said.. The only frontend that has staying power is vanilla CSS / JS, ideally zero build Non-vanilla front ends change on a monthly basis and can put Gitea on a dependency death clock at worst- Like most other projects in this space.. these dependencies can be difficult or impossible to remove in the future. Added layers will cause friction and new barriers for contribution-- New gitea features will be at risk of never happening. Don't let the architecture astronauts junk up the front-end with unnecessary complexity. Gitea currently has excellent long term staying power because of it's simplicity, few dependencies, ultra-low friction to contribute or debug. Article on this subject: https://htmx.org/essays/no-build-step/ |
It’s true, you can never rely on dependencies that change every few months. That’s why we should ditch Go and adopt C, as it’s far more mature and static. 😉 On a serious note though, I don’t think this issue (which probably could be split into several issues) has to be about “which technology do we add?”; rather it can be something about consolidation, organization, and simplification. Right now we are already on a ‘dependency death clock’ with Fomantic and Normalize.css, and we suffer from fragmentation between Vue and jQuery. IMO, reducing fragmentation is far more important than going zero build or even picking the "right" technology. It’s worth noting that the splay of logic between frontend and backend is its own kind of fragmentation as well. |
Per discussion in #5932, and @kolaente's suggestion. I am opening this ticket so we can discuss future of Gitea UI
The text was updated successfully, but these errors were encountered: