- Contributor: Chaitanya Shahare
- Mentors: Tanya Lattner, Vassil Vassilev
- Project: Improve LLVM.org Website Look and Feel
- New Website Link: www-new.llvm.org
- GitHub Repositories:
- Website Repo: llvm/www-new
- Hugo Theme Repo: llvm/www-template
The primary objective of this project was to modernize the LLVM.org website by improving its design and usability while making it easier for the community to contribute content. The goals included:
- Developing a responsive, accessible, and user-friendly design for LLVM.org.
- Building a flexible Hugo theme that allows for straightforward content updates and customization.
- Gathering community feedback to incorporate design suggestions and ensure the new site meets user needs.
- Documenting the process and configuration options to support future contributors.
RFC Proposal link
- Drafted and published an RFC (Request for Comments) on the LLVM Discourse forum to introduce the LLVM.org Website Redesign project to the community. This RFC outlined the project goals, proposed design changes, and sought feedback from LLVM contributors and users to align the redesign with community needs. Engaging with community input early in the process helped shape the project's direction and informed design decisions moving forward.
- Initial Design Mockups: Three design mockups were created, drawing inspiration from various sources such as Rust and Swift websites. These were refined based on community feedback and mentor input. designs.
- Community Feedback Survey: Conducted a survey to gather insights on the design preferences and functional expectations of the LLVM community, resulting in actionable design improvements. form
-
Hugo-based Website Theme
- Developed a reusable Hugo theme from scratch to make the website modular and scalable, enabling easy replication for other LLVM projects.
- Separate Repository: Created a dedicated repository (www-template) for the Hugo theme to maintain a clear separation between the theme and website-specific content, ensuring flexibility for future updates.
- Theme Elements:
- Responsive Navbar: Built a responsive navigation bar, configurable through
hugo.yml
, supporting submenus for comprehensive content organization. It dynamically adjusts to desktop and mobile layouts, offering a smooth user experience across devices. - Theme Switcher and Footer: Integrated a light/dark mode theme switcher to improve accessibility, along with a fully configurable footer. Both features enhance user experience and customization.
- Table of Contents: Created a shortcode for automated table of contents, improving navigation on documentation-heavy pages.
- Extendable Homepage Layout: Developed a homepage with customizable sections (e.g., hero banner, quick links, and feature highlights) to give each site a unique look and feel while using a standardized layout.
- Responsive Navbar: Built a responsive navigation bar, configurable through
-
Page Creation and Content Management
- Dedicated Website Repository: Created a repository (www-new) for the LLVM website itself, linking it to the
www-template
repository to allow seamless theme updates. - YAML Data Files for Configurability: Set up data-driven content management through YAML files, enabling easy addition and modification of website sections such as subprojects, Developer Meetings (devmtg), GSoC projects, and Publications.
- Custom Shortcodes and Markdown Templates: Developed shortcodes and templates to support structured content display, including:
- Sub Project Cards: Standardized cards to present projects and feature highlights, ensuring consistent design across pages.
- datamap: Generates entire pages based on YAML data, making page creation efficient and uniform.
- event_data: Manages and displays metadata for specific events, including dates, locations, and themes.
- event_posters: Displays event posters within pages, adding visual appeal and relevant context.
- event_talks: Lists talks within events, organizing speaker information and talk topics.
- events: Aggregates event details into a unified list, allowing users to browse past and upcoming events.
- publications: Organizes and displays publications, supporting links to PDFs, authors, or related content.
- Dedicated Website Repository: Created a repository (www-new) for the LLVM website itself, linking it to the
-
Testing and Documentation
- Staging Environment: Deployed a staging version of the website, to allow for comprehensive testing and community feedback.
- Configuration Documentation: Documented setup instructions for the
www-template
theme andwww-new
website repository, detailing steps for:- Page Creation: Guidelines for creating new pages, using the
datamap
shortcode for data-driven page generation. - Shortcode Usage: Instructions for using custom shortcodes like table of contents, feedback banner, and project cards.
- Content Management: Step-by-step guide on modifying content via YAML files, ensuring contributors can add or edit sections with ease.
- Page Creation: Guidelines for creating new pages, using the
- Testing for Responsiveness and Accessibility: Conducted thorough testing on different devices and screen sizes, checking for accessibility features such as proper color contrast, keyboard navigation, and responsive layouts across all pages.
The new website has been deployed at www-new.llvm.org and is fully functional. It includes the following core pages and functionalities:
- Homepage: Modern, responsive, with configurable sections.
- Subprojects section: Showcases LLVM’s various subprojects with detailed descriptions and relevant links.
- Features Page: Highlights all the features of LLVM.
- Developer Meeting Page: Contains a structured format for event details, making it easy to add new events.
- GSoC and LLVM Projects Pages: Highlight ongoing and past projects, including details of GSoC initiatives.
- Publications Pages: Contains all the publications related to LLVM.
- Feedback Button: A community feedback button is live to continually gather user insights.
Below is a list of commits, each linked to the relevant GitHub commit for easier review and context.
- 887689d Add Custom 404 page
- 9a1a242 Fix subprojects CSS
- 631c893 Add smooth scroll for toc links
- 6e384b5 Fix toc in datamap.html
- a229096 Remove date from single page
- e365d8e Add multiple buttons for banner
- 1b9344d Add banner partial, configuration & docs
- e100332 Update README with documentation
- 3acced6 Home page content can be modified
- ecedb40 Add configuration for logo
- 5c6c161 Add configuration to Footer partial
- 67b667f Fix table of contents with data file
- 71fafc9 Add datamap shortcode for yml files
- 9a16d7f Minor fixes
- d66d6c3 Add Table of contents partial
- 024e155 Fix website title styles
- ad958c4 Add basic markdown styles
- bf5553a Navbar submenu responsive
- 3aab8d8 Add Hover Menu to navbar
- dce2c90 Add basic markdown styles
- 0d9d5cb Add config for hero section
- dc7e90e Update .gitignore & deleted resources
- d5392ce Add README.md file
- baf2f00 Fix dates in upcoming events
- 6c306ec Hero section links are configurable
- 6d6e928 Subproject description truncated
- d0b0d3f Add datafiles for upcoming_events, developer_resources & subprojects
- 39dc89c Navbar menu is configurable
- 1067f91 Add hamburger menu for navbar
- 50f1806 Fix alignment of hamburger menu
- 88ac70c Add socials icons in getting involved
- 991f779 Add icons for quick links
- 2b9bc89 Add quick links in hero section
- f0344fe Add subprojects section
- 08242f1 Add Dev. resource & upcoming events section to home page
- 9a3091d Add homepage structure
- 91025f4 Add sun icon for theme toggle
- 2673d5c Add theme toggle functionality
- 38d12bb Add navbar
- 757dd26 Add footer
- 94cecbe Add CSS variables for dark & light theme
- 5c48afc Added SCSS & CSS resets
- e44a2c8 Initial Commit
- b090376 Update subprojects list
- 1c51cfc Fix gsoc projects page title
- 600be57 Update subprojects list
- 14b83e0 Add id to shortcode headers
- 0382f56 Add devmtg/2024-04 page
- 4849ce1 Add link to old site to banner
- 8707b65 Add gsoc 2024 projects
- 0dae9ad Add projects-with-llvm page & data
- f60ef84 Update all links
- 46b3b4d Add features page
- 5fac338 Add feedback banner
- 2a209ea Update hugo.toml
- 47f1586 Updated www-template submodule
- 9a2721a Update README with instructions to run locally
- ce18d18 Add www-template as a submodule
- e242709 Update .gitignore & deleted resources/
- e305334 Add data files
- c0042af Add www-template theme
- e19e957 Hugo site initialized
- 1b2616d first commit
The project lays a solid foundation, and the following improvements are recommended:
- Deploying on llvm.org: Moving the website from www-new subdomain to llvm.org.
- Developer Meetings Data: Add all the developer meetings data & create pages for each meeting.
- CI for Link Validation: Implement CI to check for broken links and large files automatically.
- Enhanced Content Integration: Collaborate with content creators to migrate and enhance content across pages, such as adding publications and developer meeting archives.
- Community Onboarding: Provide additional onboarding documentation to encourage contributions from the LLVM community.
- Ongoing Content and Design Refinements: Continue gathering feedback to make iterative improvements to the design and content organization.
This project offered numerous technical and collaborative challenges, including:
- Responsive Design Adjustments: Adapting the design across devices while maintaining usability required meticulous work with CSS.
- Community Feedback Loop: Incorporating community feedback was key to aligning the design with user expectations but also required iterative changes.
- Configurable Page Layouts: Creating configurable page layouts and templates highlighted the importance of balancing customization with usability.
This project reinforced the value of community-driven development, modular design principles, and rigorous documentation to support future maintainability.
Along with technical learning I also got some personal takeaways from this project as well. I understood the importance of being proactive, communicating well & being organized.
This GSoC project has established a modernized website that is responsive, community-driven, and primed for future enhancements. The work done and documentation provided will support LLVM’s ongoing efforts to make the website a valuable resource for developers, contributors, and users.