CINXE.COM

Imagine a world...

<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> <!--[if gt IE 9]><!--><html class="no-js" lang="en"><!--<![endif]--><head> <meta content='IE=edge' http-equiv='X-UA-Compatible'> <meta charset='utf-8'> <meta content='width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no' name='viewport'> <meta content='en' name='Content-Language'> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-57x57-3dc48b9be1873ac9bf6d580e7836e3e5.png" sizes="57x57" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-60x60-06b95deca3f378372b051ca8ea42cfbd.png" sizes="60x60" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-72x72-935ba702f9d3da9b4404aa2b797920e5.png" sizes="72x72" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-76x76-937dbc8b688db389b5b872c5ffdffe2d.png" sizes="76x76" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-114x114-9db66ed49dfe9c3ed799923955da36e2.png" sizes="114x114" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-120x120-3fd2359930103db35eb499036b81ba90.png" sizes="120x120" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-144x144-5bee791d2b53cc426eb14e7f6e40a024.png" sizes="144x144" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-152x152-af69d0ec0fe11cf82324b06ff9a56e3b.png" sizes="152x152" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-16x16-19545df363d1089bccdc59d17ee5b781.png" sizes="16x16" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-32x32-9a0898109481d6450269c966cdf6a2d7.png" sizes="32x32" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-96x96-98f4372a68f5617fc907b7bde8d94e05.png" sizes="96x96" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-128x128-bf73acc329429fbf555afe3b067aa2d6.png" sizes="128x128" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-196x196-24a71f1b4fb02600f635b59a116daf05.png" sizes="196x196" /> <meta content='Leanpub' name='application-name'> <meta content='#ffffff' name='msapplication-TileColor'> <meta content='favicons/mstile-144x144.png' name='msapplication-TileImage'> <meta content='favicons/mstile-150x150.png' name='msapplication-square150x150logo'> <meta content='favicons/mstile-310x150.png' name='msapplication-wide310x150logo'> <meta content='favicons/mstile-310x310.png' name='msapplication-square310x310logo'> <meta content='favicons/mstile-70x70.png' name='msapplication-square70x70logo'> <title>Imagine a world...</title> <link href='//fonts.googleapis.com/' rel='dns-prefetch'> <script src='https://ajax.googleapis.com/ajax/libs/webfont/1.6.16/webfont.js'></script> <script> if (typeof WebFont !== 'undefined') { WebFont.load({ google: { families: [ 'Noto+Sans:ital,wght@0,400;0,700;1,400;1,700', 'Noto+Serif:ital,wght@0,400;0,700;1,400;1,700', 'Inter:wght@400;700', ] } }); } </script> <link rel="stylesheet" media="screen" href="https://leanpub.com/assets/font_awesome-bbab983f4954a5c7dd952efdd403ebe8.css" /> <link rel="stylesheet" media="all" href="https://leanpub.com/assets/static-92298ac837e2708dcbd1736925939fcb.css" /> <script> var _rollbarConfig = { accessToken: "3d279f41d3804636adbbba833c2c0d2d", captureUncaught: true, captureUnhandledRejections: true, code_version: "4a787a25", payload: { environment: "production" } }; // Rollbar Snippet !function(r){function o(n){if(e[n])return e[n].exports;var t=e[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}var e={};return o.m=r,o.c=e,o.p="",o(0)}([function(r,o,e){"use strict";var n=e(1),t=e(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.5.2/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,o,e){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,o){this.options=r,this._rollbarOldOnError=null;var e=s++;this.shimId=function(){return e},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[e]={handler:o,messages:[]})}function a(r,o){if(r){var e=o.globalAlias||"Rollbar";if("object"==typeof r[e])return r[e];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(o);return n(function(){o.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),o.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=o.autoInstrument;return o.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[e]=t,t})()}}function l(r){return n(function(){var o=this,e=Array.prototype.slice.call(arguments,0),n={shim:o,method:r,args:e,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=e(2),s=0,d=e(3),c=function(r,o){return new t(r,o)},p=function(r){return new d(c,r)};t.prototype.loadFull=function(r,o,e,t,a){var l=function(){var o;if(void 0===r._rollbarDidLoad){o=new Error("rollbar.js did not load");for(var e,n,t,l,i=0;e=r._rollbarShims[i++];)for(e=e.messages||[];n=e.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(o);break}}"function"==typeof a&&a(o)},i=!1,s=o.createElement("script"),d=o.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,e||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,o,e){try{var n;if(n="function"==typeof o?o:function(){return o||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){e&&"function"==typeof e&&e.apply(this,arguments);try{return r.apply(this,arguments)}catch(e){var o=e;throw o&&("string"==typeof o&&(o=new String(o)),o._rollbarContext=n()||{},o._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=o),o}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(o){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,o){"use strict";function e(r,o,e){if(r){var t;if("function"==typeof o._rollbarOldOnError)t=o._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;o._rollbarOldOnError=t}var a=function(){var e=Array.prototype.slice.call(arguments,0);n(r,o,t,e)};e&&(a._rollbarOldOnError=t),r.onerror=a}}function n(r,o,e,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),o.handleUncaughtException.apply(o,n),e&&e.apply(r,n)}function t(r,o,e){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var e,n,t;try{e=r.reason}catch(r){e=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!e&&t&&(e=t.reason,n=t.promise)}catch(r){}e||(e="[unhandledrejection] error getting `reason` from event"),o&&o.handleUnhandledRejection&&o.handleUnhandledRejection(e,n)};n.belongsToShim=e,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,o,e){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(o,r[t].prototype,e)}}function l(r,o,e){if(o.hasOwnProperty&&o.hasOwnProperty("addEventListener")){for(var n=o.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(o,e,t){n.call(this,o,r.wrap(e),t)};t._rollbarOldAdd=n,t.belongsToShim=e,o.addEventListener=t;for(var a=o.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,o,e){a.call(this,r,o&&o._rollbar_wrapped||o,e)};l._rollbarOldRemove=a,l.belongsToShim=e,o.removeEventListener=l}}r.exports={captureUncaughtExceptions:e,captureUnhandledRejections:t,wrapGlobals:a}},function(r,o){"use strict";function e(r,o){this.impl=r(o,this),this.options=o,n(e.prototype)}function n(r){for(var o=function(r){return function(){var o=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,o)}},e="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<e.length;n++)r[e[n]]=o(e[n])}e.prototype._swapAndProcessMessages=function(r,o){this.impl=r(this.options);for(var e,n,t;e=o.shift();)n=e.method,t=e.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],e.ts]):this[n].apply(this,t));return this},r.exports=e},function(r,o){"use strict";r.exports=function(r){return function(o){if(!o&&!window._rollbarInitialized){r=r||{};for(var e,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;e=window._rollbarShims[i++];)n||(n=e.handler),e.handler._swapAndProcessMessages(l,e.messages);window[t]=n,window._rollbarInitialized=!0}}}}]); // End Rollbar Snippet </script> <script src="https://www.google.com/recaptcha/api.js?render=6LdDCakUAAAAAEFI0Kyx_gg9t-G4r1mOWrIwFLd0"></script> <script src="https://leanpub.com/assets/modernizr-a38b94cc0625ba4488942166ee4d23a4.js"></script> <script src="//www.google.com/jsapi"></script> <script src="https://leanpub.com/assets/chartkick-ecf78465738cad825935037ff8bba32a.js"></script> <link rel="stylesheet" media="screen" href="https://leanpub.com/assets/stylesheets/header-bundle-8728bf2b471d478c472b.css" /> <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','//www.google-analytics.com/analytics.js','ga'); ga('create', 'G-XQK3X47PGQ', 'auto'); // Replace with your property ID. ga('require', 'ec'); // Visitor type parameters (only settable from non cached) ga('send', 'pageview'); </script> </head> <body id='static-imagine-a-world'> <div class='flash' id='js-flash-prototype'> <div class='flash__progress-bar'></div> <div class='container--large'> <div class='flash__message'></div> <div class='flash__close-icon'> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="25px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="25px" xml:space="preserve"><path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"></path></svg> </div> </div> </div> <script type='text/javascript'> window.__menu_data__ = null window.__menuPath__ = null window.__hidesStoreContent__ = false </script> <div id='react-header-root'></div> <script> window.__BASE_URL__ = "https://leanpub.com/" </script> <script src="https://leanpub.com/assets/polyfill-bundle-97a137771071b14517a2.js"></script> <script src="https://leanpub.com/assets/header-bundle-8728bf2b471d478c472b.js"></script> <div class='scroll-wrapper' id='scroll-wrapper'> <div class='static-divider'></div> <div class='main ruby-main'> <div class='container--essay'> <p><em>This essay was originally published on May 22, 2022, and was updated on May 25, 2022, August 3, 2022, August 10, 2022, August 15, 2022 and July 21, 2024. These changes are made throughout the essay as needed, and summarized at the bottom of this essay.</em></p> <hr class='scene-break'/> <h2 id="imagine-a-world">Imagine a world…</h2> <p><em>“Imagine a world where authors could make money writing books…”</em></p> <p>One of the first times I said this was in 2010, shortly after Leanpub launched in April of that year. Eric Ries had published the first Leanpub book, <em>Startup Lessons Learned</em>, named after his wildly successful blog. Eric had created a conference, the Startup Lessons Learned conference, and we were there selling his book. That phrase, along with “Publish Early, Publish Often”, was my way of introducing what we were trying to accomplish with Leanpub.</p> <p>Well, it’s been just over 12 years since then, so it’s time to reflect on what Leanpub has become, and more importantly, to make some changes. (The changes are summarized at the bottom of this essay, so skip to the bottom if you want the short version!)</p> <p>Here are three of the things I’m happiest about:</p> <ol class="numeric"> <li>We’ve built the best way in the world to write a book or course in plain text. This is <a href="http://markua.com/">Markua</a>, our dialect of Markdown, which is now fully specified. We’ve shipped and fully documented an <a href="https://leanpub.com/markua">earlier version</a> of Markua, which is how most books and courses are written on Leanpub today, and we’ve launched a beta of the full Markua spec on Leanpub.</li> <li>We’ve gained some traction among computer programming and data science book authors. Leanpub is a first-class option for these authors, since our workflow where you write in Markdown, store versions of your book in Git, collaborate via GitHub and publish with one click is the most productive way for many of these types of books to be created.</li> <li>At the time of this writing, we’ve paid authors $11,592,641 USD in royalties. Not only that, but the impact on a number of our authors’ careers has been much higher. We’ve done this by putting authors first, paying an 80% royalty rate (meaning an author earns $16 on a $20 sale), and focusing on building what our authors need.</li> </ol> <p>For better and for worse, we’ve done all of this as a bootstrapped startup. From 2010 to 2019 we did consulting work to fund Leanpub, and from 2019 onward, Leanpub has funded itself. Leanpub has never raised a dollar of investment from anyone. (Arguably, this may have been a mistake, but counterfactual thinking isn’t helpful. We are here now, regardless of what could have happened differently.)</p> <p>Today, Leanpub is stable and established. If we just continued on our current path, over the next 20 years Leanpub would continue to make incremental improvements, and we would probably pay our authors another $20M or $30M in royalties. We’d have built a small team in Victoria, BC, and we’d have made a positive, modestly successful thing in the computer programming and data science book community.</p> <p>But this would be bittersweet.</p> <p>On a personal level, in 2010 a much younger me was saying things like “Imagine a world where authors could make money writing books.” If I woke up 20 years from now in 2042 with the expected outcome having happened, this outcome would be good, but in terms of making a positive impact on the world, it certainly wouldn’t be “Imagine a world”-level of good. And while I could spend some time in the subsequent 20 or so years convincing myself it had been good enough, there would certainly be some disappointment: it feels like Leanpub is capable of so much more.</p> <p>Much more importantly, this would be bittersweet for our authors. Many of them have had their lives positively impacted by Leanpub: if you listen to our <a href="https://leanpub.com/podcasts/frontmatter">Frontmatter podcast</a> that Len does, you can hear many of their stories. This is one of the things I’m happiest about. However, I also feel that we could have done so much more for our authors, if only we were better at <em>making money on the internet</em>.</p> <p>So, what to do?</p> <p>Well, first and foremost, it’s important to appreciate the scope of the problem. It’s not “how should authors write books and create courses?”. With Markua, we’ve figured that out.</p> <p>It’s also not “when should authors publish their books and courses?”. With <a href="https://leanpub.com/lean">Lean Publishing</a>, we have a coherent, internally-consistent set of ideas here as well. Publishing in-progress helps authors attract those early readers and learners who are so important–not only for the quality of the book or course, but also for the morale of the author.</p> <p>The problem is actually really, really simple:</p> <p><em>How can we change Leanpub to help our authors make more money?</em></p> <p>We can’t just do something like “spend a bunch of money on ads”: since we pay 80% royalties and since PayPal or Stripe take a few percent, we end up earning about 15 cents on every dollar that is spent. This is a perfectly good margin, and it’s in line with our values: we strongly believe that authors should earn the most of anyone from their books and courses–they’re <em>their books and courses</em> after all.</p> <p>However, this does mean that when we’re earning about $3 on a $20 book, we can’t afford to effectively buy ads to sell that book. We’re competing on keywords with places which earn a lot more than $3 when acquiring a new customer.</p> <p>We’ve been doing a lot of thinking about this lately, and have realized a number of things. So, we are shipping four features, all focused on the same goal: helping our authors make more money.</p> <p>The first three features are incremental improvements; the big feature is last.</p> <h3 id="community-edition">1. Community Edition</h3> <p>The first feature is the Community Edition.</p> <p>One way that an author can grow a reader base is by getting reader email addresses in exchange for something of value, and then sending a “drip email” campaign to those readers. The best type of drip email campaigns focus on teaching something useful, and at the end there is an upsell for the reader to buy a book or course.</p> <p>So, we’re adding a feature which automates as much of this as possible.</p> <p>The idea is to create a Community Edition, which is an expanded subset of a book. (The ideal community edition is probably something around 5 chapters: bigger than a sample book, but smaller than the full book. Typically, a good sample book would be about 10% of the full book; a good Community Edition would be 20% to 30% of the full book.)</p> <p>Using the Markua 0.30 beta, an author can now use Markua annotations to designate some sections of their book as being part of a Community Edition, in a similar way to how sample books are generated today. They can then generate a Community Edition of their book when previewing or publishing. If a book with a Community Edition is published, we automatically create an attractive landing page for the Community Edition, based on the sections that the author filled in using the author app.</p> <p>Then, readers can get the Community Edition for free by providing their email address on the landing page. This causes the Community Edition to be added to the reader library in a special section for Community Editions.</p> <p>When a reader provides their email address to get a Community Edition, their email address is shared with the author. The author can add the email address to an email list service like MailChimp, and then send drip email campaigns to upsell for the full book.</p> <p>Someday we may expand our Community Edition feature into something which can also manage the email campaigns, so that a separate service is not required. This actually does make sense for Leanpub to do, since we could not only support individual author email campaigns, but we could also optionally support larger, aggregated ones across entire book categories. So, say, a reader could opt in to receive, say, a weekly Leanpub JavaScript email, as well as those from a particular author.</p> <p>But we can’t do everything at once, so we’re shipping an MVP version of the Community Edition feature now. It’s not perfect yet, by any means. But we’ve seen some of our authors use a handful of services to achieve something like the Community Edition feature, and we want to make this workflow as easy for them as possible. We hope it’s helpful for you.</p> <h3 id="tracks-and-organizations">2. Tracks and Organizations</h3> <p>The second feature is a couple of name changes.</p> <p>First, we are renaming “Course Sets” to “Tracks”. If you don’t know what a Course Set is, it’s exactly that: a set of courses which can be completed in any order, and which you get a certificate for completing at a high enough achievement level.</p> <p>However, “Course Set”, while descriptive enough, is a terrible name. “Track” is way better.</p> <p>A Track is currently just a renamed Course Set. It’s still a set of courses you complete in any order to earn a certificate for the Track.</p> <p>In the future, we may expand Tracks to also support a defined order of course completion, possibly with course prerequisites. Once we do this, the “Track” name will be even more appropriate than it currently is, since there is an implied ordering. But for now, it’s just a rebrand.</p> <p>Now that Tracks have a good name, you may wonder why you don’t see more of them on our homepage, and why we don’t even have a search page devoted to Tracks. This will be added in time. For now, the only way you can find a Track is via the featured Track on our homepage, or by directly navigating to the Track’s landing page.</p> <p>Second, we’ve renamed “Company” to “Organization”. Leanpub is used by organizations of all types, from companies to publishers to non-profits to universities. These can all be described as organizations, so that’s a far better word to use.</p> <h3 id="lower-non-free-minimum-prices">3. Lower Non-Free Minimum Prices</h3> <p>The third feature is a pricing change we made in May 2022, and then reversed course on in July 2024.</p> <p>In May 2022, we raised the minimum paid prices of books, bundles, courses and tracks.</p> <p>In July 2024, we lowered the minimum paid prices of books to 99 cents, and of bundles, courses and tracks to $7.99. We also added two royalty tiers:</p> <ol class="numeric"> <li><strong>We pay 80% royalties on purchases of $7.99 or more.</strong> This is identical to the previous royalty rate. You can purchase <strong>books, bundles, courses and tracks for $7.99 or more</strong>.</li> <li>We pay <strong>80% royalties minus a 50 cent flat fee</strong> on purchases between <strong>$0.99 and $7.98</strong>. You can purchase books for $0.99 and up.</li> </ol> <p><strong>You earn $8 on a $10 sale, and $16 on a $20 sale</strong>. So, if we sell <strong>5000 non-refunded copies of your book for $20</strong>, you’ll earn <strong>$80,000</strong>.</p> <p>So, in May 2022, we made it that you could not purchase anything between <strong>$0.99 and $7.98</strong>. In July 2024, we made it that you could purchase <strong>books between $0.99 and $7.98</strong>, but with a flat 50 cent fee subtracted from the royalties paid. <strong>(You can also purchase books for $7.99 and up, of course, without the 50 cent flat fee.)</strong></p> <p>With our adding AI translations, there are many countries in the world where $7.99 USD is way too high a minimum price: $7.99 USD in the USA is one or two cups of coffee at Starbucks, but in some countries it’s a meaningful purchase. So, it’s too high a minimum, especially for genre fiction which is often an impulse purchase. So, we lowered the minimum paid price of books to $0.99 USD. Now, to make this profitable to do for Leanpub, we pay <strong>80% royalties minus a 50 cent flat fee</strong> on purchases between <strong>$0.99 and $7.98</strong>.</p> <p><strong>For purchases of $7.99 or more, we still pay 80% royalties. So, if you do not change your minimum paid price, this change has no effect on you: you still earn $8 on a $10 sale, and $16 on a $20 sale.</strong></p> <p>Also, since bundles, courses and tracks now have a $7.99 minimum price, this 50 cent flat fee will not apply to them.</p> <h3 id="reader-memberships-with-a-50-author-revenue-share">4. Reader Memberships with a 50% Author Revenue Share</h3> <p>We’re calling these “Reader Memberships”, but yes, these are essentially subscriptions.</p> <p>Now, how will we do this? How can we have Reader Memberships when readers are still purchasing individual books, bundles, courses and tracks for money?</p> <p>We obviously can’t have an “all access” Reader Membership: <em>our authors own the copyright to their books and courses, and our authors set their own prices.</em> (Well, subject to our minimum and maximum prices, of course, which we just increased!)</p> <p>So, what to do?</p> <p>This has been the conundrum I’ve been wrestling with on and off for a long time.</p> <p>For a long time, I thought that the way we would eventually solve it was by adding a number of premium reader features, and then charging readers for access those features. (There are a lot of premium features we could build for our readers, such as reviews, public profiles, Steam-style curator lists, etc.)</p> <p>However, when thinking about premium reader features, it’s clear that we would actually want to make these features available for all our readers, in order to increase engagement. So, while better reader features would help increase sales, they wouldn’t help us sell Reader Memberships, since they would all be free.</p> <p>It turns out the solution is actually simple and obvious. It preserves everything we like about our current model, while helping our authors make more money from their books and courses. It even helps our authors make money from free purchases of their books and courses!</p> <p>Here’s the short version:</p> <hr class='scene-break'/> <p><strong>Leanpub will require a Reader, Standard or Pro Membership for most Free purchases, except for Products (Books, Bundles, Courses and Tracks) purchased with Free Coupons or if the Product was Opted Out by the Primary Author or Organization.</strong></p> <p><strong>Reader, Standard or Pro Memberships can be purchased on a recurring basis for a Monthly or an Annual term, or on a one-time basis for a One Year or a Lifetime term.</strong></p> <p><strong>50% of the revenue from Reader Memberships will go into a Reader Membership Pool, which will be split on a per-membership basis, based on the free purchases which did not use Free Coupons and were not of Opted Out products.</strong></p> <p><strong>This Reader Membership Pool revenue will be paid Annually to the Authors and Organizations whose Products were purchased for free using a Reader Membership, enabling Authors and Organizations to earn money from free purchases which required a Reader Membership. Paid purchases of Books, Bundles, Courses and Tracks do not require a Membership and still pay 80% royalties.</strong></p> <hr class='scene-break'/> <p>Since Reader Memberships can be used for books, bundles, courses and tracks, you may have wondered why we called them “Reader Memberships”, since that seems to imply just books. Well, Leanpub started with just books, and we like the term “Reader” more than the term “Learner”. Since you also read when you take a course or track, we’re calling them Reader Memberships, not Learner Memberships. We hope you learn something too, of course!</p> <p>A Reader Membership is a great deal, by the way: there are currently about 2000 books and 50 courses with free minimum prices on Leanpub, and many of them are about computer programming or data science. So, even if you only find a few that you’re interested in, you’re getting an amazing value!</p> <p>(If you want to see the many books, bundles and courses which have a free minimum price, we have recently added a Free Minimum Price filter to the store. If you were wondering why we did that, well, now you know!)</p> <p>From this one idea, and from our values (specifically, that authors should have the control and should earn the most money from their books and courses), the rest of the details come naturally:</p> <ol class="numeric"> <li>Leanpub Books, Bundles, Courses and Tracks are all Products which can have free minimum prices.</li> <li>Paid purchases of Products do NOT require a Reader, Standard or Pro Membership and still pay 80% royalties, regardless of whether the minimum price of the Product was free or paid. Paid purchases are totally unaffected by the Membership changes described below. To be clear: Leanpub still works exactly the way it did before for all paid purchases, regardless of whether the minimum price is free or paid.</li> <li>A Reader, Standard or Pro Membership is now required for free purchases of Products with free minimum prices, except for three cases: <ul> <li>a free coupon was used</li> <li>the Product has been opted out of receiving Reader Membership Pool Revenue</li> <li>the Product is Fan Fiction</li> </ul> </li> <li>Regardless of whether a Product is opted in or opted out from receiving Reader Membership Pool Revenue, free coupons still make a Product completely free, with no Reader, Standard or Pro Membership required.</li> <li>Authors and organizations now have a default setting which determines whether new Products that they create will be included or excluded from receiving Reader Membership Pool Revenue. By default, all authors are opted in to receiving Reader Membership Pool Revenue, and by default, all organizations are opted out from receiving Reader Membership Pool Revenue.</li> <li>If a Product is purchased using a free coupon, this purchase does NOT count toward any Reader Membership Pool Revenue, even if the Product is part of the Reader Membership Pool Revenue program. Other free purchases which did not use a free coupon and which were made while the Product had a Reader, Standard or Pro Membership requirement do still count, of course. The existence of any free coupons has no effect on them.</li> <li>If a Product is opted out from receiving Reader Membership Pool Revenue, then every free purchase of that Product while it is opted out is completely free, with no Reader, Standard or Pro Membership required for a free purchase.</li> <li>Any Product can be opted out from receiving Reader Membership Pool Revenue. The primary author of any Book or Course, or the creator of the Bundle or Track, can choose whether a given Product is opted in or out from receiving Reader Membership Pool Revenue.</li> <li>Products which are Fan Fiction can <em>only</em> be purchased for $0 on Leanpub: the easiest way to ensure that there is no issue around who is entitled to any revenue from Fan Fiction is to ensure that <em>there isn’t any</em>. So, to ensure that this is still the case, Fan Fiction will not be eligible to any Reader Membership Pool Revenue.</li> <li>A Reader Membership can be purchased as a Monthly or Annual subscription (which auto-renew), as a One Year Reader Membership (which does not auto-renew), or as a Lifetime Reader Membership. Lifetime Reader Memberships are discussed separately below in point #15.</li> <li>A One Year Reader Membership does NOT auto-renew. Instead, if it has expired, it will need to be renewed the next time the reader wants to make a free purchase. This is similar to how many Costco Memberships work: they just expire and are renewed at checkout the next time you do a transaction. When a free book, bundle, course or track is added to their cart by a reader who does not have a Reader Membership, we now automatically add an annual Reader Membership to the cart, along with a clear explanation of the Reader Membership and its benefits. If the reader increases the price of all products in their cart to be above $0, then we will automatically remove the Reader Membership from their cart.</li> <li>A Monthly Reader Membership and an Annual Reader Membership do both auto-renew. A reader must sign up for a Monthly Reader Membership or an Annual Reader Membership separately from making a purchase, much like how an author signs up for a Standard or Pro Membership.</li> <li>50% of the revenue from each Reader Membership is put into a Reader Membership Revenue Pool, and is paid out proportionally (the weighting is discussed below) to the authors and organizations whose Products were purchased for free (without using free coupons) as part of that Reader Membership. This way, authors can earn money from free purchases which require a Reader Membership.</li> <li>Regardless of whether a Reader Membership is monthly, annual or one year, the Reader Membership Pool Revenue for an individual Reader Membership is split among the authors of the Products which were purchased, and the split is weighted by suggested price and author royalty percentage. The Reader Membership Revenue Pool revenue for an individual Reader Membership is split on an annual (365-day) basis. To be clear: this 365-day period is true for both annual and monthly Reader Memberships. The reason for this is to weight the revenue from free Product purchases more fairly: our expectation is that some months will have many Product purchases, others will have none, and others may only have 1 or 2. If we split revenue on a month-by-month basis with monthly Reader Memberships, some authors would be compensated unfairly. Instead, by splitting the revenue on an annual basis, we add a large initial delay in payment, but the split itself is a lot more fair. Since the revenue share split is calculated separately for each individual Reader Membership, this helps prevent a bad actor from gaming the system. The Reader Membership Pool Revenue calculation and split is done on an individual reader account basis once every 365 days, for both annual and monthly Reader Memberships, to weight the revenue more fairly. So, the Reader Membership Pool Revenue for each individual Reader Membership has the split calculated annually, based on the initial signup date of the Reader Membership. Reader Membership Pool Revenue which has been split annually is paid during the following month’s royalty payments, just like normal Leanpub royalties.</li> <li>Lifetime Reader Memberships: When we launched Reader Memberships in May 2022, we launched with Annual Memberships. Then, we followed up with monthly Reader Memberships for a monthly fee. Now, we’re <a href="/membership">selling Lifetime Reader Memberships</a> as well. This is a great deal for readers, because the price will never go up for them! (Imagine how much you’d save with a lifetime Costco or Netflix membership!) For authors, we’re sharing 50% of the Lifetime Reader Membership revenue of course, in a very similar way to what we do with the Monthly and Annual Reader Memberships. The difference is the time period: it’s split over 5 years, so as to share the revenue in an appropriate way. The Lifetime Reader Membership has its Reader Membership Revenue Pool contribution split into 5 equal annual portions. (It would be inappropriate to pay out all the Reader Membership Revenue Pool during the first year of a Lifetime Membership, but it would also be inappropriate to spread it out over a decade or more.) For more information, see section 11.2.7 Reader Membership Revenue Pool Allocation of our updated <a href="/terms">Terms of Service</a>.</li> <li>Standard Memberships and Pro Memberships do NOT contribute any revenue to the Reader Membership Pool Revenue. The Reader Membership Pool Revenue is funded entirely from 50% of the revenue from Reader Memberships. Since Standard Memberships and Pro Memberships do not contribute to the author revenue share, we humbly request that our authors support their fellow authors by voluntarily paying the suggested prices for their Products.</li> <li>The Reader Membership Pool Revenue from an individual Reader Membership is split between the Products which were purchased for free, each weighted according to their suggested prices. Within a given Bundle or Track, the royalties are split among the Books or Courses according to their weight in the Bundle or Track. Within a given Book or Course, the royalties are split among the coauthors according to the royalty percentages for each Book or Course. Our view is that while this approach is not perfect, it is preferable to a simple count: a $7.99 suggested price Book should not count as much as a $29 or $49 suggested price Book, a $129 suggested price Course, or a $499 suggested price Track. (If, however, we determine that a suggested price is being set abusively high in an attempt to game the system, we may treat the suggested price as a lower amount, possibly even the minimum price, for the purposes of the Reader Membership Pool Revenue split.)</li> <li>The reason we weight according to royalty percentage within each Bundle or Track, and then within each Book or Course is to respect the wishes of the authors for how they divide their royalties, just as we do with paid purchase royalties. Note that when we are splitting the revenue share from each Reader Membership between Books, Bundles, Courses and Tracks, we round down to the nearest penny for each Book, Bundle, Course or Track, and also when splitting the royalties of a Book or Course between multiple authors. In both cases, Leanpub keeps any fractions of pennies which result. (Yes, this is very much like the plot of <em>Office Space</em>–except this is being done in a totally straightforward and transparent way!)</li> <li>A reader with a Reader Membership still must make individual free or paid purchases of Products. This way, since most readers will only make free purchases of Products they are interested in, the weighted revenue share of Reader Membership revenue for free purchases will be distributed reasonably fairly. Individual free purchases of Products are just like paid purchases: in both cases, they are added to the reader’s Leanpub Library, and the reader gets free updates whenever the author publishes an update.</li> <li>Community Editions of Books are not affected by this: you can download a free Community Edition of a Book without having a Reader Membership, and Community Edition downloads do not count toward the royalty split of the Reader Membership Revenue Pool. Our hope is that Community Edition downloads encourage readers to buy the book at the suggested price or to sign up for a Reader Membership.</li> <li>Free Products can no longer be given as gifts or made as guest purchases, since there would be too much complexity around Reader Memberships. (Yes, it would have been possible to exempt Products which had opted out of receiving Reader Membership Pool Revenue from this, but it would have been extremely confusing to our readers that some free purchases could be gifts and others could not.)</li> </ol> <p>Finally, while this sounds like a lot of change, it is important to emphasize that for those Leanpub authors whose books, bundles, courses or tracks have paid minimum prices, Leanpub still works exactly the way it did before. Your book or course still has a paid minimum and suggested price, and readers will still use the same variable pricing sliders and add your book or course to their cart as they did before. Gifts and guest purchases of your book or course function just like they used to.</p> <p>So, that’s it.</p> <p>These four features are now live, and they are all long overdue. Together, we think they will help our authors directly make more money and help us invest even more in building the Leanpub that our authors and our readers deserve.</p> <p>Leanpub has already paid our authors $11,592,641 USD in royalties. I would love to wake up in 20 years with that number not just being about 3x that amount, but instead being 10x or 100x that amount.</p> <p><em>Imagine a world where authors have earned a billion dollars in Leanpub royalties…</em></p> <p>(We’re over 1% of the way there already, which is something.)</p> <p>To all our Leanpub authors, thank you very much for being a Leanpub author. Many of you have been with us for a decade or more; we greatly appreciate all your support over the years.</p> <p>Similarly, many Leanpub readers have been with us for years, and some have bought dozens of Leanpub books. We are extremely grateful for your support over the years as well.</p> <p>Thank you very much to everyone who is a Leanpub reader, a Leanpub author or both! We are so glad that you are here.</p> <p>Peter Armstrong</p> <p>May 25, 2022</p> <p><em>(edited August 3, 2022)</em></p> <hr class='scene-break'/> <p>P.S. Here’s the summary…</p> <ol class="numeric"> <li><strong>Products</strong>: Books, Bundles, Courses and Tracks are all Products which can have free or paid minimum and suggested prices.</li> <li><strong>Paid Purchases</strong>: Authors still earn <strong>80% royalties on all paid purchases</strong>, still set their minimum and suggested prices, and still own their copyright. <strong>Reader, Standard or Pro Memberships are NOT required to make any paid purchase. Paid purchases are unaffected by the Membership changes described below.</strong></li> <li><strong>Reader Memberships</strong>: A Reader, Standard or Pro Membership is now required for <strong>free purchases</strong> of Products with free minimum prices, <strong>except for three cases</strong>: <ul> <li>a free coupon was used</li> <li>the Product has been opted out of receiving Reader Membership Pool Revenue</li> <li>the Product is Fan Fiction</li> </ul> </li> <li>Regardless of whether a Product receives Reader Membership Pool Revenue, <strong>free coupons still make a Product completely free</strong>, with no Reader, Standard or Pro Membership required. Purchases made with free coupons <strong>do NOT count toward any Reader Membership Pool Revenue</strong>.</li> <li>If a Product is opted out from receiving Reader Membership Pool Revenue, then every free purchase of that Product while it is opted out is completely free, with no Reader, Standard or Pro Membership required for a free purchase.</li> <li>A <strong>Reader Membership</strong> can be purchased <strong>monthly</strong> (auto-renew), <strong>annually</strong> (auto-renew), for <strong>one year</strong> (no auto-renew) or <strong>lifetime</strong>. Either way, <strong>50% of the revenue</strong> from each <strong>Reader Membership</strong> is put into a <strong>Reader Membership Revenue Pool</strong>, and is paid out proportionally to authors and organizations whose Products were purchased for free (<strong>without using free coupons</strong>) as part of that Reader Membership. This way, authors can earn money from free purchases which require a Reader Membership. The Reader Membership Pool Revenue calculation and split is done on an individual reader account basis once every 365 days for Monthly Reader Memberships and Annual Reader Memberships and once a year for 5 years for Lifetime Reader Memberships, to weight the revenue more fairly. So, the Reader Membership Pool Revenue for each individual monthly or annual Reader Membership has the split calculated annually, based on the initial signup date of the Reader Membership. Lifetime Reader Memberships essentially function like 5 consecutive Annual Reader Memberships in terms of how they pay out into the Reader Membership Revenue Pool. In all cases, Reader Membership Pool Revenue which has been split annually is paid during the following month’s royalty payments, just like normal Leanpub royalties. (Since Reader Memberships will be created throughout the year, this will result in us paying royalties from the Reader Membership Pool Revenue on a monthly basis, but after an initial one year delay.) The Reader Membership Pool Revenue split is weighted between Products by their suggested price, and split within a Product by royalty percentages.</li> <li>Standard and Pro Memberships <strong>do not contribute any revenue</strong> to the Reader Membership Pool Revenue. The Reader Membership Pool Revenue is funded entirely from 50% of the monthly and annual revenue from Reader Memberships.</li> <li><strong>Different Non-Free Minimum and Maximum Prices</strong>: The minimum and maximum non-free prices are now different. The prices <em>(p)</em> which are allowed are now as follows: <ul> <li><strong>Books</strong>: $0 or <strong>$0.99</strong> ≤ <em>p</em> ≤ $25,000</li> <li><strong>Bundles</strong>: $0 or <strong>$7.99</strong> ≤ <em>p</em> ≤ $25,000</li> <li><strong>Courses</strong>: $0 or <strong>$7.99</strong> ≤ <em>p</em> ≤ $25,000</li> <li><strong>Tracks</strong>: $0 or <strong>$7.99</strong> ≤ <em>p</em> ≤ $25,000</li> </ul> </li> <li><strong>Promote Your Book</strong>: Authors can bid using their royalties for Leanpub to buy Google ads on their behalf, just like they can bid on spots on The Shelf and on sponsored newsletter placement, on the Promote Your Book page in the author app for a given book.</li> <li><strong>Community Edition</strong>: Authors can now give away a subset of their books in exchange for reader email addresses, in order to collect email addresses to add to their own newsletters. This will help authors send drip email campaigns to increase demand for their books. Community Edition free downloads do not require a Reader Membership.</li> <li><strong>Tracks and Organizations</strong>: Course sets are now called Tracks, since the name is better. Companies are now called Organizations, since the name is more generic. Leanpub is for non-profits and universities too!</li> </ol> <p><em>May 25, 2022 edits:</em></p> <p>In terms of what changed on May 25, 2022 from the essay published on May 22, 2022, the five noteworthy changes were the following:</p> <ol class="numeric"> <li>Any Product (i.e., a Book, Bundle, Course or Track) can now be <strong>completely opted out</strong> of receiving Reader Membership Pool Revenue. If this is done, then every free purchase of the Product is completely free, with <strong>no Reader, Standard or Pro Membership required</strong>.</li> <li><strong>Free coupons once again make a Product completely free</strong>, with no Reader, Standard or Pro Membership needed.</li> <li><strong>Reader Memberships</strong> now can be purchased <strong>monthly</strong> as well as <strong>annually</strong>. In both cases, the Reader Membership Revenue Pool contribution is <strong>50% of the revenue from the membership</strong>, and the split is <strong>calculated annually</strong> (with pro-rated revenue if a monthly Reader Membership was cancelled) for each Reader Membership.</li> <li>All free purchases made with <strong>free coupons</strong> or of Products which are <strong>opted out</strong> of the Membership requirement <strong>are now excluded from earning Reader Membership Pool Revenue</strong>. Now that any Product can be opted out and now that free coupons are truly free, this change is needed to ensure that Reader Membership Pool Revenue gets shared fairly.</li> <li>The maximum prices of Books, Bundles, Courses and Tracks were lowered to something more reasonable.</li> </ol> <p>Both the changes described in the initial essay and the updates being made now have the same goal: to help authors earn more money from their books and courses, and even to earn money from some of their free book and course purchases, while helping grow Leanpub to become even better for our authors.</p> <p>We are very excited about the effect that these changes will have for our authors. However, this is just the beginning. In the future, we plan to also offer monthly and annual <strong>Team Memberships and Enterprise Memberships</strong> to companies of all sizes, and these will also contribute to the Reader Membership Pool Revenue, of course. So, we encourage our authors to leave their books, bundles, courses and tracks requiring a Reader Membership, so that they can benefit from this Membership revenue both now and in the future.</p> <p>Finally, I would like to personally thank all the authors who gave us such thoughtful and passionate feedback over the past few days: you helped us improve these features for everyone, and we are deeply grateful.</p> <p><em>August 3, 2022 edits:</em></p> <p>In terms of what changed on August 3, 2022, there were three changes:</p> <ol class="numeric"> <li>We removed the “Promote Your Book” feature discussion: not enough authors were interested in it. Doing this lowered the number of features discussed from five features down to four features.</li> <li>We raised the price of the monthly Reader Membership.</li> <li>We added a Lifetime Reader Membership.</li> </ol> <p><em>August 10, 2022 edits:</em></p> <p>In terms of what changed on August 10, 2022, there were three changes:</p> <ol class="numeric"> <li>We raised the price of the one year Reader Membership.</li> <li>We added an Annual Reader Membership.</li> <li>We raised the price of the Lifetime Reader Membership.</li> </ol> <p><em>August 15, 2022 edits:</em></p> <p>In terms of what changed on August 15, 2022, there were scattered changes to remove specific prices, improve wording, and differentiate the One Year and the Annual Reader memberships.</p> <p><em>July 21, 2024 edits:</em></p> <p>With our adding AI translations, there are many countries in the world where $7.99 USD is way too high a minimum price: $7.99 USD in the USA is one or two cups of coffee at Starbucks, but in some countries it’s a meaningful purchase. So, it’s too high a minimum, especially for genre fiction which is often an impulse purchase. So, we lowered the minimum paid price of books to $0.99 USD. Now, to make this profitable to do for Leanpub, we pay <strong>80% royalties minus a 50 cent flat fee</strong> on purchases between <strong>$0.99 and $7.98</strong>.</p> <p><strong>For purchases of $7.99 or more, we still pay 80% royalties. So, if you do not change your minimum paid price, this change has no effect on you: you still earn $8 on a $10 sale, and $16 on a $20 sale.</strong></p> <hr class='scene-break'/> <p><em>(Yes, these types of edits have a bit of an “Oceania had always been at war with Eastasia” vibe, but the problem is that authors read these essays months or years later and are misled by missing features or different prices, etc. So, I’m keeping this essay current. This is Leanpub, after all: even the essays are published in-progress!)</em></p> </div> </div> <footer class='footer'> <div class='container--small'> <h1 class='footer-logo'> <a href="https://leanpub.com/"><img src="https://leanpub.com/assets/logos/logo-white-96-67-2x-cbf54f68046da93161c6375a4d74259d.png" alt="Logo white 96 67 2x" /> </a></h1> <h3 class='footer-slogan'>Publish Early, Publish Often</h3> <ul class='footer-list-break'> <li> <h5 class='footer-headings'>Path</h5> </li> <li class='footer-descriptions-top'>There are many paths, but the one you're on right now on Leanpub is:</li> <li class='path'> Imagine A World </li> </ul> <div class='footer-links'> <ul class='footer-list'> <ul class='footer-columns'> <li> <h5 class='footer-headings'>READERS</h5> </li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Newsletters</h5> </li> <li><a href="/newsletters">Weekly Sale</a></li> <li><a href="/newsletters">Monthly Sale</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Store</h5> </li> <li><a href="/">Home</a></li> <li><a href="/redeem">Redeem a Token</a></li> <li><a href="/bookstore/book?search">Search</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Support</h5> </li> <li><a href="https://help.leanpub.com/en/articles/3788293-the-leanpub-faq">Leanpub FAQ</a></li> <li><a href="https://help.leanpub.com/en/articles/4405350-leanpub-author-faq">Leanpub Author FAQ</a></li> <li><a href="https://help.leanpub.com/en/">Search our Help Center</a></li> <li><a href="https://help.leanpub.com/en/articles/110768-if-i-can-t-find-an-answer-to-my-question-in-this-help-center-what-should-i-do">How to Contact Us</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-headings'>FRONTMATTER PODCAST</h5> </li> <li><a href="/podcasts/featured">Featured Episode</a></li> <li><a href="/podcasts/frontmatter">Episode List</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-headings'>MEMBERSHIPS</h5> </li> <li><a href="/reader_memberships">Reader Memberships</a></li> <li><a href="/departmentmemberships">Department Reader Memberships</a></li> <li><a href="/author_memberships">Author Memberships</a></li> <li><a href="/membership">Your Membership</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-headings'>COMPANY</h5> </li> <li> <h5 class='footer-list-title'>About</h5> </li> <li><a href="/about">About Leanpub</a></li> <li><a href="/blog">Blog</a></li> <li><a href="/contact">Contact</a></li> <li><a href="/press">Press</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Essays</h5> </li> <li><a href="/ai_services">AI Services</a></li> <li><a href="/imagine_a_world">Imagine a world...</a></li> <li><a href="/manifesto">Manifesto</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>More</h5> </li> <li><a href="/partner_program">Partner Program</a></li> <li><a href="/causes">Causes</a></li> <li><a href="/accessibility">Accessibility</a></li> </ul> </ul> <ul class='footer-list'> <ul class='footer-columns'> <li> <h5 class='footer-headings'>AUTHORS</h5> </li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Write and Publish on Leanpub</h5> </li> <li><a href="/create/book">Create a Book</a></li> <li><a href="/author_dashboard/new_bundle">Create a Bundle</a></li> <li><a href="/create/course">Create a Course</a></li> <li><a href="/course_set_admin/leanpub/course_sets/new">Create a Track</a></li> <li><a href="/testimonials">Testimonials</a></li> <li><a href="/authors">Why Leanpub</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Services</h5> </li> <li><a href="/course_ai/buy">CourseAI</a></li> <li><a href="/translate_ai/buy">TranslateAI</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Author Newsletter</h5> </li> <li><a href="/newsletters">The Leanpub Author Update</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Author Support</h5> </li> <li><a href="https://help.leanpub.com/author-help">Author Help Center</a></li> <li><a href="https://community.leanpub.com/c/authors">Leanpub Authors Forum</a></li> <li><a href="https://leanpub.com/manual/read">The Leanpub Manual</a></li> <li><a href="/help/supported_languages">Supported Languages</a></li> <li><a href="https://leanpub.com/lfm/read">The LFM Manual</a></li> <li><a href="https://leanpub.com/markua/read">Markua Manual</a></li> <li><a href="/help/api">API Docs</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-list-title'>Organizations</h5> </li> <li><a href="/organizations">Learn More</a></li> <li><a href="/p/register">Sign Up</a></li> </ul> <ul class='footer-list-break'> <li> <h5 class='footer-headings'>LEGAL</h5> </li> <li><a href="/terms">Terms of Service</a></li> <li><a href="/takedown">Copyright Policy</a></li> <li><a href="/privacy">Privacy Policy</a></li> <li><a href="/refunds">Refund Policy</a></li> </ul> </ul> </div> <p class='footer-copyright'> *&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;* </p> <p class='footer-copyright'> Leanpub is copyright &copy; 2010-2024 <a href="http://ruboss.com">Ruboss Technology Corp.</a><br/> All rights reserved. </p> <p class='footer-copyright'> This site is protected by reCAPTCHA<br/> and the Google&nbsp; <a rel='noopener noreferrer' target='_blank' href="https://policies.google.com/privacy">Privacy Policy</a> and&nbsp; <a rel='noopener noreferrer' target='_blank' href="https://policies.google.com/terms">Terms of Service</a> apply. </p> </div> </footer> <div id='react-modal'></div> </div> <div class='cookies-banner alert alert--info' style='display: none'> Leanpub requires cookies in order to provide you the best experience. <a class='dismiss link'>Dismiss</a> </div> <script type='text/javascript'> window.addEventListener('load', function() { var shouldShowCookies = document.cookie.indexOf('should_show_cookies') !== -1 if (shouldShowCookies) { var banner = document.querySelector('.cookies-banner') // IE < 9 check if (banner.style.removeProperty) { banner.style.removeProperty('display'); } else { banner.style.removeAttribute('display'); } document.querySelector('.cookies-banner').classList.add('shown') // Note that we have to use vanilla JS here because ujs (remote links) code doesn't live in the react app, and i don't // want to have to write this shit twice. document.querySelector('.cookies-banner .dismiss').addEventListener('click', function() { document.querySelector('.cookies-banner').remove() var xhr = new XMLHttpRequest() xhr.open("POST", "/api/v1/accepted_terms/dismiss_cookies", true); xhr.send() }) } }) </script> <script src="https://leanpub.com/assets/application-88e446d6bb15c5682db3fb765baa70b6.js"></script> <!-- Twitter universal website tag code --> <script> !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='//static.ads-twitter.com/uwt.js', a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); // Insert Twitter Pixel ID and Standard Event data below twq('init','nw0pa'); twq('track','PageView'); </script> <!-- End Twitter universal website tag code --> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10