Skip to content

Commit

Permalink
Add feature pages (to be written)
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Warrick <kwpolska@gmail.com>
  • Loading branch information
Kwpolska committed Jul 15, 2015
1 parent 37fbc66 commit 8a4421c
Show file tree
Hide file tree
Showing 6 changed files with 238 additions and 0 deletions.
10 changes: 10 additions & 0 deletions stories/features/cli.rst
@@ -0,0 +1,10 @@
.. title: Friendly CLI
.. slug: cli
.. date: 2015-07-10 15:39:26 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
Write your page here.
10 changes: 10 additions & 0 deletions stories/features/compoments.rst
@@ -0,0 +1,10 @@
.. title: Components
.. slug: compoments
.. date: 2015-07-10 15:39:05 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
Write your page here.
10 changes: 10 additions & 0 deletions stories/features/fast.rst
@@ -0,0 +1,10 @@
.. title: Fast
.. slug: fast
.. date: 2015-07-10 15:38:40 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
Write your page here.
10 changes: 10 additions & 0 deletions stories/features/formats.rst
@@ -0,0 +1,10 @@
.. title: Input Formats
.. slug: formats
.. date: 2015-07-10 15:38:52 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
Write your page here.
139 changes: 139 additions & 0 deletions stories/features/index.rst
@@ -0,0 +1,139 @@
.. title: Features
.. slug: index
.. date: 2015-07-10 15:34:49 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
.. class:: alert alert-info
.. contents::


.. raw:: html

<div class="feature-icon feature-icon-static pull-left">
<a href="/features/static.html"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-server fa-stack-1x fa-inverse"></i>
</span></a></div>

Static sites
============

Static websites are safer, use fewer resources, and avoid vendor and platform
lock-in. You can host a Nikola website on any web server, big or small. It’s
just a bunch of HTML files and assets.

`Explore in depth » </features/static.html>`__

.. raw:: html

<div class="feature-icon feature-icon-fast pull-left">
<a href="/features/fast.html"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-bolt fa-stack-1x fa-inverse"></i>
</span></a></div>

Incremental builds
==================

Nikola is fast. We use `doit <http://pydoit.org/>`_, which provides incremental
rebuilds — in other words, we rebuild only the pages that need rebuilding,
saving CPU time, wall clock time and upload bandwidth.

`Explore in depth » </features/fast.rst>`__

.. raw:: html

<div class="feature-icon feature-icon-input pull-left">
<a href="/features/input.html"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-file-text fa-stack-1x fa-inverse"></i>
</span></a></div>

Multiple input formats
======================

Nikola will take input in many formats. Out of the box, we support
reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML, and have
plugins for many other formats.

`Explore in depth » </features/input.html>`__

.. raw:: html

<div class="feature-icon feature-icon-components pull-left">
<a href="/features/components.html"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-cubes fa-stack-1x fa-inverse"></i>
</span></a></div>

Built-in components
===================

Nikola comes with everything you need to build a modern website: blogs (with
comments, tags, categories, archives, RSS/Atom feeds), multilingual support,
easy image galleries, and code listings.

`Explore in depth » </features/components.html>`__

.. raw:: html

<div class="feature-icon feature-icon-extensible pull-left">
<a href="/extending.html"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-code fa-stack-1x fa-inverse"></i>
</span></a></div>

Extensible
==========

Nikola is extensible. You can write a plugin to add any feature you want in a
few lines of Python, or write your own theme in Mako or Jinja2. Or find
something in the `Plugin <https://plugins.getnikola.com/>`__ and `Theme <http://themes.getnikola.com/>`__ Indexes.

`Read the extending documentation » </extending.html>`__

.. raw:: html

<div class="feature-icon feature-icon-cli pull-left">
<a href="/features/cli.html"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-terminal fa-stack-1x fa-inverse"></i>
</span></a></div>

Friendly CLI
============

Nikola has a friendly user interface that gets you up and running quickly and
simplifies your work. You do not need to memorize headers just to create a post
— we’ll write them for you.

`Explore in depth » </features/cli.html>`__

.. raw:: html

<div class="feature-icon feature-icon-coil pull-left">
<a href="https://coil.readthedocs.org/"><span class="fa-stack fa-3x">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-users fa-stack-1x fa-inverse"></i>
</span></a></div>

Coil CMS — a CMS for Nikola
===========================

If you want to use Nikola for a website that has content authored by people who
do not like command-line interfaces or who would prefer to use a WYSIWYG
editor, we have a solution for you.

Coil CMS is a basic CMS (with user management and a WYSIWYG HTML editor), which
uses Nikola to generate the pages, combining the best of both worlds: you (or
your editors) can easily create content, while the site is based on resilient
static pages. Users don’t even have to know what Nikola, Python or static websites
are. They just write their content. The only difference is that they (or
someone with the necessary permissions) need to click a *Rebuild* button to
make their changes show up on the website.

`Read Coil CMS documentation » <https://coil.readthedocs.org/>`__
59 changes: 59 additions & 0 deletions stories/features/static.rst
@@ -0,0 +1,59 @@
.. title: Static
.. slug: static
.. date: 2015-07-10 15:38:32 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
Most "modern" websites are *dynamic* in the sense that the contents of the site
live in a database, and are converted into presentation-ready HTML only when a
user wants to see the page. That's great. However, it presents some minor issues
that static site generators try to solve.

In a static site, the whole site, every page, *everything*, is created before
the first user even sees it and uploaded to the server as a simple folder full
of HTML files (and images, CSS, etc).

So, let's see some reasons for using static sites:

Security
Dynamic sites are prone to experience security issues. The solution for that
is constant vigilance, keeping the software behind the site updated, and
plain old good luck. The stack of software used to provide a static site,
like those Nikola generates, is much smaller (Just a web server).

A smaller software stack implies less security risk.

Obsolescense
If you create a site using (for example) WordPress, what happens when WordPress
releases a new version? You have to update your WordPress. That is not optional,
because of security and support issues. If I release a new version of Nikola, and
you don't update, *nothing* happens. You can continue to use the version you
have now forever, no problems.

Also, in the longer term, the very foundations of dynamic sites shift. Can you
still deploy a blog software based on Django 0.96? What happens when your
host stops supporting the php version you rely on? And so on.

You may say those are long term issues, or that they won't matter for years. Well,
I believe things should work forever, or as close to it as we can make them.
Nikola's static output and its input files will work as long as you can install
a Python 2.7/3.3 or newer under Linux, Windows, or OS X and can find a server
that sends files over HTTP. That's probably 10 or 15 years at least.

Also, static sites are easily handled by the Internet Archive.

Cost and Performance
On dynamic sites, every time a reader wants a page, a whole lot of database
queries are made. Then a whole pile of code chews that data, and HTML is
produced, which is sent to the user. All that requires CPU and memory.

On a static site, the highly optimized HTTP server reads the file from disk
(or, if it's a popular file, from disk cache), and sends it to the user. You could
probably serve a bazillion (technical term) pageviews from a phone using
static sites.

Lock-in
On server-side blog platforms, sometimes you can't export your own data, or

0 comments on commit 8a4421c

Please sign in to comment.