Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

Static Web site content generators

News

 Content management Recommended Links Nikola ttree
Templer Beautifiers and Pretty Printers Compilers Algorithms Best Compiler Construction Books Lexical analysis
Recursive Descent Parsing A symbol table Programming Language Processors in Java: Compilers and Interpreters   XML
Program Generators with XML and Java Generative Programming Methods, Tools, and Applications Code Generation in Action  Humor   Etc

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.6 in a Linux, Windows, or Mac 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 it's in strange formats you can't use in other services. I have switched blogging platforms from Advogato to PyCs to two homebrew systems, to Nikola, and have never lost a file, a URL, or a comment. That's because I have always had my own data in a format of my choice.

If you are using static generator of web site of blog you own your files, and you can do anything with them.

Examples

See below news section for more examples and discussion.


Top Visited
Switchboard
Latest
Past week
Past month

NEWS CONTENTS

Old News ;-)

[Feb 15, 2017] WordPress based blog like nixCraft

Feb 15, 2017 | www.cyberciti.biz
requires multiple VMs , CDN for static assets , caching engine such as memcached , PHP, mysql database, comment moderation, and on going updates. A growing trend is to keep your blog simple by avoiding CMS and use static HTML generators that offers the following benefits:

Operating system : Cross-platform
Purpose : Blogging system
Targets : Bloggers who wish to follow KISS principal .
License : MIT License
Download url : jekyllrb.com
Similar apps: Haskell based Hakyll , Ruby based nanoc , Python based Pelican .

What's the best available static blog-website generator in Python - Quora

Ramakrishna Reddy, Principal Software Engineer @ ... (more) Principal Software Engineer @ Red Hat, Problem Solver, I18N and L10N developer.
Best available could be different for different users perspective, as of today there are quite a few static blog generators in Python. The popular ones seem to be or based on the following projects ::

Pelican :: http://getpelican.com
Mynt :: http://mynt.mirroredwhite.com/
Wok :: http://wok.mythmon.com/
Sphinx :: http://sphinx.pocoo.org/
Frozen Flask :: http://packages.python.org/Froze...
Hyde :: http://hyde.github.com/
Tinkerer :: http://tinkerer.bitbucket.org/
Nikola :: Nikola | Nikola

Though sphinx would be an overkill just to run a static blog generator, but with little tweaks it could the job done.

Static site generators written in Python

Python Wiki


Sharmila G Sivakumar

There is oak (Which I'm going to try) https://github.com/marc0s/oak/tr...
mynt http://mynt.mirroredwhite.com/ which is very good, except for the fact that, it does not support, pages in markdown (only html)
http://tinkerer.bitbucket.org/ which based on sphinx and reStructuredText. It is very good and neat. But you loose a little control over your installation. Perfect choice if you are going to start a new blog. A bit painful if you are going to port an existing one.

32 static website generators for your site, blog or wiki

Note: The updated version of this list now lives here.


Sometimes, all a geek needs is a quick way to generate a static site and put it up on a server or hosting service like Amazon S3 or GitHub Pages. We've compiled a list of static website generators that can be used for exactly this purpose:

  1. Blatter: Simple tool for developing and publishing static web sites built from templates.
  2. Blogofile: A static website compiler and blog engine, written and extended in Python.
  3. Bonsai: Static web site generator. Provides a tiny HTML5, mustache driven template set.
  4. Chisel: A simple Python static blog generation utility.
  5. Dynamicmatic: Sinatra extension that integrates Sinatra with StaticMatic. Allows most of your site to be static while having a few dynamic pages that can use StaticMatic layouts and partials.
  6. Frank: Inspired by Sinatra's simplicity and ease of use, Frank lets you build static sites using your favorite libs.
  7. Hobix: Commandline blogging, static pages & ruby.
  8. Hyde: Static website generator powered by Python & Django. Hyde supports all the Django template tags & filters and has a built-in web server + auto-generator.
  9. ikiwiki: Ikiwiki is a wiki compiler. It converts wiki pages into HTML pages suitable for publishing on a website.
  10. Jekyll: A simple, blog aware, static site generator.
  11. Jinja: Jinja2 is a full featured template engine for Python. It has full unicode support, an optional integrated sandboxed execution environment, widely used and BSD licensed.
  12. Korma: Git based blog.
  13. Lanyon: Static site generator written in Python and licensed under the BSD license.
  14. Mako: Template library written in Python.
  15. Markdoc: Markdown-based wiki system. Allows you to create and manage wikis as quickly and easily as possible.
  16. Middleman: Static site generator utilizing Haml, Sass, Less & Coffee Script and providing JS/CSS compression, image compression and cache busting.
  17. nanoc: Ruby web publishing system for building small to medium-sized websites.
  18. Pagegen: Creates web sites from flat text files and directories. Great for managing sites from the command line.
  19. Stacey: Lightweight content management system. No database setup or installation files, simply drop the application on a server and it runs.
  20. Tahchee: Tool for developers and Web designers that makes it possible to easily build a static Web site using the Cheetah template system.
  21. Templeet: Allows you to create photo galleries, news systems, personal sites, blogs, etc. generating HTML, CSS, SVG pictures, SMIL, and any kind of text files.
  22. Toto: Git-powered, minimalist blog engine for the hackers of Oz. Wizards? Hackers. Wizards. No? Yes, hackers!
  23. ttree: Template-toolkit based solution.
  24. Pelican: Weblog generator, written in python with a cli-tool to (re)generate the site. Completely static output, so easy to host anywhere.
  25. Poole: Markdown driven static website generator with basic support for content generation by embedding Python code in page source files.
  26. Pubtal: Supports the authoring of web page content in several formats (e.g. text files, OpenOffice), uses templates written in TAL, and builds static HTML files.
  27. Sphinx: Creates HTML (including Windows HTML Help), LaTeX (for printable PDF versions), manual pages, plain text.
  28. StaticMatic: Static websites, the modern way.
  29. Static: Write plain HTML sites.
  30. Vee: Command line blog tool that is very portable across Unix systems.
  31. Webby: Let's you choose your favorite templating language: ERB, Textile, Markdown, HAML or SASS. Just HTML, no special server requirements.
  32. Webgen: Free (GPL-licensed) command line application for generating static websites.

Let us know in the comments if you know any other static site generators and we will add it to the above list.

This list was compiled from the following sources:

Best Static Website Generator

Best Static Website Generator

[+67] [26] Nick Retallack

[2008-10-09 07:43:44]

[ web-development static ]

[ http://stackoverflow.com/questions/186290] [DELETED]

In the age of dynamic websites built with layouts and templates, nobody wants to write plain old repetitive static html anymore. But now that you can outsource dynamic features to services like Disqus [1], and you could get slashdotted/dugg/reddited at any moment, sometimes a static website is best for scalability.

There are quite a few static website generators out there that let you use templates, layouts, alternative markup languages, and other new age stuff. So this question is a bit of a survey. Which do you think is the best, and why?

Here are a few examples to start us off:

  1. WebGen [2]
  2. StaticMatic [3]
  3. Static [4]
[1] http://disqus.com/
[2] http://webgen.rubyforge.org/
[3] http://staticmatic.rubyforge.org/
[4] http://static.newqdev.com/

(4) Community Wiki? - Greg B

(2) Done. I still can't decide which of these things to use. - Nick Retallack

(3) My criteria are 1) It leaves your data where it is, in the format you choose. 2) You can edit the basic site and page layout just as you would for normal HTML (no magic Layout definition language) and 3) It plays well with the rest of your tool chain. - AndyT

[+29] [2009-04-15 15:02:08] barry

StaticMatic [1] and Static [2] are lesser known. There are more done in Ruby...

I just used nanoc for a little project and it was pretty nice.

Don't forget aym-cms (Python), and the others in Perl that have existed since the dawn of time (like the aforementioned WML).

[1] http://staticmatic.rubyforge.org/
[2] http://static.newqdev.com/
[3] http://nanoc.stoneship.org/
[4] http://webby.rubyforge.org/
[5] http://github.com/mojombo/jekyll/tree/master
[6] http://github.com/blog/342-hyde-the-python-static-site-generator
[7] http://hobix.com

(2) But does anyone have a recommendation? Should we split suggestions into separate answers so people can vote on them? - Adrian Mouat

Agreed with Adrian. Also, Hyde has its own website now: ringce.com/hyde - Cawas

(1) +1 for nanoc. That thing is stupid easy to use, it's flexible, and has excellent documentation. - Dan Esparza

1

[+6] [2010-03-02 10:14:54] Oben Sonne

Poole [1] is another one. Conceptually it's something in between plain Markdown to HTML conversion and more sophisticated site generators like Hyde [2].

Poole uses one global HTML skeleton file to inject the HTML versions of Markdown source pages into. Poole has basic support for generating content by embedding Python code in page source files. This is a dirty merge of content and logic but a pragmatic solution to get things done fast for simple sites. No need to learn a template or preprocessing engine.

Poole may be a good choice if you are familiar with Markdown and Python and if you want to build a rather simple site with only a spot of generated content.

[1] http://bitbucket.org/obensonne/poole
[2] http://ringce.com/hyde

2

[+5] [2008-10-09 08:04:08] Greg Hewgill

I use ikiwiki [1] as my wiki software, which in contrast with most wiki software generates a static view of the wiki. Whenever you make a change, it reruns the generator program that generates new versions of any static pages that need to change. It's not designed for huge installations like Wikipedia, but certainly for small to medium size wikis it works well.

[1] http://ikiwiki.info

3

[+4] [2008-10-09 12:15:42] Tometzky

Here is another example: Bricolage [1]

A static web page is also much more secure than a dynamic one. Nobody would be able to deface one. There is no need for security updates either. Go static!

[1] http://bricolage.cc/

4

[+4] [2009-11-04 19:57:02] igotmumps

I'd like to add CityDesk [1] from FogCreek Software.

Though no longer being updated, it is an incredibly easy to use little system that lets you crank out static websites at a pretty quick pace. Some of the features are a bit dated, but I like the simplicity of it's scripting language and templating system.

Michael

[1] http://www.fogcreek.com/CityDesk/

5

[+4] [2010-04-13 08:57:28] Oliver Haag

For simle static Site I can reccomend nanoc.

I've done such a static site with nanoc about 2 years ago. The documentation was good and I got it done quite fast. I had to handle a little problem with the directory structure, but as far as I can see this is solved in the current version anyway.

An alternative may be jekyll. ruby-toolbox says [1] that this is the the most popular ruby site generating tool. But jekyll seems to be more complicated and overkill if you don't need blog features.

Anyway ruby-toolbox is a good starting point to look for alternative solutions.

[1] http://ruby-toolbox.com/categories/static_website_generation.html

6

[+4] [2010-09-27 20:27:02] Alain O'Dea

wget --recursive (with --base to relativize links) or curlmirror.

If you already have a working site written in CMS that has a RESTful interface (like Zotonic) you can make a static snapshot of it with wget --recursive (with --base) or curlmirror.


(4) This solution is ghetto fabulous - Nick Retallack

7

[+3] [2010-11-26 02:11:37] Matt Helmick

Two excellent new static site generators are Middleman: https://github.com/tdreyno/middleman and Frank: https://github.com/blahed/frank

Both of them are based on the Sinatra Ruby Framework.

I can recommend Frank. Some rough edges but all in all a great tool - asymmetric

8

[+3] [2009-05-28 06:50:40] thedz

If it's a simple blog, a while back I wrote a quick Python utility that would generate static pages:

http://github.com/dz/chisel/tree/master

My primary goal was to make it easy to extend and edit, hence the relative few number of basic page types it generates.

9

[+3] [2010-04-21 15:41:15] David Dorward

I swear by ttree [1]

[1] http://template-toolkit.org/docs/tools/ttree.html

10

[+2] [2011-02-07 18:13:53] David

The thread is a bit old, but it looks like it's still being updated. When I search Google for "static site generator" it's one of the top links listed! So ...

I've been looking for a PHP-based static site generator. (The Ruby ones seem to be flavour-of-the-month!) About the only one I've found is Stacey [1]. I'm not even sure there is much be way of alternative in the PHP world. I would be interested to know of others, though.

Meanwhile, I hope Stacey is a worthy addition to this list.

[1] http://www.staceyapp.com/

Another option will be Phrozn - static site generator in PHP. I just recently pushed first public release, but it is already worth checking. - Victor Farazdagi

11

[+2] [2011-03-04 16:01:53] AndyT

It's a late addition to the crowd, but WebDibbler (http://www.webdibbler.com) is a Java package with GUI font end that adds templating tags (include, loop, conditional, expression evaluation, multi-pass rendering) to standard HTML. It makes no constraint on the type of page being generated, and simply allows more complex websites to be built up from smaller fragments.

Plans include Ant task and direct Java API integration, as well as a number of markup/data source extensions.

12

[+2] [2010-04-21 15:38:20] nwah

Frank [1] it has cool helpers for prototyping fast.

[1] http://github.com/blahed/frank

13

[+2] [2009-05-28 06:42:00] Vihang D

If you are looking for python based tool check out Tahchee [1]. It uses Cheetah template system.

[1] http://www.ivy.fr/tahchee/

14

[+1] [2008-10-09 12:30:26] timday

"Website Meta Language" [1] (often confusingly shortened to WML, despite being absolutely nothing to do with WAP) works well for me. apt-gettable on Debian [2].

[1] http://www.thewml.org/
[2] http://packages.debian.org/etch/wml

<offtopic> And it has nothing to do with yet another WML (wesnoth.org/wiki/ReferenceWML). </offtopic> - jetxee

15

[+1] [2009-11-06 04:24:10] Nomad Coder

After searching around for a static site generator (I only wanted to use Ruby, which essentially limited the scope), I had a very positive experience with Webby. I made a "really-static" site with it ( playcode.nl [1]), as well as a blog (not-so-static, with the source code kept on github - blog.writelesscode.com [2]). What I liked about it is extended set of features. For example, you can combine filters for the same page (no problem to use ERB together with Markdown). Nested layouts? No problem. Code highlighting worked well, too. And after all, the source code is pretty readable (although it feels a bit Java-ish to my opinion) - so, I could easily add a feature that I was missing (which was extracting excerpts from posts on the index page of the blog).

[1] http://playcode.nl
[2] http://blog.writelesscode.com

16

[+1] [2009-11-08 19:54:51] ak

Two python based ones: blatter [1] and lanyon [2].

[1] http://bitbucket.org/jek/blatter/
[2] http://bitbucket.org/arthurk/lanyon/

17

[+1] [2010-12-01 21:18:38] Nick Retallack [ACCEPTED]

Mako [1] and Jinja [2] include all you really need to generate a static site.

[1] http://www.makotemplates.org/
[2] http://jinja.pocoo.org/

18

[+1] [2010-04-21 16:05:51] cato_minor

Ages ago, I used filepp [1] for quickly including content. It looks like a generalised C preprocessor. It still works, and is still available in Debian.

[1] http://www.cabaret.demon.co.uk/filepp/

19

[+1] [2010-08-24 15:16:05] Antony

let me recommend you templeet [1] makes it real easy to build static sites without imposing any structure combined with the ability to integrate php code/routines and a large set of tools to deal easily with authentication and database integration. To build a website from small to large, is still what I'd recommend because it can be as simple as building a static website with the ability to call any php when ever you need generating at the end a static website.

[1] http://templeet.org/

20

[+1] [2009-08-17 20:40:22] community_owned

I've got a little project going on that tries allow focus on writing content and designing nice HTML/CSS. All pages are flat text files, I like to think of it as website by config files:) http://pagegen.phnd.net


21

[0] [2011-03-29 23:02:02] Stephan Eggermont

Seaside in smalltalk. Because it doesn't use templates, but a fluent interface.


22

[0] [2010-12-19 18:29:06] Arturo Herrero

Another minimalist blog engine like Jekyll is toto [1]. toto is a git-powered blog engine. The articles are stored as .txt files, with embeded metadata (in yaml format) and are processed through a markdown converter.

[1] http://cloudhead.io/toto

23

[0] [2011-01-05 13:23:27] Skami 18

thedz said:

If it's a simple blog, a while back I wrote a quick Python utility that would generate static pages:

http://github.com/dz/chisel/tree/master

My primary goal was to make it easy to extend and edit, hence the relative few number of basic page types it generates.

Good work: The code is very easy to understand and this is the example I needed! Thanks !


24

[0] [2009-06-11 21:11:02] community_owned

maybe take a look at growl [1] ...

[1] http://github.com/xfire/growl/tree

dead link, please update - SamGoody

25

[0] [2009-11-08 20:01:21] Ben

Don't forget that there are lots of good full-scale CMSes out there that create static files. Movable Type [1] and WordPress [2] have great communities built up around them, with lots of plugins and support.

[1] http://www.movabletype.org/
[2] http://www.blogtrepreneur.com/2007/08/29/building-a-static-site-using-wordpress/

Recommended Links

Google matched content

Softpanorama Recommended

Top articles

Sites

Top articles

Sites



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: December, 26, 2017