From 3f5fcd568c2a76357f99677c41a3826c262d5960 Mon Sep 17 00:00:00 2001 From: Abhas Abhinav Date: Thu, 25 Feb 2021 20:07:59 +0530 Subject: [PATCH] Initial site --- .gitignore | 5 + 404.html | 25 +++ Gemfile | 30 +++ Gemfile.lock | 92 +++++++++ _config.yml | 58 ++++++ _layouts/default.html | 206 +++++++++++++++++++ _posts/2021-02-25-welcome-to-jekyll.markdown | 29 +++ _sass/custom/custom.scss | 21 ++ about.markdown | 10 + action.md | 7 + assets/firewalls.png | Bin 0 -> 3439 bytes assets/identity.png | Bin 0 -> 5695 bytes assets/security.png | Bin 0 -> 12481 bytes assets/she-logo.png | Bin 0 -> 26260 bytes assets/wireless.png | Bin 0 -> 5113 bytes benefits.md | 32 +++ credits.md | 7 + deploy.sh | 1 + essential.md | 22 ++ essential/communication.md | 9 + essential/files.md | 8 + essential/identity.md | 9 + essential/lab-automation.md | 8 + essential/request-tracking.md | 8 + essential/source-code.md | 8 + essential/virtualisation.md | 8 + index.markdown | 11 + network.md | 22 ++ network/access-control.md | 9 + network/firewalls.md | 82 ++++++++ network/security.md | 64 ++++++ network/wireless.md | 9 + overview.md | 22 ++ overview/build-it-yourself.md | 8 + overview/free-software.md | 57 +++++ overview/relevance.md | 9 + overview/self-hosting.md | 10 + overview/what.md | 9 + 38 files changed, 915 insertions(+) create mode 100644 .gitignore create mode 100644 404.html create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 _config.yml create mode 100644 _layouts/default.html create mode 100644 _posts/2021-02-25-welcome-to-jekyll.markdown create mode 100644 _sass/custom/custom.scss create mode 100644 about.markdown create mode 100644 action.md create mode 100644 assets/firewalls.png create mode 100644 assets/identity.png create mode 100644 assets/security.png create mode 100644 assets/she-logo.png create mode 100644 assets/wireless.png create mode 100644 benefits.md create mode 100644 credits.md create mode 100755 deploy.sh create mode 100644 essential.md create mode 100644 essential/communication.md create mode 100644 essential/files.md create mode 100644 essential/identity.md create mode 100644 essential/lab-automation.md create mode 100644 essential/request-tracking.md create mode 100644 essential/source-code.md create mode 100644 essential/virtualisation.md create mode 100644 index.markdown create mode 100644 network.md create mode 100644 network/access-control.md create mode 100644 network/firewalls.md create mode 100644 network/security.md create mode 100644 network/wireless.md create mode 100644 overview.md create mode 100644 overview/build-it-yourself.md create mode 100644 overview/free-software.md create mode 100644 overview/relevance.md create mode 100644 overview/self-hosting.md create mode 100644 overview/what.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f40fbd8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor diff --git a/404.html b/404.html new file mode 100644 index 0000000..086a5c9 --- /dev/null +++ b/404.html @@ -0,0 +1,25 @@ +--- +permalink: /404.html +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..4218a19 --- /dev/null +++ b/Gemfile @@ -0,0 +1,30 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> 4.0.1" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.5" +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform? +gem "just-the-docs" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..46755ae --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,92 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + colorator (1.1.0) + concurrent-ruby (1.1.8) + em-websocket (0.5.2) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + ffi (1.14.2) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + i18n (1.8.9) + concurrent-ruby (~> 1.0) + jekyll (4.0.1) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (>= 0.9.5, < 2) + jekyll-sass-converter (~> 2.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (~> 3.0) + safe_yaml (~> 1.0) + terminal-table (~> 1.8) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-sass-converter (2.1.0) + sassc (> 2.0.1, < 3.0) + jekyll-seo-tag (2.7.1) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + just-the-docs (0.3.3) + jekyll (>= 3.8.5) + jekyll-seo-tag (~> 2.0) + rake (>= 12.3.1, < 13.1.0) + kramdown (2.3.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.4.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (4.0.6) + rake (13.0.3) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.4) + rouge (3.26.0) + safe_yaml (1.0.5) + sassc (2.4.0) + ffi (~> 1.9) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + tzinfo (1.2.9) + thread_safe (~> 0.1) + tzinfo-data (1.2021.1) + tzinfo (>= 1.0.0) + unicode-display_width (1.7.0) + wdm (0.1.1) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (~> 4.0.1) + jekyll-feed (~> 0.12) + just-the-docs + minima (~> 2.5) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.1) + +BUNDLED WITH + 2.1.4 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..726c722 --- /dev/null +++ b/_config.yml @@ -0,0 +1,58 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: Self Hosted Education +email: abhas@abhas.io +description: >- # this means to ignore newlines until "baseurl:" + Write an awesome description for your new site here. You can edit this + line in _config.yml. It will appear in your document head meta (for + Google search results) and in your feed.xml site description. +baseurl: "" # the subpath of your site, e.g. /blog +url: "https://selfhosted.education" # the base hostname & protocol for your site, e.g. http://example.com +twitter_username: abhasabhinav +github_username: abhas + +logo: "/assets/she-logo.png" +search_enabled: false + +# Build settings +theme: "just-the-docs" +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..31b0308 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,206 @@ +--- +layout: table_wrappers +--- + + + + +{% include head.html %} + + + + Link + + + + + + Search + + + + + + Menu + + + + + + Expand + + + + + + Document + + + + + + + +
+
+ {% if site.search_enabled != false %} + + {% endif %} + {% include header_custom.html %} + {% if site.aux_links %} + + {% endif %} +
+
+ {% unless page.url == "/" %} + {% if page.parent %} + {%- for node in pages_list -%} + {%- if node.parent == nil -%} + {%- if page.parent == node.title or page.grand_parent == node.title -%} + {%- assign first_level_url = node.url | absolute_url -%} + {%- endif -%} + {%- if node.has_children -%} + {%- assign children_list = pages_list | where: "parent", node.title -%} + {%- for child in children_list -%} + {%- if page.url == child.url or page.parent == child.title -%} + {%- assign second_level_url = child.url | absolute_url -%} + {%- endif -%} + {%- endfor -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + + {% endif %} + {% endunless %} +
+ {% if site.heading_anchors != false %} + {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %} + {% else %} + {{ content }} + {% endif %} + + {% if page.has_children == true and page.has_toc != false %} +
+

Table of contents

+
    + {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%} + {% for child in children_list %} +
  • + {{ child.title }}{% if child.summary %} - {{ child.summary }}{% endif %} +
  • + {% endfor %} +
+ {% endif %} + + {% capture footer_custom %} + {%- include footer_custom.html -%} + {% endcapture %} + {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %} +
+
+ {% if site.back_to_top %} +

{{ site.back_to_top_text }}

+ {% endif %} + + {{ footer_custom }} + + {% if site.last_edit_timestamp or site.gh_edit_link %} +
+ {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %} +

+ Page last modified: {{ page.last_modified_date | date: site.last_edit_time_format }}. +

+ {% endif %} + {% if + site.gh_edit_link and + site.gh_edit_link_text and + site.gh_edit_repository and + site.gh_edit_branch and + site.gh_edit_view_mode + %} +

+ {{ site.gh_edit_link_text }} +

+ {% endif %} +
+ {% endif %} +
+ {% endif %} + +
+
+ + {% if site.search_enabled != false %} + {% if site.search.button %} + + + + {% endif %} + +
+ {% endif %} +
+ + diff --git a/_posts/2021-02-25-welcome-to-jekyll.markdown b/_posts/2021-02-25-welcome-to-jekyll.markdown new file mode 100644 index 0000000..af967b4 --- /dev/null +++ b/_posts/2021-02-25-welcome-to-jekyll.markdown @@ -0,0 +1,29 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: 2021-02-25 00:19:13 +0530 +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +Jekyll requires blog post files to be named according to the following format: + +`YEAR-MONTH-DAY-title.MARKUP` + +Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: https://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss new file mode 100644 index 0000000..0115d13 --- /dev/null +++ b/_sass/custom/custom.scss @@ -0,0 +1,21 @@ +body { + font-family: Iosevka; + font-weight: 400; + font-feature-settings: "kern" 1, "liga" 1; + font-optical-sizing: auto; + color: #010101; +} + +.site-footer { + text-align: justify; + color: #4f4f4f; + font-weight: 500; + line-height: 1.2em; + font-size: 120%; +} + +h1, h2 { + font-family: Iosevka; + color: #3771C9; + font-weight: 500; +} diff --git a/about.markdown b/about.markdown new file mode 100644 index 0000000..46b63ec --- /dev/null +++ b/about.markdown @@ -0,0 +1,10 @@ +--- +layout: page +title: About +nav_order: 1 +permalink: /about/ +--- + + + + diff --git a/action.md b/action.md new file mode 100644 index 0000000..5d7a4c6 --- /dev/null +++ b/action.md @@ -0,0 +1,7 @@ +--- +layout: default +title: Take Action +nav_order: 7 +--- + +# Take Action diff --git a/assets/firewalls.png b/assets/firewalls.png new file mode 100644 index 0000000000000000000000000000000000000000..06ec8c0ca9f493f379d2fbc75397865bbddd1e93 GIT binary patch literal 3439 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 R8wdaZ002ovPDHLkV1g-kjTis` literal 0 HcmV?d00001 diff --git a/assets/identity.png b/assets/identity.png new file mode 100644 index 0000000000000000000000000000000000000000..1d01dabc24724596ad1ed56594c90b997a813874 GIT binary patch literal 5695 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 literal 0 HcmV?d00001 diff --git a/assets/security.png b/assets/security.png new file mode 100644 index 0000000000000000000000000000000000000000..304dd4f5ca63f716c477b8ad0ae3a1816dbe0e2d GIT binary patch literal 12481 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 literal 0 HcmV?d00001 diff --git a/assets/she-logo.png b/assets/she-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7172fba9aed79098b919ca1a20fb815b2ad6dd GIT binary patch literal 26260 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 q!Uaxe72Kz7;OO>$U+c(Ad + +

Free Software Solutions For Educational Institutions

Technical Details, Common Problems and Benefits

+ diff --git a/network.md b/network.md new file mode 100644 index 0000000..aafb2c9 --- /dev/null +++ b/network.md @@ -0,0 +1,22 @@ +--- +layout: default +title: Network Solutions +nav_order: 3 +has_children: true +--- + +# Network Solutions + +Presented here is an overview of solutions that are essential and +indispensable for any college campus or departmental network. + +The goal of this note is to explain what these solutions are, how they +work, why they are useful and how they provide more value to everyone +while enabling us to become more effective in whatever we do. + +There are three core ideologies which form the basis for our +discussion here: + +* Free / Open Source Software, +* Self-Hosting, and +* Build-it-Yourself diff --git a/network/access-control.md b/network/access-control.md new file mode 100644 index 0000000..bf66e10 --- /dev/null +++ b/network/access-control.md @@ -0,0 +1,9 @@ +--- +layout: default +parent: Network Solutions +nav_order: 4 +title: Access Control +--- + +# Network Access Control, Captive Portal, BYOD Management, Centralised Wired and Wireless Management + diff --git a/network/firewalls.md b/network/firewalls.md new file mode 100644 index 0000000..cdcb6e0 --- /dev/null +++ b/network/firewalls.md @@ -0,0 +1,82 @@ +--- +layout: default +parent: Network Solutions +nav_order: 1 +title: Firewalls +--- + +# Firewalls, Bandwidth Management and Link Aggregation and Failover + +
+ +
+ +## Overview + +A firewall is a hardware + software solution that connects and shares +Internet bandwidth with your local network. It isolates and protects +the local network from the Internet and also allows you to securely +expose specific applications, services and servers on the local +network. + +A bandwidth management solution helps you monitor your bandwidth usage +and then allows you to define bandwidth and Internet usage priorities +and policies. + +A link aggregation and failover solution lets you connect multiple +Internet links to your firewall so that you can have more bandwidth +available to users on the local network. This also means that you +don’t rely on a single Internet link or ISP for your Internet +connectivity needs. + +## Common Problems + +* You have a firewall but you need to repeatedly call a service provider or + vendor to manage the rules for you. + +* You have a lot of Internet bandwidth but your Internet usage and experience + is slow. + +* When large or bulk files are repeatedly downloaded, it causes a slowdown for + other users. + +* It is impossible to account for your bandwidth utilisation. + +* When your main Internet link goes down, or is slow, it cuts off the entire + network from the Internet + +* You are having to depend on third-party ISPs to provide high- speed and + unrestricted access to the Internet + +* Even when you have multiple links to the Internet, you might not be able to + use them all at the same time. Or specify policies on who can use which one + at what time. + +## Benefits + +* No dependency on 3rd party for firewall management. + +* No risk of usage data being sent to a firewall vendor's cloud setup for + analysis – thereby, ensuring better privacy for users + +* Optimal utilisation of all the available Internet links simultaneously and + automatic failover + +* Fair sharing of bandwidth amongst users so that prioritised traffic and users + always get the required bandwidth + +* Actionable Internet utilisation reports + +* Caching of frequently accessed content from the Internet saves bandwidth and + improves user experience + +* Extended caching of bulk content like OS updates, Anti-Virus updates etc + +* Granular Web Access controls depending on user, time of day, day of week, + content-type, request-type etc + +* Logs can be retained for as long as required for data and trend analysis + +* User identity and authentication is mapped from a singular, campus-wide + service that is used for all other applications as well + diff --git a/network/security.md b/network/security.md new file mode 100644 index 0000000..9ba8e2d --- /dev/null +++ b/network/security.md @@ -0,0 +1,64 @@ +--- +layout: default +parent: Network Solutions +nav_order: 2 +title: Security +--- + +# Network Security and Intrusion / Malware Detection + +## Overview + +Keeping the network secure is as important as keeping it fully- +functional. The traditional approach of just using an equipment at the +gateway is not sufficient. The threats can emanate from inside the +networks as much as they come from the Internet. + +A functional and up-to-date Intrusion Detection and Prevention System +(IDS/IPS) is an integral part of a secure network in addition to anti- +malware software. An IDS/IPS inspects all the traffic passing through +the network in real-time and matches them with pre-defined signatures +to generate alerts and/or block the malicious activities from outside +or inside the network. + +A SIEM (Security Incident and Events Monitoring) system can collect +logs generated from various components like firewalls, servers, +IDS/IPS, network access controllers, DHCP Servers etc to provide a +holistic view of the security situation of the network. + +## Common Problems + +* There are infected machines in the network which are generating huge amount + of traffic affecting the whole network. These things can happen silently + without any outward symptoms till it begins to affect users in a negative way. + +* There are Trojans installed in the machines which spread through the network + or can be part of a bigger attacks and are just waiting for a trigger from + “Command and Control” (CnC) server on the Internet + +* You are not even aware that there are a lot of Intrusion or Denial-of-Service + (DoS) attacks are happening on your network which are eating system resources + of your gateway firewall + +* Students could be trying to learn about security by attacking the servers + inside the college network (or on the Internet) + +* Unauthorised access attempts to the servers or computers inside the network + are not noticed + +## Benefits + +* Visibility into malicious activity present in the network - originating from + either the Internet or within the local network + +* Automatic blocking of the hosts generating such activities from the Internet + +* Automatic isolation of the hosts generating malicious traffic from within the + network with the users and administrators get notified of the same + +* Various vulnerabilities get highlighted on the SIEM which when fixed on time + save the network from catastrophic downtime + +* The possibility of machines inside the network getting involved in large + scale attacks on the Internet gets minimised to a great extent + diff --git a/network/wireless.md b/network/wireless.md new file mode 100644 index 0000000..a43d938 --- /dev/null +++ b/network/wireless.md @@ -0,0 +1,9 @@ +--- +layout: default +parent: Network Solutions +nav_order: 3 +title: Wireless +--- + +# Campus Wireless Networking and Access Points + diff --git a/overview.md b/overview.md new file mode 100644 index 0000000..ad19f0b --- /dev/null +++ b/overview.md @@ -0,0 +1,22 @@ +--- +layout: default +title: Overview +nav_order: 2 +has_children: true +--- + +# Overview + +Presented here is an overview of solutions that are essential and +indispensable for any college campus or departmental network. + +The goal of this note is to explain what these solutions are, how they +work, why they are useful and how they provide more value to everyone +while enabling us to become more effective in whatever we do. + +There are three core ideologies which form the basis for our +discussion here: + +* Free / Open Source Software, +* Self-Hosting, and +* Build-it-Yourself diff --git a/overview/build-it-yourself.md b/overview/build-it-yourself.md new file mode 100644 index 0000000..c1b0f9b --- /dev/null +++ b/overview/build-it-yourself.md @@ -0,0 +1,8 @@ +--- +layout: default +parent: Overview +nav_order: 3 +title: Build it yourself +--- + +# Build it yourself diff --git a/overview/free-software.md b/overview/free-software.md new file mode 100644 index 0000000..deb20c5 --- /dev/null +++ b/overview/free-software.md @@ -0,0 +1,57 @@ +--- +layout: default +parent: Overview +nav_order: 1 +title: What is Free Software? +--- + +# What is Free/Libre/Open Source Software? + +Free / Open Source Software is software that provides the following +four freedoms to us: + + * Freedom to use the software for any purpose + + * Freedom to study the source code of the software and learn from it + + * Freedom to modify the software and make changes to it + + * Freedom to share the software (in its original and modified form) + +These freedoms are essential as they provide us with the essential +framework for learning and sharing knowledge. + +The freedom to use software for any purpose ensures that anyone can +use the software for any endeavour (educational, personal, commercial, +non-profit, governmental, defence and more) and in any region. Free +Software does not discriminate. + +> For the purpose of this document, we use the terms “Free Software” and “Free +> / Open Source Software” interchangeably to refer to software that provides +> freedom to us. While “Free Software” is the original term that was used to +> describe such a body of software, the term “Open Source” has also gained a +> lot of popularity . We consider “Free Software” to be a more useful term +> since it captures the essence of this philosophy and does not dilute it for +> whatever pragmatic or marketing reasons. + +The availability of source code provides us an opportunity to study +and understand how something works. Without this freedom we would +never be able to learn from what others have done or apply that +learning to our own lives. + +The freedom to modify the software enables to learn and gain +confidence by doing things. It allows us to extend the software, fix +bugs in it, translate or localise it and adapt it for other purposes. +Finally, the freedom to share a program (in its original or modified +form) allows us to help others while also providing subsequent users +with the same sort of freedom that we enjoy. It ensures that the +software remains free and provides every user, teacher and developer +equitable freedom. + +Proprietary software (ie. software that is distributed only as a +binary and where we are restricted from accessing its source code or +modifying it or sharing it freely), on the other hand, does not +provide us with any opportunity to learn or understand how things work +or make changes to them to test and validate our understanding. + + diff --git a/overview/relevance.md b/overview/relevance.md new file mode 100644 index 0000000..649931c --- /dev/null +++ b/overview/relevance.md @@ -0,0 +1,9 @@ +--- +layout: default +parent: Overview +nav_order: 4 +title: Why is this relevant? +--- + +# Why is this relevant for us? + diff --git a/overview/self-hosting.md b/overview/self-hosting.md new file mode 100644 index 0000000..c193e4b --- /dev/null +++ b/overview/self-hosting.md @@ -0,0 +1,10 @@ +--- +layout: default +parent: Overview +nav_order: 2 +title: Choosing Self Hosting +--- + +# Why choose self hosting? + + diff --git a/overview/what.md b/overview/what.md new file mode 100644 index 0000000..a2562fb --- /dev/null +++ b/overview/what.md @@ -0,0 +1,9 @@ +--- +layout: default +parent: Overview +nav_order: 5 +title: What can we build? +--- + +# What can we build? +