forked from legalese/legalese.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tutorials.html
330 lines (238 loc) · 22.3 KB
/
tutorials.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>User Tutorials</title>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-63573011-4', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<header>
<div class="inner">
<h1>Legalese 2.0</h1>
<h2>Software is eating law.</h2>
<a href="https://github.com/legalese/" class="button"><small>View project on</small> GitHub</a>
</div>
</header>
<div class="menu-wrap">
<nav class="menu">
<ul class="clearfix">
<li><a href="index.html">Home</a></li>
<li>
<a href="tutorials.html">Tutorials <span class="arrow">▼</span></a>
<ul class="sub-menu">
<li> <a href="tutorials.html#t1">the EULA</a></li>
<li> <a href="tutorials.html#t2">Hello, World!</a></li>
<li> <a href="tutorials.html#t3">Send for Signature!</a></li>
<li> <a href="tutorials.html#t4">A Real Nondisclosure Agreement</a></li>
<li> <a href="tutorials.html#t5">What Docsets Are Available?</a></li>
<li> <a href="tutorials.html#t6">Generating Multiple Documents – Incorporation</a></li>
<li> <a href="tutorials.html#t7">Developing Your Own Templates</a></li>
</ul>
</li>
<li><a href="generalinfo.html">General Info</a></li>
<li><a href="help.html">Help</a></li>
<li><a href="turing.html">Turing-Complete Contracts</a></li>
</ul>
</nav>
</div>
<div id="content-wrapper">
<div class="inner clearfix">
<section id="main-content">
<p>These tutorials create working docsets for incorporation and seed/angel fundraising. Complex corporate workflows require multiple contracts which all agree with one another.</p>
<h2 id="t1">Tutorial 1: you're here!</h2>
<p>If you can read this, you've passed Tutorial 1. Congratulations!</p>
<!--
<h2 id="t1">Tutorial 1: the EULA<a href="images/Legalese EULA for [email protected]"><img class="rhs" src="images/Legalese EULA for [email protected]"></a></h2>
<p>Skip this tutorial for now -- it's too easy.</p>
<p>A <b>signatory</b> fills in a Google Form and get back an agreement to sign. They don't have to know Legalese even exists.</p>
<ol>
<li> In this tutorial, you see how Legalese might appear to a third-party signatory.</li>
<li> Legalese takes the role of a Company, providing you an End-User License Agreement.</li>
<li> You take the role of an end-user signing the License Agreement.</li>
<li> In future, you will take the role of the Company generating agreements for others.</li>
<li> Legalese invites you to <a href="https://docs.google.com/a/jfdi.asia/forms/d/1RIB2E2-SfXBTLKVlwhRx08UnUeYoN5yjnaJrvqZavUE/viewform">fill in a simple form with your name and email address.</a></li>
<li> A few minutes later, check your mail. You should see a PDF agreement there. <i>If you don't receive the EULA, that's because there is a bug in the software that does OAuth integration with EchoSign. Sorry, this is still alpha software. We're working on it.</i></li>
<li> To complete the tutorial, sign the EULA.</li>
</ol>
<p><i>After running this tutorial, you will have:</i> seen what Legalese's Particulars form looks like to a third-party signatory, seen the output PDF, and signed it.</p>
-->
<hr />
<h2 id="t2">Tutorial 2: Hello, World!<a href="images/Hello World for [email protected]"><img class="rhs whitebg" src="images/Hello World for [email protected]"></a></h2>
<p>You set up a Yellow Spreadsheet for the first time. You are now a <b>power user</b>!</p>
<ol>
<li> <a target="_blank" href="https://docs.google.com/spreadsheets/d/1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw/copy?id=1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw©Collaborators=false©Comments=false&title=My%20Legalese%20Tutorial%202&usp=sheets_web">Copy our template to your Google Drive account.</a></li>
<li> (Say yes to "Make a copy?")</li>
<li> You should be in the Hello World tab. Some of the cells are bright yellow. We chose the same shade of yellow that you've seen in Word docs where you're expected to fill in the blanks.</li>
<li> Go ahead and fill in your particulars in the blank Row 14. If you leave it blank, we'll make something up for you. Change the email address for the <i>Acme Example</i> company to be one of your email addresses.</li>
<li> What about the cells that aren't in yellow? You can look, but don't touch. Yet.</li>
<li> Create an agreement! Click <i>Add-ons / Legalese / Generate PDFs</i>. Approve the authorization request.</li>
<li> A link should appear in cell E6 of the spreadsheet. It leads to an output folder in Google Drive.</li>
<li> In that folder, you should see an XML file. Yay! You are not expected to understand the XML. That's the job of the Legalese Robot.</li>
<li> Wait three minutes for the Legalese Robot to turn the XML into a PDF.</li>
<li> (While you wait, you might check out the README file.)</li>
<li> If, after three minutes, a PDF doesn't appear, just reload the web page.</li>
</ol>
<p> <i>After running this tutorial, you will have:</i> gotten comfortable with Legalese's Yellow Spreadsheets, created a PDF of your own, read the README, and glanced at the XML source files.</p>
<p><b>I noticed the output folder was shared with [email protected]. What if I have confidential information?</b> The Legalese Robot operates without any human involvement, turning XML into PDF tirelessly, day and night. In the normal course of operation, no human views your agreements. If debugging or troubleshooting is needed, only with your permission will a human view your XML or PDF files. (Errors are logged to a separate file which help us debug without ever viewing your agreements.)</p>
<p><b>Are the yellow spreadsheets shared?</b> No, the yellow spreadsheets are not shared with the Legalese Robot. The robot only has access to your XML, which it needs to generate the PDFs.</p>
<hr />
<h2 id="t3">Tutorial 3: Send for Signature
<a href="images/Screen Shot 2015-06-10 at 1.16.04 am.png"><img class="rhs whitebg" src="images/Screen Shot 2015-06-10 at 1.16.04 am.png"></a>
</h2>
<p>You, a <b>power user</b>, inject the <i>Hello World</i> PDF into an e-signature service which emails it to you for signing.</p>
<ol>
<li> Open the Google Drive folder that contains the <i>Hello World</i> PDF.</li>
<ul>
<li> The folder is named <i>My Legalese Tutorial Hello World</i>.</li>
<li> (If you don't know how to find the folder, begin by going back to the yellow spreadsheet.)</li>
<li> (If you don't know how to find the yellow spreadsheet, search your Google Drive for <b>My Legalese Tutorial</b>.)</li>
<li> (If you don't want to search, start at <i>My Drive</i> and open <i>Legalese Root</i>. Everything that Legalese does is in there. We created this folder for you automatically.)</li>
</ul>
<li> Select the <i>Hello World</i> PDF.</li>
<li> Right-click the PDF (or hit <b>a</b> if you're a keyboard geek).</li>
<li> Open With: <i>E-Sign with EchoSign</i>.</li>
<li> If you don't see the <i>EchoSign</i> option, click <i>Connect More Apps</i> to add it.
<li> Enter the To: and CC: addresses based on what's shown in the README file. The order matters.</li>
<li> If you're using EchoSign, you'll notice that the signature blocks are already in the right place.</li>
<li> Go ahead and send for signature!</li>
</ol>
<p> <i>After running this tutorial, you will have:</i> set up an e-signature back-end and sent a PDF for signature.</p>
<p><b>When the signature service asks me for the signers' email addresses, what should I say?</b> Open up the README file and enter the email addresses shown in the To: line.</p>
<p><b>What if I prefer DocuSign / HelloSign / some other e-signature backend?</b> That's fine; you can certainly do that. The advantage of EchoSign is that the PDFs contain embedded Signature Blocks which EchoSign knows how to read. If you use some other signature service, you will need to manually place the signature blocks.</p>
<hr />
<h2 id="t4">Tutorial 4: A Real Nondisclosure Agreement
<a href="images/Nondisclosure Agreement for [email protected]"><img class="rhs whitebg" src="images/Nondisclosure Agreement for [email protected]"></a>
</h2>
<p>You, a <b>power user</b>, choose a real-world docset, and create a real-world agreement, taking advantage of the <i>INCLUDE</i> keyword to reuse the entities from a different tab.</p>
<ol>
<li> Look at the row of tabs at the bottom of the spreadsheet.</li>
<li> You will see tabs with names like <i>NDA</i>, <i>Entities</i>, <i>Incorporation</i>, <i>Class F</i>, and <i>Seed Round</i>.</li>
<li> Let's start with a simple agreement: a nondisclosure.</li>
<li> Go to the <b>NDA</b> tab.</li>
<li> Note that one of the section headings is <i>INCLUDE Hello World</i>. That tells Legalese to load the <i>Entities</i> data from the <i>Hello World</i> tab.</li>
<li> Generate PDFs and wait a couple minutes for the PDF to show up.</li>
<li> This time, you should see that the PDF is now a nondisclosure agreement.</li>
<li> There are two kinds of NDAs: unilateral and bilateral. Change cell B9 to suit, and generate again, if necessary.</li>
<li> If you actually want to send a real NDA, update the Entities in Hello Word with real particulars, then repeat the steps from <a href="#t3">Tutorial 3</a>.
</ol>
<p> <i>After running this tutorial, you will have:</i> created a real NDA ready for execution.</p>
<p><b>What does the <i>Counterparty</i> line in the <i>ROLES</i> section mean?</b> The NDA template uses two parties: the Company, and the Counterparty. Cell B13 says <i>[Buyer]</i>, which means: every Buyer is a Counterparty, so Legalese defines Counterparties by substituting the Buyer from the <i>Hello World</i> tab.</p>
<hr />
<h2 id="t5">Tutorial 5: Introducing Docsets</h2>
<p>You, a <b>power user</b>, browse all the docsets that are available in Legalese. A docset generates one or more agreements. So far, all the docsets you've seen contain only one agreement.</p>
<ol>
<li> Look at the row of tabs at the bottom of the spreadsheet.</li>
<li> You will see tabs with names like <i>NDA</i>, <i>Entities</i>, <i>Incorporation</i>, <i>Class F</i>, and <i>Seed Round</i>.</li>
<li> You can generate dummy agreements by going to each tab and clicking Generate PDFs. Each tab except <i>Entities</i>, that is.</li>
</ol>
<h3 id="t5_entities">Entities
<a href="images/Screen Shot 2015-06-10 at 1.30.10 am.png"><img class="rhs" src="images/Screen Shot 2015-06-10 at 1.30.10 am.png"></a>
</h3>
<p>This tab is special. It contains the particulars of the parties to your agreements. It doesn't generate any agreements; other agreements refer to this.</p>
<p>Why? Because the names and addresses of your company, founders, employees, and investors are details used by multiple different agreements. The DRY principle says we should keep all that information in one place and not repeat it. So it lives in the <b>Entities</b> tab instead of repeating across multiple tabs.</p>
<h3 id="t5_incorporation" class="clear">Incorporation
<a href="images/03 - Shareholders' Agreement.pdf"><img class="rhs whitebg" src="images/03 - Shareholders' Agreement.png"></a>
</h3>
<p>All the paperwork involved in an incorporation is available here:</p>
<ul>
<li>Memorandum and Articles of Assocation</li>
<li>Form 45 (if Singapore)</li>
<li>JFDI Standard Shareholders Agreement</li>
<li>JFDI Standard Volunteer Agreement</li>
</ul>
<p>In the next tutorial, you produce all the paperwork needed for incorporation.</p>
<hr class="clear" />
<h2 id="t6">Tutorial 6: Incorporation
<a href="images/01 - Memorandum and Articles of Association.pdf"><img class="rhs whitebg" src="images/01 - Memorandum and Articles of Association.png"></a>
</h2>
<p>You, a <b>power user</b>, configure the spreadsheets to create <i>multiple</i> agreements within a single document set.</p>
<ol>
<li> Go to the <i>Incorporation</i> tab.</li>
<li> Generate PDFs.</li>
<li> In a few minutes you should see dummy documents for Frog Porridge Pte. Ltd., a company with three froggy founders and one wormy intern.</li>
<li> Look under the <i>Configuration</i> section. You'll see a line that says <i>Templates:</i>, followed by four templates named <i>jfdi_memorandum</i>, <i>form45</i>, <i>jfdi_shareholders_agreement</i>, and <i>jfdi_volunteer_agreement</i>. When you click <i>Generate PDFs</i>, those templates get filled.</li>
<li> If you happen to actually be generating a Singapore company, put real particulars into the <i>Entities</i> tab.</li>
<li> You'll also need to put real particulars into the <i>Roles</i> section. You might need to have a heart-to-heart with your co-founders before you fill in <i>num_shares</i>.</li>
</ol>
<hr />
<h2 id="t7">Tutorial 7: Developing your Own Templates</h2>
<p>You, a <b>content developer</b>, tweak an existing template for your own use, using Github. This involves learning a little bit of XML. You publish your template publicly. You instruct Legalese to use your template.</p>
<p>Legalese has a large number of standard available templates. They are listed in the <a href="https://docs.google.com/spreadsheets/d/1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw/edit#gid=981127052">Available Templates tab of the Legalese Demo Master spreadsheet</a>. Every time you run <i>Generate PDFs</i>, Legalese reads this tab. If it didn't, Legalese wouldn't know where to load the templates that you specified under the <i>CONFIGURATION</i> section.</p>
<p>You can create new XML templates of your own, and serve them at URLs of your choice. But how do you tell Legalese about those new templates?</p>
<p>Easy. Just set up an <i>AVAILABLE TEMPLATES</i> section in your own spreadsheet! <i>INCLUDE</i> it. But also <i>INCLUDE</i> the regular one, too.</p>
<ol>
<li>These instructions assume you have created an XML template of your own devising, and published it at some public URL. If you're working on a fork or a branch in Github, then this is easy! After you commit your changes and push to your origin branch, Github itself will serve your template publicly. Navigate using the Github UI to your branch and your file. View the raw source. Grab the URL.</li>
<li>To see how this all comes out, take a look at the spreadsheet called <i>Dev Hello World</i>.</li>
<li>Start by viewing <a href="https://docs.google.com/spreadsheets/d/1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw/edit#gid=981127052">the Legalese's master Available Templates tab</a>.</li>
<li><i>Copy to</i> your spreadsheet. Call the new tab <i>My Templates</i>.</li>
<li>Delete all the existing template definitions. Well, all but the one example that you copied from. Or you could put <i>ignore:</i> into Column A, which has the same effect.</li>
<li>Give a new name to your template. It could be <b>my_test_hello_world</b>.</li>
<li>Set the URL for your template.</li>
<li>Remember, your URL has to be accessible by anyone on the Net. Try loading that URL with an Incognito Mode window. If that doesn't work, Legalese won't be able to retrieve your template.</li>
<li>Set the To and CC fields to be the parties that will be signing the agreement.</li>
<li>Set Nocache=1. If you don't, your development cycle may be slowed, because by default Legalese caches all fetches for 5 minutes.</li>
<li>Back in your terms spreadsheet, under <i>CONFIGURATION</i>, name your template under the <i>Templates:</i> config.</li>
<li>Also in your terms spreadsheet, all the way under the <i>CONFIGURATION</i> section, add two <i>INCLUDE</i> lines:</li>
<ul>
<li>INCLUDE https://docs.google.com/spreadsheets/d/1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw/edit#gid=981127052</li>
<li>INCLUDE My Templates</li>
</ul>
<li>You can see an example at the bottom of the Seed Round tab</a>.</li>
<li>That should be a literal string, <b>My Templates</b>, or whatever you named your new tab.</li>
<li>Run <i>Generate PDFs</i> to see your template in action!</li>
</ol>
<p><b>If there's a problem, you will need to debug.</b> go into <i>Tools / Script Editor</i>. An IDE tab will open. <i>View / Execution Transcript</i> and <i>View / Logs</i> will help you trace the problem.</p>
<p><b>What if I want to publish my template privately?</b> You should be able to do <a href="https://en.wikipedia.org/wiki/Basic_access_authentication">Basic HTTP Authentication</a> and embed a username and password into the URL. You should of course use HTTPS. We haven't tried this yet, but it should work.</p>
<hr /><p>The tutorials below are still under construction.</p><hr />
<h2 id="t8">Tutorial 8</h2>
<p>You, a <b>content developer</b>, create a new template from scratch. You learn how to configure the signature blocks and use the includes and other functions that make life easier.</p>
<h2 id="t9">Tutorial 9</h2>
<p>You, a <b>software developer</b>, learn how to fork Legalese's Google Apps Javascript codebase for your own purposes.</p>
<p>This tutorial is available in <a href="https://github.com/legalese/legalese-google-app/blob/master/README.org">legalese-google-app/README.org</a>.</p>
<h2 id="t10">Tutorial 10</h2>
<p>You, a <b>software developer</b>, learn how to fix bugs, develop tests, and submit patches for Legalese's JS codebase. How does Test-Driven Development work in for Google Apps?</p>
<h2 id="t11">Tutorial 11</h2>
<p>You, a <b>content developer</b>, learn how to fix bugs, develop tests, and submit patches for Legalese's XML template trove. How does Test-Driven Development work for contracts and legal documents?</p>
<p>Every advanced content developer moves in the direction of becoming a software developer; this is inevitable, and quite aligned with our premise -- <em>software is eating law</em>. Here are some introductions to the art and craft of computer programming.</p>
<ol>
<li> <a href="http://www.grok2.com/progfun.html">The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.</a>
<li> <i><a href="http://www.english.illinois.edu/-people-/faculty/debaron/482/482readings/phaedrus.html">Writing, Phaedrus</a>, has this strange quality, and is very like painting; for the creatures of painting stand like living beings, but if one asks them a question, they preserve a solemn silence. And so it is with written words; you might think they spoke as if they had intelligence, but if you question them, wishing to know about their sayings, they always say only one and the same thing.</i>
<br /> This was true for dumb writing, but computers have <a href="http://en.wikipedia.org/wiki/Walter_J._Ong#Orality_and_Literacy_.281982.29">brought interactive orality to traditional literacy</a>.</li>
<li> <a href="http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/">What is Code? Paul Ford, June 11 2015.</a></li>
<li> <a href="http://www.codecademy.com/en/tracks/javascript">Learn Javascript at Codecademy</a></li>
<li> <a href="https://developers.google.com/apps-script/">Google Apps Script</a></li>
<li> The differences between programmer, software engineer, architect, and language designer are about as vast as the differences between home cook, restaurant sous-chef, Wolfgang Puck, and Auguste Escoffier. These videos will be incomprehensible to the layman, but the breadth and depth of their sophistication should demonstrate to anyone that programming is equal to law, medicine, writing, or moviemaking: <a href="https://vimeo.com/36579366">Bret Victor, Inventing on Principle</a> and <a href="https://www.youtube.com/watch?v=rI8tNMsozo0">Simplicity Matters, by Rich Hickey</a>.</li>
</ol>
<h2 id="t12">Tutorial 12</h2>
<p>: You, a <b>software developer</b>, learn about Legalese's InDesign Javascript codebase so you can tweak the XML-to-PDF workflow. How does Test-Driven Development work for XMLs and PDFs? Discusses alternative methods of going from XML to PDF, such as PrinceXML.</p>
<h2 id="t13">Tutorial 13</h2>
<p>: You, a <b>software developer</b>, learn about Legalese's integrations with third parties. How are PDFs injected into an e-signature service?</p>
</section>
<aside id="sidebar">
<a href="https://docs.google.com/spreadsheets/d/1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw/copy?id=1rBuKOWSqRE7QgKgF6uVWR9www4LoLho4UjOCHPQplhw©Collaborators=false©Comments=false&title=My%20Legalese%20Tutorial%202&usp=sheets_web" class="button">
<small>Install the</small>
Google App
</a>
<p class="repo-owner"><a href="https://github.com/legalese">Legalese</a> is a <a href="https://jfdi.asia/">JFDI.Asia</a> spinoff, initially hosted by <a href="https://github.com/cofounders">Cofounders</a> and later moved to its own project.</p>
<p>This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the Architect theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.</p>
</aside>
</div>
</div>
</body>
</html>