owned this note
owned this note
Published
Linked with GitHub
# Bradlug Replacement Website
## Scope
The existing website runs on Wordpress and is hosted on Nigel's server. The website has a number of static pages plus a decent number of blog posts. It currently has commenting functionality, but this is so rarely used that it is not vital. It has a calendar feed from a google calendar with the dates of the next meetings. It also has a contact form which I think gets some use.
## Requirements
MoSCoW - All requirements should have an associated MoSCoW rating
Must have - Requirements labeled as MUST are critical to the delivery
Should have - Requirements labeled as SHOULD are important but not necessary for delivery in the current delivery
Could have - Requirements labeled as COULD are desirable but not necessary
Won't have - Requirements labeled as WON'T have been agreed as the least-critical, lowest-payback items, or not appropriate at that time
### Functional Requirements
| ID | State | Requirement | Background |
|----|--------|-------------|------------|
| FR-01 | Must | Allow existing content to be imported | There is a decent amount of existing content |
| FR-02 | Must | Be a serverless solution | One of the main reasons for migrating away from WordPress is the lack of a sysadmin role |
| FR-03 | Must | Provide an easy way to contribute content | |
| FR-04 | Must | Be open source | We're a GNU/Linux User Group |
| FR-05 | Must | Allow multiple contributors| There are a number of people who can and do produce content on the existing solution, and we expect this number to increase if we offer a good way of contributing |
| FR-06 | Should | Allow html to be edited | To allow us to embed contact forms and calendars etc. |
| FR-07 | Should | Provide image and file hosting | We need somewhere to host basic images and slides from presentations, although this could be elsewhere if necessary |
| FR-08 | Should | Not break any existing links | The existing URLs should, where possible, not break |
| FR-09 | Should | Be free | We do not have a group bank account, we do not want to rely on any individuals on paying for this |
| FR-10 | Could | Offer SSL | There's nothing sensitive on a public-facing static site, but SSL is just good practise |
| FR-11 | Won't | Offer a commenting system | Whilst the current system has commenting, the vast majority of comments have been spam. We do not see the value in comments |
### Non-Functional Requirements
| ID | State | Requirement | Background |
|-------|--------|-------------|------------|
| NF-01 | Must | provide enough storage (as yet undefined) | Need to know how much content we currently have |
| NF-02 | Must | provide enough bandwidth (as yet undefined | Need to know existing bandwidth usage |
## Shortlist
There are a number of components to consider in choosing the software for a new website. Of primary concern is the hosting, the software running the website, and any additional editing software.
Not all of these are compatible with each other.
### Hosting
- S3 - Hosting the site on S3 will make the site nice and fast, but would require setup, somebody to pay the bills, and management of keys.
- [Github Pages](https://pages.github.com/) - designed for exactly our use-case. The site is stored in git, and publishing new content is done through a standard github workflow - anyone in the world can submit a pull request, and somebody with permissions on the repository can approve or reject the pull request. Alice is already using this workflow on a number of websites, including their list of visited countries and the SBG engineering blog. This only works with Jekyll, and only a limited number of plugins, but provides more than enough to host the Bradlug site. Plus it's easy to migrate elsewhere at a later date. And most open source developers have some experience with Github.
- [Gitlab Pages](https://pages.gitlab.io/) - very similar to Github Pages. A little less mature and a little more capable, but doesn't feel quite as user friendly. Several BradLUG members have experience in using Gitlab.
- [Netlify](https://www.netlify.com/pricing/) - commercial static site hosting, but free for open source projects. Supposedly faster than Github or Gitlab.
Recomendation: Github Pages. It's well-proven across many different open source projects around the world. Both Gitlab and Github Pages are the only free options here.
### Website Software
- [Jekyll](https://jekyllrb.com/) - Ruby-based static site generator, good for blogs, supported by Github Pages and Gitlab static site hosting. Permalinks, categories, pages, posts, and custom layouts are all first-class citizens. Very simple, which means easy to get going with but can be somewhat limited.
- [Hugo](https://gohugo.io/) - Go-based static site generator. Faster than Jekyll and easier to install, but more complicated to manage. Sort of works on Github Pages, but not as well as Jekyll.
- [Middleman](https://middlemanapp.com/) - Ruby-based static site generator, more capable than Jekyll but also a little more complicated. Works on Gitlab static site hosting (they use it themselves) but not on Github Pages.
Reccomendation: Jekyll. It's simple to work with, written in Ruby, and Alice has plenty of experience with it. There is software to import existing WordPress blogs, and it shouldn't break any existing links.
### Editing Software
- [Forestry.io](https://forestry.io) - A nice web-based editor for Jekyll or Hugo websites. It's a lovely idea, but licensed per-user which is probably a no-go for us. Consider it for your single-user personal projects though.
- Text editor - Since these sites are all just Markdown files, you can use any editor you like.
## Glossary
- CMS - a computer application that supports the creation and modification of digital content. It is often used to support multiple users working in a collaborative environment. [0](https://en.m.wikipedia.org/wiki/Content_management_system)
- Serverless - an application that significantly depends on third-party services (known as Backend as a Service). By using these ideas, and by moving much behaviour to the front end, such architectures remove the need for traditional 'always-on' server system sitting behind an application. [1](https://martinfowler.com/articles/serverless.html)
- WordPress - a PHP/MySQL application traditionally used for blogs but has grown into a fully-fledged Content Management System (CMS)