diff --git a/app.js b/app.js index b8663819c9..bf87e283f5 100644 --- a/app.js +++ b/app.js @@ -1,25 +1,28 @@ // # Ghost main app file -/*global require */ +/*global require, __dirname */ (function () { "use strict"; // Module dependencies. var express = require('express'), - fs = require('fs'), admin = require('./core/admin/controllers'), frontend = require('./core/frontend/controllers'), + api = require('./core/shared/api'), flash = require('connect-flash'), Ghost = require('./core/ghost'), I18n = require('./core/lang/i18n'), - helpers = require('./core/frontend/helpers'), - auth, + helpers = require('./core/frontend/helpers'); + + + + var auth, // ## Variables - /** - * Create new Ghost object - * @type {Ghost} - */ + /** + * Create new Ghost object + * @type {Ghost} + */ ghost = new Ghost(); ghost.app().configure('development', function () { @@ -46,11 +49,13 @@ /** * API routes.. - * @todo convert these into a RESTful, public, authenticated API! + * @todo auth should be public auth not user auth */ - ghost.app().post('/api/v0.1/posts/create', auth, admin.posts.create); - ghost.app().post('/api/v0.1/posts/edit', auth, admin.posts.edit); - ghost.app().get('/api/v0.1/posts', auth, admin.posts.index); + ghost.app().get('/api/v0.1/posts', auth, api.requestHandler(api.posts.browse)); + ghost.app().get('/api/v0.1/posts/:id', auth, api.requestHandler(api.posts.read)); + ghost.app().post('/api/v0.1/posts/create', auth, api.requestHandler(api.posts.add)); + ghost.app().put('/api/v0.1/posts/edit', auth, api.requestHandler(api.posts.edit)); + ghost.app()['delete']('/api/v0.1/posts/:id', auth, api.requestHandler(api.posts.destroy)); /** * Admin routes.. @@ -75,6 +80,10 @@ ghost.app().listen(3333, function () { console.log("Express server listening on port " + 3333); - console.log('process: ', process.env); }); +// }, function (e) { +// console.log(e.toString()); +// }).then(null, function (e) { +// console.log(e.stack); +// }); }()); \ No newline at end of file diff --git a/config.js b/config.js index 28875e22f6..1362072b76 100644 --- a/config.js +++ b/config.js @@ -55,6 +55,19 @@ */ config.homepage.posts = 4; + config.database = { + development: { + client: 'sqlite3', + connection: { + filename: './core/shared/data/testdb.db' + } + }, + + staging: {}, + + production: {} + }; + /** * @property {Object} exports */ diff --git a/core/admin/assets/js/editor.js b/core/admin/assets/js/editor.js index 1a56d386e4..31b1ab13e0 100644 --- a/core/admin/assets/js/editor.js +++ b/core/admin/assets/js/editor.js @@ -56,7 +56,7 @@ function save() { var entry = { title: document.getElementById('entry-title').value, - markdown: editor.getValue() + content: editor.getValue() }, urlSegments = window.location.pathname.split('/'); @@ -64,7 +64,7 @@ entry.id = urlSegments[3]; $.ajax({ url: '/api/v0.1/posts/edit', - method: 'POST', + method: 'PUT', data: entry, success: function (data) { console.log('response', data); diff --git a/core/admin/controllers/index.js b/core/admin/controllers/index.js index c5ad0705c7..c8b9decd43 100644 --- a/core/admin/controllers/index.js +++ b/core/admin/controllers/index.js @@ -1,11 +1,12 @@ +/*global require, module */ (function () { "use strict"; var Ghost = require('../../ghost'), _ = require('underscore'), fs = require('fs'), - Showdown = require('showdown'), - converter = new Showdown.converter(), + when = require('when/node/function'), + api = require('../../shared/api'), ghost = new Ghost(), adminNavbar, @@ -60,14 +61,15 @@ }, 'editor': function (req, res) { if (req.params.id !== undefined) { - ghost.dataProvider().posts.findOne({'id': parseInt(req.params.id, 10)}, function (error, post) { - res.render('editor', { - bodyClass: 'editor', - adminNav: setSelected(adminNavbar, 'blog'), - title: post.title, - content: post.content + api.posts.read({id: parseInt(req.params.id, 10)}) + .then(function (post) { + res.render('editor', { + bodyClass: 'editor', + adminNav: setSelected(adminNavbar, 'blog'), + title: post.get('title'), + content: post.get('content') + }); }); - }); } else { res.render('editor', { bodyClass: 'editor', @@ -76,13 +78,14 @@ } }, 'blog': function (req, res) { - ghost.dataProvider().posts.findAll(function (error, posts) { - res.render('blog', { - bodyClass: 'manage', - adminNav: setSelected(adminNavbar, 'blog'), - posts: posts + api.posts.browse() + .then(function (posts) { + res.render('blog', { + bodyClass: 'manage', + adminNav: setSelected(adminNavbar, 'blog'), + posts: posts.toJSON() + }); }); - }); }, 'settings': function (req, res) { res.render('settings', { @@ -119,47 +122,6 @@ res.redirect('/ghost/debug'); }); } - }, - 'posts': { - 'index': function (req, res) { - - }, - 'create': function (req, res) { - var entry = { - title: req.body.title, - content: req.body.markdown, - contentHtml: '', - language: ghost.config().defaultLang, - status: ghost.statuses().draft, - featured: false - }; - - entry.contentHtml = converter.makeHtml(entry.content); - - ghost.dataProvider().posts.add(entry, function (error, post) { - if (!error) { - console.log('added', post); - res.json({id: post.id}); - } else { - res.json(400, {error: post.errors}); - } - }); - }, - 'edit': function (req, res) { - var entry = { - id: parseInt(req.body.id, 10), - title: req.body.title, - content: req.body.markdown, - contentHtml: '' - }; - - entry.contentHtml = converter.makeHtml(entry.content); - - ghost.dataProvider().posts.edit(entry, function (error, post) { - console.log('edited', post); - res.json({id: parseInt(post.id, 10)}); - }); - } } }; diff --git a/core/admin/views/blog.hbs b/core/admin/views/blog.hbs index 39c36da632..f0aa9bbe0e 100644 --- a/core/admin/views/blog.hbs +++ b/core/admin/views/blog.hbs @@ -18,7 +18,7 @@
Three days ago I released a concept page<\/a> for a lite version of WordPress that I've been thinking about for a long time, called Ghost. I think it's fair to say that I didn't quite anticipate how strong the reaction would be - and I've hardly had time to catch my breath in the last 72 hours.<\/p>\n The response was overwhelming, and overwhelmingly positive. In the first 6 hours my site got 35,000 page views after hitting the number 1 slot on Hacker News<\/a>. As of right now, the traffic count is just over 91,000 page views<\/a> - and Ghost has been featured all over the place. Notable mentions so far include Christina Warren from Mashable, who wrote about it<\/a>. Michael Carney from PandoDaily interviewed me about it<\/a>. Someone even wrote about it in Chinese<\/a>. That's pretty cool.\\n The feedback has been amazing, and while it's impossible to reply to all of the messages individually, I'm getting to as many of them as I can and I want to thank each and every one of you who took the time to send me a message or share the concept because you liked it. Now that the initial storm has died down a bit, I wanted to take some time to answer some of the more common questions and talk about what's next.<\/p>\n The most common question, bizarrely:<\/p>\n This was really the only negativity I got in response to the post, and it surprised me. I put together the concept page as... just that... a concept. It was a way for me to get the ideas out of my head and \"down on paper\" - or so to speak. I used photoshop as a tool<\/em> to write down my idea with text and images. If I used a sketchbook as a tool <\/em>to create images and handwritten notes, then uploaded scans of it, I doubt anyone would complain. The concept page was never supposed to be a finished product because I had no idea if there would be any interest in it. I had no motivation to waste hours coding a custom layout for something might only ever be read by a few people and then forgotten.<\/p>\n Hardware manufacturers make hundreds of foam cutout prototypes of products before they build one with working buttons and screens. I'm aware of all the usability problems with a web page made of images, and equally, foam cutouts without buttons or screens aren't particularly user friendly either. They're not supposed to be.<\/p>\n Let's move on.<\/p>\n Because comments add a layer of complexity that is beyond the core focus of this platform, which is publishing. Again, that's not to say you couldn't have any comments. This could easily be added with a dedicated plugin where you own the data or (as mentioned) there are third party providers such as Disqus, IntenseDebate, Livefyre and Facebook who all have great platforms. The point of this isn't to say \"you can't have comments\" - it's to say \"comments aren't on by default\". It's about simplicity, more than anything else.<\/p>\n <\/a><\/p>\n Sorry, but Tumblr already did this - it's not the future of blogging, it's the past.<\/p>\n Ghost isn't about sharing \"Fuck Yeah [Dogs<\/a>\/Sharks<\/a>\/Girls with Tattoos<\/a>]\" - it's about publishing - which means writing - rather than mashing a few buttons to make sure that everyone can see and appreciate your latest funny picture\/status, which is surely the most funny picture\/status you've ever posted.<\/p>\n Tumblr, Pinterest and Facebook already have this locked down. It's not the future.<\/p>\n The concept page was a way for me to test demand and interest. To see if anyone actually agreed with my frustrations and, more importantly, my solutions. I plucked a random figure of \"10,000 pageviews\" out of the air before I hit the publish button. If it got less than 10,000 pageviews, I would surrender to the fact that it would only ever be an idea. I've now exceeded that goal 9 times over, so yes, I'm looking at how Ghost can now be made into a reality.<\/p>\n Ok, ok - there's a holding page up on http:\/\/TryGhost.org<\/a> - put your email address in.<\/p>\n There's three main ways of going about this, each has merits as well as drawbacks.<\/p>\n 1.) Build it from scratch<\/strong><\/em> - Many people (particularly the Hacker News crowd) expressed the sentiment that there was little point in forking WordPress. When you're going to strip out so much, you get to a point where you might as well start from scratch anyway. Take away the crutches of being stuck with older technologies and put together something which is as sophisticated in code as it is in UI\/UX.<\/p>\n 2.) Fork WordPress<\/strong><\/em> - This was the original idea I put out. Take the WordPress codebase, as is, and modify it to turn it into something new. Initially the codebase is practically the same, which means developers already know it. Then it can change over time and evolve into its own thing.<\/p>\n 3.) Make it a plugin\/extension<\/strong><\/em> - Lots of people asked why Ghost couldn't just be a WordPress plugin. It would certainly be the easiest route of the 3, it's possible to completely remove \/wp-admin\/ and replace with with \/ghost\/ ... but I feel like it kind of misses the point. This route bolts Ghost on, but it's still WordPress under the hood. From a UI\/UX standpoint it would function - but it wouldn't revolutionise anything else. It makes WordPress itself about blogging again, rather than creating something new.<\/p>\n I've spoken to a lot of smart people over the last few days. The one thing that everyone seems to agree on is that a fork is the worst of both worlds. So the one thing that I suggested as a way of making this happen, is the least likely to work in reality. Remember the foam prototype metaphor earlier? Learning and iterating - that's what happening now.<\/p>\n That leaves a choice between WordPress plugin or fresh build. The answer? Both.<\/p>\n A WordPress plugin will act as a proof of concept and a working prototype, initially, because it's easier to leverage the existing WordPress ecosystem to create it than to go into a cave for 6 months trying to build this amazing thing that everyone will have forgotten about.<\/p>\n The plugin will not be perfect. It will add the Ghost UI\/UX and as much functionality as we can cram into it. It will completely remove \/wp-admin\/ and replace it with \/ghost\/ - effectively using WordPress core as a basic foundation to build on top of. It will give people who don't want to switch away from WordPress access to the Ghost UX which they want to have, and it will give people who want the full Ghost platform a taste of what's to come.<\/p>\n It will allow us to develop and learn and iterate on the concept pretty rapidly, which has a great deal of value.<\/p>\n This is step one. Assuming the plugin is actually used by people - it would then justify exploring building the standalone version of Ghost from the ground up. The plugin would subsequently serve as a great marketing tool for the platform. Think of it as an upgrade path. But that's a long way away. Having the idea is the easy part. Making it happen is what counts.<\/p>\n Happily - amongst the thousands of people talking about Ghost for the last few days - several have been talking about how they've already built some working prototypes of my mockups and turned them into WordPress plugins or just local development sites. These will likely go on to be the starting point of the first Ghost plugin.<\/p>\n There's a lot to do, and I'm amazed by the number of people who have offered their help with this. In the next few days I'll be kicking off work on the plugin properly and start putting together a more organised structure which explains how you can get involved and contribute to the project if you're interested. So... watch this space - and thanks for all your support so far.<\/p>\n Follow @TryGhost<\/a><\/p>",
+ "image": "ghostpost.jpg",
+ "language": "en",
+ "status": "published",
+ "featured": true,
+ "created_at": 1352475600601,
+ "created_by": 1
+ },
+ {
+ "title": "Designing emotion",
+ "slug": "designing-emotion",
+ "content": "A terminal plague on the soul: Six words to accurately describe the process of writing a book. I've often read articles by authors (particularly non-fiction authors) about how writing a book was one of the most difficult, frustrating, mind-numbingly hell-ridden surefire path to insanity that they'd ever experienced. Many noted that they'd never do it again. I didn't listen, obviously. It can't be that hard, I thought, there are plenty of books out there and each one of them had an author who managed to pull it off. And if they can do it, so can I.\n\n\nThat was just over two years ago.\n\n A terminal plague on the soul: Six words to accurately describe the process of writing a book. I've often read articles by authors (particularly non-fiction authors) about how writing a book was one of the most difficult, frustrating, mind-numbingly hell-ridden surefire path to insanity that they'd ever experienced. Many noted that they'd never do it again. I didn't listen, obviously. It can't be that hard, I thought, there are plenty of books out there and each one of them had an author who managed to pull it off. And if they can do it, so can I.<\/p>\n That was just over two years ago.<\/p>\n A little more than two years<\/strong> ago, I wrote a blog post that was the beginning of Designing Emotion and @Adii<\/a> and I decided to write it up into a short eBook. It was going to be pretty straightforward, to begin with. We'd come across this new concept that explored the psychology behind design and marketing, and we were going to put together maybe 10,000 words on why we thought it was a big deal. As we started writing, I submitted an article to Web Designer Depot (who I was writing for a lot at the time) on this subject - to gauge interest, and to promote a little bit of what we were doing.<\/p>\n I didn't know, at the time, that Wiley & Sons (the publishing house) scour places like Web Designer Depot looking for potential suckers<\/span>, victims<\/span>, new authors. Within a couple of weeks of the article being published - we'd been approached and offered a contract to write and publish a real<\/em> book on the subject.<\/p>\n I've held off for a long time on telling the next part of this story because, frankly, it's embarrassing and depressing.<\/p>\n Designing Emotion back then was, at best, a half-baked seed that had the potential to one day be an idea, that had the potential to one day be a real concept, that had the potential to one day be a book. Suddenly we were taken from \"Let's write this thing for fun in our free time and put it out ourselves\" to \"Write a 345 part outline for a 200 page book to be written in the next 2 months and published worldwide. Oh, and we'll need to review this 1,245 page contract about royalty terms, advances, and [other shit that sounds important].\"<\/p>\n Gulp.<\/p>\n To cut a long story short: We tried, and it didn't work. There were two main reasons for this:<\/p>\n First - Adii and I already worked the equivalent of 4 full time jobs. Writing a book for a publisher is the equivalent of about 3 more full time jobs that neither of us had time for. We would have struggled to keep up with the writing schedule if the idea was fully formed. The reality was, we were researching, documenting, and writing at the same time as we were learning<\/em> what the hell we were even talking about. In short: we weren't ready to write a book.<\/p>\n Second - Wiley & Sons are best known for publishing the \"For Dummies\" series and, unfortunately, they take a \"For Dummies\" approach to publishing. Our book was going to be about grand ideas, about concepts and new ways of thinking, about exploring subjects that hadn't been explored before. Our commissioning editor (the guy who signed us) seemed to get this, but every other editor we had (and there were several) couldn't wrap their head around it. They wanted us to write a book with numbered bullet points, quick tips, pictures, chapter summaries about what the reader has learned, and a whole host of other things that would make us fit perfectly into the \"For Dummies\" cookie cutter template. We didn't like it, and we fought for over a year to work with the publisher and the editors to try and let us write the book we'd wanted to all along.<\/p>\n About a year ago, we drew a line in the sand and Wiley released us from our contract.<\/p>\n We were frustrated, angry, and thoroughly worn out. Adii bowed out completely at this point, he'd had enough. I don't blame him whatsoever - with a company as large and as profitable as WooThemes - it wasn't really surprising that he wanted to focus his efforts on things that were<\/em> working instead of those that weren't. I had a slightly different perspective, however. Once the manuscript had gotten to about 70% complete, I'd put together a presentation and started giving it at large design, development and marketing conferences all over the world. I still give this presentation now, talking about the building blocks of Designing Emotion - the foundations of the book... and you know what? The feedback, every time, was (and is) unreal. People get it - and they're interested by it. I've had more positive feedback from giving keynotes on this subject than any other - I know that this is something worth talking about.<\/p>\n For that reason - this semi-complete manuscript has haunted my dreams. It started out as a simple idea, progressed into a big idea, transformed into a big book, was utterly destroyed by incompetant editors and reduced to rubble. At one point, our lead editor added the bolded words to the following passage because she believed our readers wold be unclear on what we were talking about: YouTube is the second most popular digital<\/strong> site in the virtual<\/strong> world. - you know, just in case you thought that \"YouTube\" was a physical location somewhere on planet Earth.<\/p>\n Our Amazon pre-order page went from \"delayed\" to \"delayed further\" to \"delayed until further notice\" to \"removed\". People asked, and still do ask, \"What's going on with the book? When can I get it?\"<\/p>\n I haven't even wanted to look at the damn thing for the best part of a year now. It really did kill me. While I was busy failing to complete Designing Emotion, my friend @RobHawkes<\/a> got his own book deal, wrote the book, published the book, sold out of the book and had it go for a second print run. Epic levels of depressing on my part.<\/p>\n So that's the back-story. Sorry, I rambled a bit. Anyway, here's what's happening next:<\/p>\n I'm publishing book myself, one blog-post-length section at a time, on emotion.onolan.org<\/a>. I'm doing it like this for a couple of reasons. First, I've written a proverbial fuck-ton of this thing already, and it seems like a shame not to share it. There's lots of content that I think people who enjoyed my keynote on the subject would find interesting and benefit from in some way. Second, I'm trying to remove all the dreadfully heavy feelings of responsibility that come with the sentence \"I'm writing a book\" so that I can actually finish writing it<\/strong>. Where it<\/strong> is the original idea that Adii and I had years ago to just write something, slightly longer than a blog post, and share it with people.<\/p>\n So, there it is. That's how it's going to go. Once it's finished, I'll look at how to make the entire thing available as one complete piece. For now, I invite you to think of it as a large, interesting, and regularly published blog series. Follow along<\/a>, and tell me what you think.<\/p>\n Oh, and here's the cover - My friend @RickNunn<\/a> photographed it - I designed it. It's been under wraps for too long - I hope you like it.<\/p>\n <\/p>",
+ "image": "depostimg.jpg",
+ "language": "en",
+ "status": "published",
+ "featured": true,
+ "created_at": 1340582400102,
+ "created_by": 1
+ }
+ ],
+
+ settings: [
+ {
+ "key": "url",
+ "value": "http://localhost:3333",
+ "created_by": 1,
+ "updated_by": 1
+ },
+ {
+ "key": "title",
+ "value": "John O'Nolan",
+ "created_by": 1,
+ "updated_by": 1
+ },
+ {
+ "key": "description",
+ "value": "Interactive designer, public speaker, startup advisor and writer. Living in Austria, attempting world domination via keyboard.",
+ "created_by": 1,
+ "updated_by": 1
+ }
+ ],
+
+ users: [
+ {
+ "id": "1",
+ "username": "johnonolan",
+ "first_name": "John",
+ "last_name": "O'Nolan",
+ "email_address": "john@onolan.org",
+ "profile_picture": "logo.png",
+ "cover_picture": "",
+ "bio": "Interactive designer, public speaker, startup advisor and writer. Living in Austria, attempting world domination via keyboard.",
+ "url": "john.onolan.org",
+ "created_by": 1,
+ "updated_by": 1
+ }
+ ]
+
+};
diff --git a/core/shared/data/fixtures/posts.json b/core/shared/data/fixtures/posts.json
deleted file mode 100644
index 14b15644fe..0000000000
--- a/core/shared/data/fixtures/posts.json
+++ /dev/null
@@ -1,24 +0,0 @@
-[
- {
- "title": "Ghost: from fiction to function",
- "content": "Three days ago I released a concept page<\/a> for a lite version of WordPress that I've been thinking about for a long time, called Ghost. I think it's fair to say that I didn't quite anticipate how strong the reaction would be - and I've hardly had time to catch my breath in the last 72 hours.\n\nThe response was overwhelming, and overwhelmingly positive. In the first 6 hours my site got 35,000 page views after hitting the number 1 slot on Hacker News<\/a>. As of right now, the traffic count is just over 91,000 page views<\/a> - and Ghost has been featured all over the place. Notable mentions so far include Christina Warren from Mashable, who wrote about it<\/a>. Michael Carney from PandoDaily interviewed me about it<\/a>. Someone even wrote about it in Chinese<\/a>. That's pretty cool.\n\n\nThe feedback has been amazing, and while it's impossible to reply to all of the messages individually, I'm getting to as many of them as I can and I want to thank each and every one of you who took the time to send me a message or share the concept because you liked it. Now that the initial storm has died down a bit, I wanted to take some time to answer some of the more common questions and talk about what's next.\n Three days ago I released a concept page<\/a> for a lite version of WordPress that I've been thinking about for a long time, called Ghost. I think it's fair to say that I didn't quite anticipate how strong the reaction would be - and I've hardly had time to catch my breath in the last 72 hours.<\/p>\n The response was overwhelming, and overwhelmingly positive. In the first 6 hours my site got 35,000 page views after hitting the number 1 slot on Hacker News<\/a>. As of right now, the traffic count is just over 91,000 page views<\/a> - and Ghost has been featured all over the place. Notable mentions so far include Christina Warren from Mashable, who wrote about it<\/a>. Michael Carney from PandoDaily interviewed me about it<\/a>. Someone even wrote about it in Chinese<\/a>. That's pretty cool.\\n The feedback has been amazing, and while it's impossible to reply to all of the messages individually, I'm getting to as many of them as I can and I want to thank each and every one of you who took the time to send me a message or share the concept because you liked it. Now that the initial storm has died down a bit, I wanted to take some time to answer some of the more common questions and talk about what's next.<\/p>\n The most common question, bizarrely:<\/p>\n This was really the only negativity I got in response to the post, and it surprised me. I put together the concept page as... just that... a concept. It was a way for me to get the ideas out of my head and \"down on paper\" - or so to speak. I used photoshop as a tool<\/em> to write down my idea with text and images. If I used a sketchbook as a tool <\/em>to create images and handwritten notes, then uploaded scans of it, I doubt anyone would complain. The concept page was never supposed to be a finished product because I had no idea if there would be any interest in it. I had no motivation to waste hours coding a custom layout for something might only ever be read by a few people and then forgotten.<\/p>\n Hardware manufacturers make hundreds of foam cutout prototypes of products before they build one with working buttons and screens. I'm aware of all the usability problems with a web page made of images, and equally, foam cutouts without buttons or screens aren't particularly user friendly either. They're not supposed to be.<\/p>\n Let's move on.<\/p>\n Because comments add a layer of complexity that is beyond the core focus of this platform, which is publishing. Again, that's not to say you couldn't have any comments. This could easily be added with a dedicated plugin where you own the data or (as mentioned) there are third party providers such as Disqus, IntenseDebate, Livefyre and Facebook who all have great platforms. The point of this isn't to say \"you can't have comments\" - it's to say \"comments aren't on by default\". It's about simplicity, more than anything else.<\/p>\n <\/a><\/p>\n Sorry, but Tumblr already did this - it's not the future of blogging, it's the past.<\/p>\n Ghost isn't about sharing \"Fuck Yeah [Dogs<\/a>\/Sharks<\/a>\/Girls with Tattoos<\/a>]\" - it's about publishing - which means writing - rather than mashing a few buttons to make sure that everyone can see and appreciate your latest funny picture\/status, which is surely the most funny picture\/status you've ever posted.<\/p>\n Tumblr, Pinterest and Facebook already have this locked down. It's not the future.<\/p>\n The concept page was a way for me to test demand and interest. To see if anyone actually agreed with my frustrations and, more importantly, my solutions. I plucked a random figure of \"10,000 pageviews\" out of the air before I hit the publish button. If it got less than 10,000 pageviews, I would surrender to the fact that it would only ever be an idea. I've now exceeded that goal 9 times over, so yes, I'm looking at how Ghost can now be made into a reality.<\/p>\n Ok, ok - there's a holding page up on http:\/\/TryGhost.org<\/a> - put your email address in.<\/p>\n There's three main ways of going about this, each has merits as well as drawbacks.<\/p>\n 1.) Build it from scratch<\/strong><\/em> - Many people (particularly the Hacker News crowd) expressed the sentiment that there was little point in forking WordPress. When you're going to strip out so much, you get to a point where you might as well start from scratch anyway. Take away the crutches of being stuck with older technologies and put together something which is as sophisticated in code as it is in UI\/UX.<\/p>\n 2.) Fork WordPress<\/strong><\/em> - This was the original idea I put out. Take the WordPress codebase, as is, and modify it to turn it into something new. Initially the codebase is practically the same, which means developers already know it. Then it can change over time and evolve into its own thing.<\/p>\n 3.) Make it a plugin\/extension<\/strong><\/em> - Lots of people asked why Ghost couldn't just be a WordPress plugin. It would certainly be the easiest route of the 3, it's possible to completely remove \/wp-admin\/ and replace with with \/ghost\/ ... but I feel like it kind of misses the point. This route bolts Ghost on, but it's still WordPress under the hood. From a UI\/UX standpoint it would function - but it wouldn't revolutionise anything else. It makes WordPress itself about blogging again, rather than creating something new.<\/p>\n I've spoken to a lot of smart people over the last few days. The one thing that everyone seems to agree on is that a fork is the worst of both worlds. So the one thing that I suggested as a way of making this happen, is the least likely to work in reality. Remember the foam prototype metaphor earlier? Learning and iterating - that's what happening now.<\/p>\n That leaves a choice between WordPress plugin or fresh build. The answer? Both.<\/p>\n A WordPress plugin will act as a proof of concept and a working prototype, initially, because it's easier to leverage the existing WordPress ecosystem to create it than to go into a cave for 6 months trying to build this amazing thing that everyone will have forgotten about.<\/p>\n The plugin will not be perfect. It will add the Ghost UI\/UX and as much functionality as we can cram into it. It will completely remove \/wp-admin\/ and replace it with \/ghost\/ - effectively using WordPress core as a basic foundation to build on top of. It will give people who don't want to switch away from WordPress access to the Ghost UX which they want to have, and it will give people who want the full Ghost platform a taste of what's to come.<\/p>\n It will allow us to develop and learn and iterate on the concept pretty rapidly, which has a great deal of value.<\/p>\n This is step one. Assuming the plugin is actually used by people - it would then justify exploring building the standalone version of Ghost from the ground up. The plugin would subsequently serve as a great marketing tool for the platform. Think of it as an upgrade path. But that's a long way away. Having the idea is the easy part. Making it happen is what counts.<\/p>\n Happily - amongst the thousands of people talking about Ghost for the last few days - several have been talking about how they've already built some working prototypes of my mockups and turned them into WordPress plugins or just local development sites. These will likely go on to be the starting point of the first Ghost plugin.<\/p>\n There's a lot to do, and I'm amazed by the number of people who have offered their help with this. In the next few days I'll be kicking off work on the plugin properly and start putting together a more organised structure which explains how you can get involved and contribute to the project if you're interested. So... watch this space - and thanks for all your support so far.<\/p>\n Follow @TryGhost<\/a><\/p>",
- "image": "ghostpost.jpg",
- "language": "en",
- "status": "published",
- "featured": true,
- "createdAt": 1352475600601,
- "createdBy": 1
- },
- {
- "title": "Designing emotion",
- "content": "A terminal plague on the soul: Six words to accurately describe the process of writing a book. I've often read articles by authors (particularly non-fiction authors) about how writing a book was one of the most difficult, frustrating, mind-numbingly hell-ridden surefire path to insanity that they'd ever experienced. Many noted that they'd never do it again. I didn't listen, obviously. It can't be that hard, I thought, there are plenty of books out there and each one of them had an author who managed to pull it off. And if they can do it, so can I.\n\n\nThat was just over two years ago.\n\nFAQ - Continued...<\/h2>\n
Oh my god, why is that whole page made of images? What's wrong with you? \/\/ I can't take you seriously \/\/ Don't you know anything about the web? \/\/ You are literally Satan re-incarnate.<\/strong><\/em><\/h5>\n
What? Why no comments? I need comments.<\/strong><\/em><\/h5>\n
Yeah, but WordPress are already going to revise their dashboard, WordPress.com is experimenting with a potential simplified version... so why bother with this?<\/strong><\/em><\/h5>\n
So... are you actually going to build this thing?<\/strong><\/em><\/h5>\n
How can I find out when it's done? \/\/ SHUT UP AND TAKE MY MONEY<\/strong><\/em><\/h5>\n
\nHow are you going to do this?<\/h3>\n
\n
\n
\n
What's the answer?<\/h3>\n
The Back Story<\/h2>\n\nA little more than two years<\/strong> ago, I wrote a blog post that was the beginning of Designing Emotion and @Adii<\/a> and I decided to write it up into a short eBook. It was going to be pretty straightforward, to begin with. We'd come across this new concept that explored the psychology behind design and marketing, and we were going to put together maybe 10,000 words on why we thought it was a big deal. As we started writing, I submitted an article to Web Designer Depot (who I was writing for a lot at the time) on this subject - to gauge interest, and to promote a little bit of what we were doing.\n\n\nI didn't know, at the time, that Wiley & Sons (the publishing house) scour places like Web Designer Depot looking for potential suckers<\/span>, victims<\/span>, new authors. Within a couple of weeks of the article being published - we'd been approached and offered a contract to write and publish a real<\/em> book on the subject.\n\n\nI've held off for a long time on telling the next part of this story because, frankly, it's embarrassing and depressing.\n\n\nDesigning Emotion back then was, at best, a half-baked seed that had the potential to one day be an idea, that had the potential to one day be a real concept, that had the potential to one day be a book. Suddenly we were taken from \"Let's write this thing for fun in our free time and put it out ourselves\" to \"Write a 345 part outline for a 200 page book to be written in the next 2 months and published worldwide. Oh, and we'll need to review this 1,245 page contract about royalty terms, advances, and [other shit that sounds important].\"\n\n\nGulp.\n\n\nTo cut a long story short: We tried, and it didn't work. There were two main reasons for this:\n\n\nFirst - Adii and I already worked the equivalent of 4 full time jobs. Writing a book for a publisher is the equivalent of about 3 more full time jobs that neither of us had time for. We would have struggled to keep up with the writing schedule if the idea was fully formed. The reality was, we were researching, documenting, and writing at the same time as we were learning<\/em> what the hell we were even talking about. In short: we weren't ready to write a book.\n\n\nSecond - Wiley & Sons are best known for publishing the \"For Dummies\" series and, unfortunately, they take a \"For Dummies\" approach to publishing. Our book was going to be about grand ideas, about concepts and new ways of thinking, about exploring subjects that hadn't been explored before. Our commissioning editor (the guy who signed us) seemed to get this, but every other editor we had (and there were several) couldn't wrap their head around it. They wanted us to write a book with numbered bullet points, quick tips, pictures, chapter summaries about what the reader has learned, and a whole host of other things that would make us fit perfectly into the \"For Dummies\" cookie cutter template. We didn't like it, and we fought for over a year to work with the publisher and the editors to try and let us write the book we'd wanted to all along.\n\n
Game Over<\/h2>\n\nAbout a year ago, we drew a line in the sand and Wiley released us from our contract.\n\n\nWe were frustrated, angry, and thoroughly worn out. Adii bowed out completely at this point, he'd had enough. I don't blame him whatsoever - with a company as large and as profitable as WooThemes - it wasn't really surprising that he wanted to focus his efforts on things that were<\/em> working instead of those that weren't. I had a slightly different perspective, however. Once the manuscript had gotten to about 70% complete, I'd put together a presentation and started giving it at large design, development and marketing conferences all over the world. I still give this presentation now, talking about the building blocks of Designing Emotion - the foundations of the book... and you know what? The feedback, every time, was (and is) unreal. People get it - and they're interested by it. I've had more positive feedback from giving keynotes on this subject than any other - I know that this is something worth talking about.\n\n\nFor that reason - this semi-complete manuscript has haunted my dreams. It started out as a simple idea, progressed into a big idea, transformed into a big book, was utterly destroyed by incompetant editors and reduced to rubble. At one point, our lead editor added the bolded words to the following passage because she believed our readers wold be unclear on what we were talking about: YouTube is the second most popular digital<\/strong> site in the virtual<\/strong> world. - you know, just in case you thought that \"YouTube\" was a physical location somewhere on planet Earth.\n\n\nOur Amazon pre-order page went from \"delayed\" to \"delayed further\" to \"delayed until further notice\" to \"removed\". People asked, and still do ask, \"What's going on with the book? When can I get it?\"\n\n\nI haven't even wanted to look at the damn thing for the best part of a year now. It really did kill me. While I was busy failing to complete Designing Emotion, my friend @RobHawkes<\/a> got his own book deal, wrote the book, published the book, sold out of the book and had it go for a second print run. Epic levels of depressing on my part.\n\n\nSo that's the back-story. Sorry, I rambled a bit. Anyway, here's what's happening next:\n\n
Releasing Designing Emotion<\/h2>\n\nI'm publishing book myself, one blog-post-length section at a time, on emotion.onolan.org<\/a>. I'm doing it like this for a couple of reasons. First, I've written a proverbial fuck-ton of this thing already, and it seems like a shame not to share it. There's lots of content that I think people who enjoyed my keynote on the subject would find interesting and benefit from in some way. Second, I'm trying to remove all the dreadfully heavy feelings of responsibility that come with the sentence \"I'm writing a book\" so that I can actually finish writing it<\/strong>. Where it<\/strong> is the original idea that Adii and I had years ago to just write something, slightly longer than a blog post, and share it with people.\n\n\nSo, there it is. That's how it's going to go. Once it's finished, I'll look at how to make the entire thing available as one complete piece. For now, I invite you to think of it as a large, interesting, and regularly published blog series. Follow along<\/a>, and tell me what you think.\n\n\nOh, and here's the cover - My friend @RickNunn<\/a> photographed it - I designed it. It's been under wraps for too long - I hope you like it.\n\n\n\n",
+ "content_html": "
The Back Story<\/h2>\n
Game Over<\/h2>\n
Releasing Designing Emotion<\/h2>\n
FAQ - Continued...<\/h2>\n\nThe most common question, bizarrely:\n
Oh my god, why is that whole page made of images? What's wrong with you? \/\/ I can't take you seriously \/\/ Don't you know anything about the web? \/\/ You are literally Satan re-incarnate.<\/strong><\/em><\/h5>\n\nThis was really the only negativity I got in response to the post, and it surprised me. I put together the concept page as... just that... a concept. It was a way for me to get the ideas out of my head and \"down on paper\" - or so to speak. I used photoshop as a tool<\/em> to write down my idea with text and images. If I used a sketchbook as a tool <\/em>to create images and handwritten notes, then uploaded scans of it, I doubt anyone would complain. The concept page was never supposed to be a finished product because I had no idea if there would be any interest in it. I had no motivation to waste hours coding a custom layout for something might only ever be read by a few people and then forgotten.\n\nHardware manufacturers make hundreds of foam cutout prototypes of products before they build one with working buttons and screens. I'm aware of all the usability problems with a web page made of images, and equally, foam cutouts without buttons or screens aren't particularly user friendly either. They're not supposed to be.\n\nLet's move on.\n
What? Why no comments? I need comments.<\/strong><\/em><\/h5>\n\nBecause comments add a layer of complexity that is beyond the core focus of this platform, which is publishing. Again, that's not to say you couldn't have any comments. This could easily be added with a dedicated plugin where you own the data or (as mentioned) there are third party providers such as Disqus, IntenseDebate, Livefyre and Facebook who all have great platforms. The point of this isn't to say \"you can't have comments\" - it's to say \"comments aren't on by default\". It's about simplicity, more than anything else.\n
Yeah, but WordPress are already going to revise their dashboard, WordPress.com is experimenting with a potential simplified version... so why bother with this?<\/strong><\/em><\/h5>\n\n<\/a>\n\nSorry, but Tumblr already did this - it's not the future of blogging, it's the past.\n\nGhost isn't about sharing \"Fuck Yeah [Dogs<\/a>\/Sharks<\/a>\/Girls with Tattoos<\/a>]\" - it's about publishing - which means writing - rather than mashing a few buttons to make sure that everyone can see and appreciate your latest funny picture\/status, which is surely the most funny picture\/status you've ever posted.\n\nTumblr, Pinterest and Facebook already have this locked down. It's not the future.\n
So... are you actually going to build this thing?<\/strong><\/em><\/h5>\n\nThe concept page was a way for me to test demand and interest. To see if anyone actually agreed with my frustrations and, more importantly, my solutions. I plucked a random figure of \"10,000 pageviews\" out of the air before I hit the publish button. If it got less than 10,000 pageviews, I would surrender to the fact that it would only ever be an idea. I've now exceeded that goal 9 times over, so yes, I'm looking at how Ghost can now be made into a reality.\n
How can I find out when it's done? \/\/ SHUT UP AND TAKE MY MONEY<\/strong><\/em><\/h5>\n\nOk, ok - there's a holding page up on http:\/\/TryGhost.org<\/a> - put your email address in.\n
\nHow are you going to do this?<\/h3>\n\nThere's three main ways of going about this, each has merits as well as drawbacks.\n\n1.) Build it from scratch<\/strong><\/em> - Many people (particularly the Hacker News crowd) expressed the sentiment that there was little point in forking WordPress. When you're going to strip out so much, you get to a point where you might as well start from scratch anyway. Take away the crutches of being stuck with older technologies and put together something which is as sophisticated in code as it is in UI\/UX.\n
\n
\n
\n
What's the answer?<\/h3>\n\nI've spoken to a lot of smart people over the last few days. The one thing that everyone seems to agree on is that a fork is the worst of both worlds. So the one thing that I suggested as a way of making this happen, is the least likely to work in reality. Remember the foam prototype metaphor earlier? Learning and iterating - that's what happening now.\n\nThat leaves a choice between WordPress plugin or fresh build. The answer? Both.\n\nA WordPress plugin will act as a proof of concept and a working prototype, initially, because it's easier to leverage the existing WordPress ecosystem to create it than to go into a cave for 6 months trying to build this amazing thing that everyone will have forgotten about.\n\nThe plugin will not be perfect. It will add the Ghost UI\/UX and as much functionality as we can cram into it. It will completely remove \/wp-admin\/ and replace it with \/ghost\/ - effectively using WordPress core as a basic foundation to build on top of. It will give people who don't want to switch away from WordPress access to the Ghost UX which they want to have, and it will give people who want the full Ghost platform a taste of what's to come.\n\nIt will allow us to develop and learn and iterate on the concept pretty rapidly, which has a great deal of value.\n\nThis is step one. Assuming the plugin is actually used by people - it would then justify exploring building the standalone version of Ghost from the ground up. The plugin would subsequently serve as a great marketing tool for the platform. Think of it as an upgrade path. But that's a long way away. Having the idea is the easy part. Making it happen is what counts.\n\nHappily - amongst the thousands of people talking about Ghost for the last few days - several have been talking about how they've already built some working prototypes of my mockups and turned them into WordPress plugins or just local development sites. These will likely go on to be the starting point of the first Ghost plugin.<\/p>\n\nThere's a lot to do, and I'm amazed by the number of people who have offered their help with this. In the next few days I'll be kicking off work on the plugin properly and start putting together a more organised structure which explains how you can get involved and contribute to the project if you're interested. So... watch this space - and thanks for all your support so far.\n\nFollow @TryGhost<\/a>",
- "contentHTML": "
FAQ - Continued...<\/h2>\n
Oh my god, why is that whole page made of images? What's wrong with you? \/\/ I can't take you seriously \/\/ Don't you know anything about the web? \/\/ You are literally Satan re-incarnate.<\/strong><\/em><\/h5>\n
What? Why no comments? I need comments.<\/strong><\/em><\/h5>\n
Yeah, but WordPress are already going to revise their dashboard, WordPress.com is experimenting with a potential simplified version... so why bother with this?<\/strong><\/em><\/h5>\n
So... are you actually going to build this thing?<\/strong><\/em><\/h5>\n
How can I find out when it's done? \/\/ SHUT UP AND TAKE MY MONEY<\/strong><\/em><\/h5>\n
\nHow are you going to do this?<\/h3>\n
\n
\n
\n
What's the answer?<\/h3>\n
The Back Story<\/h2>\n\nA little more than two years<\/strong> ago, I wrote a blog post that was the beginning of Designing Emotion and @Adii<\/a> and I decided to write it up into a short eBook. It was going to be pretty straightforward, to begin with. We'd come across this new concept that explored the psychology behind design and marketing, and we were going to put together maybe 10,000 words on why we thought it was a big deal. As we started writing, I submitted an article to Web Designer Depot (who I was writing for a lot at the time) on this subject - to gauge interest, and to promote a little bit of what we were doing.\n\n\nI didn't know, at the time, that Wiley & Sons (the publishing house) scour places like Web Designer Depot looking for potential suckers<\/span>, victims<\/span>, new authors. Within a couple of weeks of the article being published - we'd been approached and offered a contract to write and publish a real<\/em> book on the subject.\n\n\nI've held off for a long time on telling the next part of this story because, frankly, it's embarrassing and depressing.\n\n\nDesigning Emotion back then was, at best, a half-baked seed that had the potential to one day be an idea, that had the potential to one day be a real concept, that had the potential to one day be a book. Suddenly we were taken from \"Let's write this thing for fun in our free time and put it out ourselves\" to \"Write a 345 part outline for a 200 page book to be written in the next 2 months and published worldwide. Oh, and we'll need to review this 1,245 page contract about royalty terms, advances, and [other shit that sounds important].\"\n\n\nGulp.\n\n\nTo cut a long story short: We tried, and it didn't work. There were two main reasons for this:\n\n\nFirst - Adii and I already worked the equivalent of 4 full time jobs. Writing a book for a publisher is the equivalent of about 3 more full time jobs that neither of us had time for. We would have struggled to keep up with the writing schedule if the idea was fully formed. The reality was, we were researching, documenting, and writing at the same time as we were learning<\/em> what the hell we were even talking about. In short: we weren't ready to write a book.\n\n\nSecond - Wiley & Sons are best known for publishing the \"For Dummies\" series and, unfortunately, they take a \"For Dummies\" approach to publishing. Our book was going to be about grand ideas, about concepts and new ways of thinking, about exploring subjects that hadn't been explored before. Our commissioning editor (the guy who signed us) seemed to get this, but every other editor we had (and there were several) couldn't wrap their head around it. They wanted us to write a book with numbered bullet points, quick tips, pictures, chapter summaries about what the reader has learned, and a whole host of other things that would make us fit perfectly into the \"For Dummies\" cookie cutter template. We didn't like it, and we fought for over a year to work with the publisher and the editors to try and let us write the book we'd wanted to all along.\n\n
Game Over<\/h2>\n\nAbout a year ago, we drew a line in the sand and Wiley released us from our contract.\n\n\nWe were frustrated, angry, and thoroughly worn out. Adii bowed out completely at this point, he'd had enough. I don't blame him whatsoever - with a company as large and as profitable as WooThemes - it wasn't really surprising that he wanted to focus his efforts on things that were<\/em> working instead of those that weren't. I had a slightly different perspective, however. Once the manuscript had gotten to about 70% complete, I'd put together a presentation and started giving it at large design, development and marketing conferences all over the world. I still give this presentation now, talking about the building blocks of Designing Emotion - the foundations of the book... and you know what? The feedback, every time, was (and is) unreal. People get it - and they're interested by it. I've had more positive feedback from giving keynotes on this subject than any other - I know that this is something worth talking about.\n\n\nFor that reason - this semi-complete manuscript has haunted my dreams. It started out as a simple idea, progressed into a big idea, transformed into a big book, was utterly destroyed by incompetant editors and reduced to rubble. At one point, our lead editor added the bolded words to the following passage because she believed our readers wold be unclear on what we were talking about: YouTube is the second most popular digital<\/strong> site in the virtual<\/strong> world. - you know, just in case you thought that \"YouTube\" was a physical location somewhere on planet Earth.\n\n\nOur Amazon pre-order page went from \"delayed\" to \"delayed further\" to \"delayed until further notice\" to \"removed\". People asked, and still do ask, \"What's going on with the book? When can I get it?\"\n\n\nI haven't even wanted to look at the damn thing for the best part of a year now. It really did kill me. While I was busy failing to complete Designing Emotion, my friend @