|
| 1 | +# Contribution Guide for the Compiler Research website |
| 2 | + |
| 3 | +## BootStrap 3.3 Functionalities |
| 4 | + |
| 5 | +The Compiler Research website is based on BootStrap 3.3. |
| 6 | + |
| 7 | +> Note: Some of the elements available in the latest version of BootStrap may not be available in v3.3 or may have a different name. Please see the [BootStrap 3.3 Components Documentation] to add any new supported elements. |
| 8 | +
|
| 9 | +## Home Page Customization |
| 10 | + |
| 11 | +Depending on Jekyll's functionality, the sections shown on the website homepage are either defined in the [home.md] under [pages] or the [homepage layout] under [Layouts]. |
| 12 | + |
| 13 | +#### Homepage Layout (homelay) |
| 14 | + |
| 15 | +The website's [homepage layout] currently consists of the following sections: |
| 16 | + |
| 17 | +- Splash Banner ([Jumbotron]) |
| 18 | +- Cards/ [Thumbnails] |
| 19 | + - Projects |
| 20 | + - Publications |
| 21 | + - Presentations |
| 22 | + - Team |
| 23 | +- Wells |
| 24 | + - [Open Projects] |
| 25 | + - [Project Meetings] |
| 26 | + - [Releases] |
| 27 | + - [News] |
| 28 | + > Note that these wells are not fluid. That is, they're made of a fixed pixel size that roughly accommodates 3-5 list items in each category. |
| 29 | +- `{{ content }}` Placeholder |
| 30 | + - Used to render the content available inside the page that is using the "homelay" layout, for example: `home.md`) |
| 31 | +- [Blog Widget] |
| 32 | + |
| 33 | +> Please see the [BootStrap 3.3 Components Documentation] to understand better the included elements (Jumbotron, Thumbnails, Wells, etc.). |
| 34 | +
|
| 35 | +#### home.md Page |
| 36 | + |
| 37 | +###### Layout/ Masterpage |
| 38 | +This is the main page for the Website's homepage, but it pulls a lot of content from the "[Homelay]" Layout, as discussed above. The layout works as a wrapper/Master Page around the content on the homepage (`home.md`). |
| 39 | + |
| 40 | +All the contents of the homepage (`home.md`) are rendered within the `{{ contents }}` tag within the "[Homelay]" Layout. |
| 41 | + |
| 42 | +###### home.md contents |
| 43 | + |
| 44 | +Everything under the "Recent Content" heading shown on the website's homepage is pulled from this file (except the Blog Widget, which is part of the `homelay` layout.) |
| 45 | + |
| 46 | +- Include [Carousel](/_includes/carousel.html) to show a Carousel of Videos. |
| 47 | +- Include [Open Embed script](/_includes/open-embed.html) to enable the functionality of fetching YouTube, etc. videos and embedding them into the webpage. |
| 48 | + |
| 49 | +### Adding a new Project |
| 50 | + |
| 51 | +#### Project Pages vs. Projects List |
| 52 | +It is possible to |
| 53 | + |
| 54 | +- add a new page with a lot of project details (e.g., |
| 55 | +`\_pages\testproject.md`) and then: |
| 56 | + - add the project excerpt to the projects directory `_data\projects.yml`, |
| 57 | + |
| 58 | +Or, |
| 59 | + |
| 60 | +- only add the project excerpt to the projects directory `_data\projects.yml` |
| 61 | +if there aren't enough details available for the project. |
| 62 | + |
| 63 | +#### Linking to the Project Page |
| 64 | + |
| 65 | +- Use the `link` attribute in the `projects.yml` file to define the link |
| 66 | +to the detailed project page (if you created this in the previous step). |
| 67 | +- If there's no dedicated page for that page, then a link to an external website/readme/readthedocs can also be used. |
| 68 | +- If there is no link, then the 'link' parameter can be excluded. |
| 69 | + |
| 70 | +The project excerpt should now automatically show up on the '/Projects/' page |
| 71 | +along with the link to the detailed project page. |
| 72 | + |
| 73 | +#### Change Projects Page Layout |
| 74 | +To change the layout of the Projects page itself, you can browse to |
| 75 | +`_pages\projects.md` and edit the Liquid code as needed. |
| 76 | + |
| 77 | +#### Projects vs. Open Projects |
| 78 | + |
| 79 | +The Projects page exists in parallel to the Open Projects page |
| 80 | +(`_pages\open_projects.md`), and you should add your project details where it |
| 81 | +makes more sense. |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +## Research |
| 86 | + |
| 87 | +The [Research Areas] page lists the areas of research that Compiler Research Group is focused on. |
| 88 | + |
| 89 | +#### Excerpt vs. Detailed Page |
| 90 | + |
| 91 | +Please add a short excerpt to introduce the research area. |
| 92 | + |
| 93 | +It is required to add a hyperlink to the heading of the topic, to link to an internal or external page that further explores the technical details of the Research Area, along with examples and associated projects. |
| 94 | + |
| 95 | +#### Does it qualify as a Research Area? |
| 96 | + |
| 97 | +Before adding a topic to this page, please consider (and discuss with the Compiler Research team) if the topic qualifies as a research area or if it is more of a [Project] that can be linked to an existing Research Area. |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +## Projects |
| 102 | + |
| 103 | +The [Projects Page] is populated by iterating through the [Projects List] YML file. The sequence followed in the YML file is the sequence used to list down the projects on the Projects Page. |
| 104 | + |
| 105 | +To add a new project, simply update the [Projects List] YML file. The `link` parameter should ideally include the link to the project's GitHub repository. |
| 106 | + |
| 107 | +--- |
| 108 | + |
| 109 | +## Results |
| 110 | + |
| 111 | +### Publications |
| 112 | + |
| 113 | +The [Publications Page] iterates and sorts the list of publications saved in the [Publications List] YML file. Simply add a new publication to the YML file and it will be automatically sorted based on the relevant parameters. |
| 114 | + |
| 115 | +### Presentations |
| 116 | + |
| 117 | +The [Presentations Page] iterates and sorts the list of presentations saved in the [Presentations List] YML file. Simply add a new presentation to the YML file and it will be automatically sorted based on the relevant parameters. |
| 118 | + |
| 119 | +### Student Success Stories |
| 120 | + |
| 121 | +The [Student Success Stories] is a simple markdown file. New success stories can be added sequentially to the markdown. |
| 122 | + |
| 123 | +Please make sure to link the **student's Github profile** and include the relevant mentor/institution names under the **"Credits"** heading. |
| 124 | + |
| 125 | +### Tutorials |
| 126 | + |
| 127 | +The [Tutorials Page] iterates and sorts the list of publications saved in the [Tutorials List] YML file. Simply add an abstract for the tutorial and link to the actual tutorial page in the YML file and it will be automatically sorted based on the relevant parameters. |
| 128 | + |
| 129 | +If the tutorial page doesn't already exist outside of the Compiler Research website, then it can be created as a markdown file under the `_pages` directory. |
| 130 | + |
| 131 | +### Releases |
| 132 | + |
| 133 | +The [Releases Page] is populated by iterating through the [Releases List] YML file. The sequence followed in the YML file is the sequence used to list down the projects on the Projects Page. |
| 134 | + |
| 135 | +To add a new release's information, simply update the [Releases List] YML file. |
| 136 | + |
| 137 | +> Note that there is a [Software Releases widget] on the Home Page that lists the **top 5 items** from the `releases.yml` file. This is a static widget with a fixed height of 300 pixels. Each time the [Releases List] is updated, please test the widget on the homepage to make sure that the fetched text doesn't overflow from the widget. |
| 138 | +
|
| 139 | +### News |
| 140 | + |
| 141 | +The [News Page] is populated by iterating through the [News List] YML file. The sequence followed in the YML file is the sequence used to list down the projects on the Projects Page. |
| 142 | + |
| 143 | +To add a new release's information, simply update the [News List] YML file. |
| 144 | + |
| 145 | +> Note that there is a [news widget] on the Home Page that lists the **top 3 items** from the `releases.yml` file. This is a static widget with a fixed height of 300 pixels. Each time the [News List] is updated, please test the widget on the homepage to make sure that the fetched text doesn't overflow from the widget. |
| 146 | +
|
| 147 | +--- |
| 148 | + |
| 149 | +## Teams |
| 150 | + |
| 151 | +To add yourself to the Teams page, create a PR like [this one]. Simply add relevant details to the [Contributors List] YML file and add a photo in the `images/team` folder. |
| 152 | + |
| 153 | +--- |
| 154 | + |
| 155 | +## Join Us |
| 156 | + |
| 157 | +### Careers |
| 158 | + |
| 159 | +The [Careers Page] is a simple markdown file, that can be edited as needed to include new and upcoming career opportunities. |
| 160 | + |
| 161 | +### Project Meetings |
| 162 | + |
| 163 | +The [Project Meetings Page] iterates and sorts the list of project meetings saved in the [Project Meetings List] YML file. Simply add new project meeting details to the YML file and it will be automatically sorted based on the relevant parameters. |
| 164 | + |
| 165 | +Please make sure to **include a PDF of the presentation slides** in the `/assets/presentations` folder and link to it in the `agenda` > `slides` parameter in the `meetinglist.yml` file. |
| 166 | + |
| 167 | +> Note that there is a [project meetings widget] on the Home Page that lists the **top 3 items** from the `meetinglist.yml` file. This is a static widget with a fixed height of 300 pixels. Each time the [Project Meetings List] is updated, please test the widget on the homepage to make sure that the fetched text doesn't overflow from the widget. |
| 168 | +
|
| 169 | +### Team Meetings |
| 170 | + |
| 171 | +The [Team Meetings Page] is populated by iterating through the [Team Meetings List] YML file. The sequence followed in the YML file is the sequence used to list the meetings on the Team Meetings Page. |
| 172 | + |
| 173 | +### Open Projects |
| 174 | + |
| 175 | +The [Open Projects Page] is populated by iterating through the [Open Projects List] YML file. The sequence followed in the YML file is the sequence used to list the meetings on the Team Meetings Page. |
| 176 | + |
| 177 | +Note that if you don't populate the `status` parameter in the YML file, then the project will not be listed on the Open Projects page. |
| 178 | + |
| 179 | +> Note that there is a [open projects widget] on the Home Page that lists the **top 4 items** from the `openprojectlist.yml` file. This is a static widget with a fixed height of 300 pixels. Each time the [Open Projects List] is updated, please test the widget on the homepage to make sure that the fetched text doesn't overflow from the widget. |
| 180 | +
|
| 181 | +### Follow Us |
| 182 | + |
| 183 | +This is a static external link to Compiler Research Organization's LinkedIn Group. This should only be updated by admins in case of a change in the LinkedIn group. |
| 184 | + |
| 185 | +--- |
| 186 | + |
| 187 | +## Blog |
| 188 | + |
| 189 | +### Blogs List Layout |
| 190 | + |
| 191 | +To update the look and feel of the listed blog, please see the [Blog Post Card] file. |
| 192 | + |
| 193 | +### Add a New Blog Post |
| 194 | + |
| 195 | +##### How to Add a New Blog Post |
| 196 | + |
| 197 | +To add a new Blog post, add a new markdown file under `_posts` and add any referenced images to the `/images/blog` folder, as shown in [PR 219]. |
| 198 | + |
| 199 | +> Note that there is a [latest blog widget] on the Home Page that lists the to blog post from the `_posts` directory. This is a static widget with a fixed height of 500 pixels. Each time there is a new blog file (e.g., yyyy-mm-dd-blog-name.md) added to the `_posts` directory, please test the widget on the homepage to make sure that the fetched text, especially the blog excerpt doesn't overflow from the widget. |
| 200 | +
|
| 201 | +##### File Naming Conventions |
| 202 | + |
| 203 | +Please note the naming convention of the blog file, for example: `yyyy-mm-yy-full-blog-title.md`. |
| 204 | + |
| 205 | +It is also recommended to name images so they can easily be associated with the blog post, for example: `yyyy-mm-yy-short-blog-title-img1.png` and `yyyy-mm-yy-short-blog-title-img2.png`. |
| 206 | + |
| 207 | +##### Front Matter for Blogs |
| 208 | + |
| 209 | +Please see the sample [Front Matter] below and use as many of the parameters as applicable. |
| 210 | + |
| 211 | +``` |
| 212 | +--- |
| 213 | +title: "Your Post Title" |
| 214 | +layout: post |
| 215 | +excerpt: "A Short Paragraph to Display on Blogs List page" |
| 216 | +sitemap: false |
| 217 | +author: Your Name |
| 218 | +permalink: blogs/blog-keywords/ |
| 219 | +banner_image: /images/blog/banner-or-other-thumbnail-image.jpg |
| 220 | +date: yyyy-mm-dd |
| 221 | +tags: ad |
| 222 | +--- |
| 223 | +``` |
| 224 | + |
| 225 | +Where, |
| 226 | + |
| 227 | +- title: This title overrides the default Jekyll behavior of using a filename for Blog Titles, using this string instead. |
| 228 | +- layout: This should always include the value `post`. |
| 229 | +- excerpt: A Short Paragraph to display on the Blogs List page. It should be roughly 2-3 lines. Test on localhost to see how it looks on the `/blog/` page. |
| 230 | +- sitemap: This should always include the value `false`. |
| 231 | +- author: Your Name |
| 232 | +- permalink: This will make the exact link/URL of the blog post. Carefully use keywords that are relevant to the blog's SEO and preferably use 1 to 3 keywords to avoid making the URL too long. |
| 233 | +- banner_image: This image will be shown in a square aspect ratio on the Blog List page (`/blog/`). It can be one of the images already included in the article, or preferably, a different one (use websites like pexel.com to get royalty-free, relevant images in low resolution (for a small-sized image that loads quickly)). |
| 234 | +- date: This is an important field since blogs are sorted based on this date. If you don't want your post to appear on the top of the blog list, try an older date to move it downwards. |
| 235 | +tags: Enter relevant keywords that should be associated with the blog post. These tags are shown as buttons under each blog post and a reader can click on them to view other posts related to that tag. Please see the blogs list page for relevant tags before creating a new one, since each tag and its related posts are listed on the `compiler-research.org/tags/` page, which can become a mess if the number of tags is not kept to a minimum. |
| 236 | + |
| 237 | + |
| 238 | + |
| 239 | + |
| 240 | + |
| 241 | + |
| 242 | + |
| 243 | +[home.md]: /_pages/home.md |
| 244 | +[homepage layout]: /_layouts/homelay.html |
| 245 | +[pages]: /_pages/ |
| 246 | +[Layouts]: /_layouts/ |
| 247 | +[BootStrap 3.3 Components Documentation]: https://getbootstrap.com/docs/3.3/components/ |
| 248 | +[Jumbotron]: /_includes/jumbotron.html |
| 249 | +[Thumbnails]: /_includes/thumbnails.html |
| 250 | +[Open Projects]: /_includes/open-projects.html |
| 251 | +[open projects widget]: /_includes/open-projects.html |
| 252 | +[Project Meetings]: /_includes/project-meetings.html |
| 253 | +[Releases]: /_includes/releases.html |
| 254 | +[News]: /_includes/news.html |
| 255 | +[Blog Widget]: /_includes/blog_widget.html |
| 256 | +[Homelay]: /_layouts/homelay.html |
| 257 | +[Research Areas]: /_pages/research.md |
| 258 | +[Project]: /_data/projects.yml |
| 259 | +[Projects Page]: /_pages/projects.md |
| 260 | +[Projects List]: /_data/projects.yml |
| 261 | +[Publications Page]: /_pages/publications.md |
| 262 | +[Publications List]: /_data/publist.yml |
| 263 | +[Presentations Page]: /_pages/presentations.md |
| 264 | +[Presentations List]: /_data/preslist.yml |
| 265 | +[Student Success Stories]: /_pages/stories.md |
| 266 | +[Tutorials Page]: /_pages/tutorials.md |
| 267 | +[Tutorials List]: /_data/tutorialslist.yml |
| 268 | +[Releases Page]: /_pages/releases.md |
| 269 | +[Releases List]: /_data/releases.yml |
| 270 | +[Software Releases widget]: /_includes/releases.html |
| 271 | +[News Page]: /_pages/allnews.md |
| 272 | +[News List]: /_data/news.yml |
| 273 | +[news widget]: /_includes/news.html |
| 274 | +[this one]: https://github.com/compiler-research/compiler-research.github.io/pull/195 |
| 275 | +[Careers Page]: /_pages/careers.md |
| 276 | +[Project Meetings Page]: /_pages/meetings.md |
| 277 | +[Project Meetings List]: /_data/meetinglist.yml |
| 278 | +[project meetings widget]: /_includes/project-meetings.html |
| 279 | +[Team Meetings Page]: /_pages/team_meetings.md |
| 280 | +[Team Meetings List]: /_data/standing_meetings.yml |
| 281 | +[Blog Post Card]: /_includes/blog-post-card.html |
| 282 | +[PR 219]: https://github.com/compiler-research/compiler-research.github.io/pull/219 |
| 283 | +[Front Matter]: https://jekyllrb.com/docs/front-matter/ |
| 284 | +[latest blog widget]: /_includes/blog_widget.html |
0 commit comments