OWASP Press

=Main=

{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 * valign="top" style="border-right: 1px dotted gray;padding-right:25px;" |

The OWASP Press Project
The OWASP press project is proposal that allows community authoring and edditing with just in time publishing.

Community authoring is fraught with challenges. Word documents with revisions on eventually crash, and so people eventually take to naming conventions to manage the versions. Additionally, there is only one canonical master; this makes authoring and editing in parallel impossible; and merging the resulting versions is an enormous time sink in and of itself. This only gets worse the larger the book is and the more authors that are involved.

Additionally, I have long desired a bookshelf full of OWASP books; and indeed other people have as well. As we have an OWASP Lulu store. The problem with this model however is that the publishing is remains oriented around the 'dead-tree publishing' workflow. Where books are written to a deadline and 'released' to the editors, and finally sent to the printers for publishing and distribution. And by the time the documents make it to publication they are already out of date.

Description
OWASP has long provided some of the very best documentation on the web for Application Security. Among the awesome documentation resources are projects like OWASP Cheatsheets, The OWASP Development Guide, OWASP Testing Guide, OWASP AppSensor and OWASP SAMM.

These community documentation projects are living, collaborative works and so they present a special challenge to the 'dead-tree publishing' workflow. Additionally, I have the books I love most on my Kindle not a physical bookshelf, who wants to lug a dead-tree when you can haul around a library?

The answer was obviously just-in-time publishing, after all isn't this what a wiki is? Where anybody from the OWASP community could update a text and the update be instantly available? While wiki technology really excels at on-line living documentation and knowledge management; wiki's have failed to succeed at general purpose publishing platforms.

I have spent the last month exploring ways to instantiate a just-in-time open publishing workflow to produce digital and dead-tree editions of the OWASP documentation projects.

Every avenue I turned down, I would inevitably run into numerous issues attempting to create a workflow. While, I was able to get some ideas to work successfully, I was unsatisfied, as the complexity required would have created a participation barrier to entry.

Fortunately, I was not alone in my thinking and I discovered last week that the people at Leanpub had solved exactly these issues that needed to be overcome to make this a reality.

Licensing
'''The OWASP Press is free to use. In fact it is encouraged!!!

The OWASP Press is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.


 * GitHub is a free to use service, GitHub, Inc. owns the copyright on the github service.
 * Leanpub is a free to use service, Ruboss Technology Corporation owns the copyright on the leanpub service.


 * valign="top" style="padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;" |

What is OWASP Security Principles Project?
Here you should add a short description of what your project actually does. What is the primary goal of your project, and why is it important?

The end goal is to identify, cite, and document the fundamental principles of information security. Once this is well organised, I think it would be great to publish this through the OWASP Press. Of course, it will always remain freely available, and any money collected will go directly into the project to absorb costs with any remaining funds going to the OWASP Foundation.

This document should serve as a guide to technical architects and designers outlining the fundamental principles of security.

Presentation
This is where you can link to slide presentations related to your project.

AppSec USA 2013

Project Leader

 * Dennis Groves

Related Projects
This is where you can link to other OWASP Projects that are similar to yours.


 * OWASP_CISO_Survey


 * valign="top" style="padding-left:25px;width:200px;" |

Quick Download
This is where you can link to your repository.

The home of the OWASP Security Principles is on GitHub. You are encourged to fork, edit and push your changes back to the project through git or edit the project directly on github.

However, if you like you may also download the master repository from the following links:
 * .zip file.
 * .tgz file.

News and Events
This is where you can link to press your project has been a part of. Appropriate press includes: Project Leader interviews, articles written about your project, and videos about your project.


 * [20 Nov 2013] News 2
 * [30 Sep 2013] News 1

In Print
This is where you place links to where your project product can be downloaded or purchased, in the case of a book.

This project can be purchased as a print on demand book from Lulu.com

Classifications

 * }

= Getting Started =

Leanpub
Leanpub is a lean workflow applied to documentation. Publishing is indeed lean; as in Toyota lean; in fact it is just-in-time like the Qin Dynasty's terra cotta warriors! In fact they have written a very interesting manifesto about the future of publishing that I found to be very insightful and well researched. I highly recommend reading it if you are interested in such things.

While Leanpub is full of coolness for authors, I want to talk about how it works. Leanpub works via dropbox and plain-text markdown files.

After joining the site, you create a book by clicking a 'Create a lean pub book now' link; which takes you to a page that asks for the book title and a URL; and you submit the form with a 'create my book' button. Leanpub then publishes a manuscript folder to dropbox and shares it with you, and sets up a storefront for the book at the url you specified.

The manuscript is written in markdown, However, since markdown is a simple markup format it doesn't have any file inclusion features, so everything is expected to be in a single file. This is a problem because it is very difficult for many authors to make changes to a single file, and also because it is simply nicer to separate out ideas that belong together into chapters.

This is one of the issues I ran into when attempting to build this for OWASP myself. I tried using makefiles and GPP to overcome this limitation of 'everything in a single file.'

Leanpub's answer is a simple textile called book.txt that simply lists the files in the order they are to be include as such:

about-the-book.md acknowledgments.md introduction.md chapter-01.md chapter-02.md chapter-03.md appendix-01.md appendix-02.md And with that the problem is solved, simply and elegantly. And unlike my attempts, it solves it without having to acquire and compile software to participate in authoring. Keeping the barrier to participation very low.

Dropbox's killer feature is sharing. However, while sharing is awesome; it is best used for distribution of information that doesn't change often. Additionally, it while dropbox keeps a complete history of files; dropbox doesn't provide the granularity of history that a good version control system does. This makes sense because sharing is about distribution of mostly 'static' content.

However, what is needed for massive collaboration, is good distributed version control software which is built with changes in mind. Particularly where you can have an infinite number of authors. You need something that has merging of conflicts built into its DNA. The coup d'état of distributed version control systems is Linus Torvald's git project. And the best place to host a public git repository is arguably github.

Github
Git is an amazing tool for community collaboration and change management so the final step is putting the shared dropbox under git version control and pushing the repository to github. Incidentally, OWASP has a github repositoryy and members of the community should be encouraged to use it.

In this example the dropbox and the github fork are on the same machine, However, they could easily be different machines; and in practice they will be as each author will have the github fork and only the project leader will have the dropbox.

To start an OWASP Publication, with the browser of your choice:


 * 1) Create a book at lean pub. (in this example AppSensor)
 * 2) Create a new repo at github. (In this example AppSensor-Handbook)

In a terminal:


 * 1) cd ~/dropbox/AppSensor
 * 2) git init
 * 3) git remote add origin https://github.com/OWASP/AppSensor-Handbook.git
 * 4) git push -u origin master

Everything is now ready for mass collaboration and realtime publication! In order for Authors to participate in the publication process:


 * 1) Download your favorite github.com client for mac or windows (or use the command line if your are so inclined).
 * 2) Clone the github.com repository.
 * 3) Fork your own branch.
 * 4) Edit the manuscript.
 * 5) push the changes.

Once the authors are done making changes or through the use of a git branching model. The project lead who has the dropbox computer will need to goto the dropbox folder and 'git -pull' the changes from authors at github. This will automatically syncs the leanpub website which shares the dropbox folder. The project owner can then publish the updates by navigating to the leanpub website and clicking the 'create a preview of my book' on actions tab.

While I appreciate that this is somewhat manual, github has service hook's that could be used to automate this workflow completely. I am currently exploring the best way to do this. If the dropbox is hosted remotely as well then the 'git -pull' can be automated. This need to be followed by a publish request with leanpub; and while it has some authorisation tokens and oner 'anti-automation' cookies; it would be trivial for most of the OWASP community to issue the post request to leanpub in an automated way.

=Editing= CriticMarkup is a way for authors and editors to track changes to documents in plain text. As with Markdown, small groups of distinctive characters allow you to highlight insertions, deletions, substitutions and comments, all without the overhead of heavy, proprietary office suites.

The Three Laws


 * 1) Critic Markup shall be human readable. A human with a simple text editor can easily read and comprehend any text containing Critic Markup.
 * 2) Critic Markup shall be computer readable except where it conflicts with rule 1. Markup syntax should be easily parsed with simple regular expressions to support a wide variety of implementations.
 * 3) Critic Markup shall be compatible with existing markup syntax for Markdown, MultiMarkdown and HTML except where it conflicts with rules one or two. Many users of plain text write in combinations of Markdown and HTML. Critic Markup should work alongside that syntax.

The Basic Syntax

There are five types of Critic marks:

Addition {++ ++} Deletion {-- --} Substitution { ~&gt; } Comment {&gt;&gt; &lt;&lt;} Highlight {&gt;&gt; &lt;&lt;} Using these { six ~&gt; five } basic marks you can {++ successfully ++} copy edit in plain text. {&gt;&gt; Although modern word processing programs can do some amazing things—adding charts, tables, and images, applying sophisticated formatting—there’s one thing they can’t do: Guarantee that the words I write today will be readable ten years from now. That’s just one of the reasons I prefer to work in plain text: It’s timeless. My grandchildren will be able to read a text file I create today, long after anybody can remember what the heck a .dotx file is. &lt;&lt;}

Conclusion

Combine this with git version control and you have a complete history of changes to your documents in plain text, including reviewer feedback! Now even reviewer can participate in the OWASP Press. = Acknowledgements =

Contributors
The success of OWASP is due to a community of enthusiasts and contributors that work to make our projects great. This is also true for the success of your project. Be sure to give credit where credit is due, no matter how small! This should be a brief list of the most amazing people involved in your project. Be sure to provide a link to a complete list of all the amazing people in your project's community as well.

The OWASP Security Principles project is developed by a worldwide team of volunteers. A live update of project contributors is found here.

The first contributors to the project were:


 * Dennis Groves
 * Andrew Martin
 * Josh Thomas
 * Samantha Groves
 * YOUR NAME BELONGS HERE

= Road Map and Getting Involved =

A project roadmap is the envisioned plan for the project. The purpose of the roadmap is to help others understand where the project is going. It gives the community a chance to understand the context and the vision for the goal of the project. Additionally, if a project becomes inactive, or if the project is abandoned, a roadmap can help ensure a project can be adopted and continued under new leadership.

Roadmaps vary in detail from a broad outline to a fully detailed project charter. Generally speaking, projects with detailed roadmaps have tended to develop into successful projects. Some details that leaders may consider placing in the roadmap include: envisioned milestones, planned feature enhancements, essential conditions, project assumptions, development timelines, etc. You are required to have at least 4 milestones for every year the project is active.

As of October 2013, the priorities are:
 * Finish the referencing for each principle.
 * Update the Project Template.
 * Use the OWASP Press to develop a book.
 * Finish and publish the book on Lulu.

Involvement in the development and promotion of the OWASP Security Principles Project is actively encouraged! You do not have to be a security expert in order to contribute. Some of the ways you can help:
 * Helping find references to some of the principles.
 * Project administration support.
 * Wiki editing support.
 * Writing support for the book.