Other people might be able to confirm it but I have never received an Europass while working in London. I was told I should never send a cv made with the Europass template as the relation between British people and European things is not always the best. I understand this might be incorrect but it was enough for me to avoid using it. Then I also spoke with some HR people from other European countries who told me they didn't really like Europass so in the end I created my own template using Bootstrap.
Europass is also largely unknown. Politics aside, it is a good format and I would much prefer to get standardized CVs like this, especially for the skill assessment in languages.
The problem here is: some European countries use very particular formats for their CVs. e.g. Germany has the "tabular CV", which expects all these things to be organized by time and date, it even includes where and when you went to Kindergarten. Europass doesn't fit many of those particularities (which is kind of the point).
I had a brief look at HR-XML back when I was in love with XML - it's a very old standard, early-2000s, and yet it's never mentioned by any recruiting website, even "geek-oriented" ones that should know better.
At one point I even added an explicit line to my Word/PDF versions: "this document is also available in HR-XML format on request". Nobody ever asked, so eventually I just took the line out. I've never heard of Europass CV, but I live in England, where EU is a dirty word...
TBH, this is the sort of stuff most recruiters don't bother with anyway, in my experience the (European) recruiting industry runs on MS Office. Some industry vendors might do some munging and conversion behind the scenes, but they'll likely never allow people to submit their own data outside of tightly-checked web forms.
I like the idea, because I deal with a lot of resumes and can't parse them programmatically.
- Eliminate first/last name distinction, and let people just put in their full or legal/passport name. Names are very crazy across cultures, as in some people don't have first or last names, so might as well just let them enter free form text as their name.
- Include a "Preferred name" field, also as freeform text. Some people like to go by nicknames, or shortenings of their names, and it will help out.
- Collapse location region and state into a single field.
- If "websites" is a hash with only a single field, call it "website" and make it a string.
I disagree with so many people in this discussion recommending XML without much reason. The best reason I've ever seen to pick XML over JSON is mixing text and elements, and that doesn't seem like an issue, here.
As for feedback on the schema itself, I'd probably like to see some more detail allowed for the courses under education. I remember after graduating, there really wasn't anything more substantial that I could put other than details about my courses. Using the example on your page, I think "HS1302" and "Introduction to American History" could possibly be separate fields, and I think there should be an additional details/description/highlights field.
Also, I am a consultant, and I like to list a projects section. Each project could have a name, a client, an employer (the consulting company), a date range, and details.
If only there was an extensible markup language you could employ to create a resume standard.
You are right, it is a mess, we are working on the specification at the moment and deciding on correct data types and semantics. If you think with a bit of love it can be made into a usable standard please come help us out at https://github.com/jsonresume/resume-schema/issues
You do realize that there is a JSON Schema specification, not to mention that JSON more naturally matches a program's object structure for serialization and deserialization. Generally speaking XML is more flexible than any object representation should be. Objects tend to have properties, and those properties may be a given type. But XML may define some properties as attributes, and others as a single /nested child element and others as 1+ child elements, or a child element with 1+ child elements. JSON is a natural, easy to understand and comprehend map without extra content that really isn't needed. JSON maps neatly to several object streaming systems, XML does not.
I'm sorry, but XML isn't some panacea of describing or encoding document structures. It's generally a collection of fragile verbose and overly complicated tools in a few given platforms to satisfy people that think enterprise programming means implementing every pattern that loosely fits their situation instead of clean, simple, elegant solutions that hide complexity where needed instead of creating more.
JSON + JSON-Schema is no more of a mess than XML + XML Schemas. And generally far more forgiving in any modern programing environment for client/server use.
> JSON + JSON-Schema is no more of a mess than XML + XML Schemas.
For this reason, many developers resist JSON-Schema. We already have one mess, if we need it - let's keep JSON clean! That's why we like it. A concrete example of keeping JSON clean was the removal of comments from the JSON spec to stop people using them as directives. If they had stayed, and JSON became complex and ugly and messy, would its popularity have continued?
However... the increasing prevalence of complex JSON formats may eventually make some form of JSON schema necessary.
That part on the homepage is a documentation generator I made for any given schema, it's suppose to be more of a go to reference manual but I guess that is unclear on the homepage.
All the modules have to pass the validator which is based off the formal specification in the repository. I think that is what you mean and as far as JSON is concerned, will keep at it for a bit and see how far it can go, if it's impossible hopefully a new standard in a correct format will take off and use some of the same tooling that we have built.
Nice. Although I'm not too sure what the social implications of this would be. As it is already I think employers do too much parsing of resumes rather than looking at them with human eyes. PDF resumes are awesome in that you get a blank sheet of paper to do whatever you want with to impress the employer.
There's a lot of reading between the lines that can be done in an resume. Even the fonts say something about the person. If the person is claiming to be a UI designer and their resume has poorly chosen fonts and bad kerning, I'd toss it. If they claim to be a physics researcher and the resume is written in Word, I'd toss it too. With a JSON resume you don't get any of this information.
Also, it's not entirely clear how extensible this "standard" is. Resumes take multiple forms. A computer scientist might want to list a few open source projects. A photographer might want to embed a sample or two of their work.
But the relationship with future performance and these subjective "reading between the lines" opinions is unclear. You need standardization to reduce bias in hiring decisions and make them as objective as possible.
Yeah, I was going to say that this project is awesome, and I like the web themes, but the PDF export needs a lot of work. I think that will be the hardest aspect to achieve. Maybe some LaTeX resume themes can be borrowed from. There are some very nice ones in LaTeX.
Maybe. As someone who likes to be creative I'd still never use someone else's template though. Even the font I use on my resume I did some editing on because I didn't like the way a couple of the glyphs looked.
I think that gets to the heart of why a standard metadata-to-pretty-resume solution has never really taken off. The people who really care about it don't even bother trying to make a one-size-fits-all solution, since it's such a customized and personal undertaking. Glad to hear I'm not the only person who's spent countless hours tweaking my resume to the nth degree.
I think this is a great idea. I love the idea of a universal data format for resumes.
However, I'm not at all convinced that JSON is the way to do it. I think the way to do it is with XML and XSLT, although I already can hear the cries of "But XML is yucky and XSLT is hard." But by using JSON, we lose some semantic markup and end up having to parse it to create some semantic markup.
Still, I hope this, or something like it, takes off. This just needs a web-based GUI tool to publish a resume so that non-geeks can make it happen.
It was a very hard decision to make and starting such a movement is unfortunately from my viewpoint much more than making rational choices about the technologies. We wanted to have a low barrier to entry and also take advantage of the large ecosystem of libraries. At the moment the majority of web technologies are using JSON so we believe that to get this standard off the ground we will need to go with the grain.
LinkedIn actually exports into a Microformat called hResume which has been around for a long time but has evidently not been able to amass a large developer community. This was another reason we decided to not start with XML.
> We wanted to have a low barrier to entry and also take advantage of the large ecosystem of libraries.
That doesn't make sense. You wanted a low barrier to entry, but you have to mark this up yourself with JSON, install command line tools, etc. Seems to me a web app that I fill in some forms and generate a page on your site would be the quickest way to lower the barrier.
> At the moment the majority of web technologies are using JSON so we believe that to get this standard off the ground we will need to go with the grain.
I understand the desire to use what's popular. But I just don't think it's the right choice. I'm interested to see the implementation of how this is turned into a PDF though.
Right now, though, it does sound a bit like "every problem is a nail." Perhaps it'll become more clear to me as I dig in more.
Again, I do think the project is very cool and will be encouraging my students to take a look at how they can use this to promote themselves.
Ahh I thought it might be better to start the movement at the developer level before asking regular people to opt in. So JSON was meant to be the common denominator for developers, hopefully they build tools that makes the process less technical for the general population.
We actually had to pull our PDF converter due to bugs and are currently just using a service called pdfcrowd.com.
Though the general idea is that HTML can be passed through WebKit and rendered as various image formats and PDF -> http://wkhtmltopdf.org/
I'll start adapting resumebeacon.com to support jsonresume. I created my site as a LinkedIn resume generator, so integrating a JSON formatted feed shouldn't be much trouble. I'll start work on it tonight and post it to "show HN" when it's done.
> LinkedIn actually exports into a Microformat called hResume which has been around for a long time but has evidently not been able to amass a large developer community. This was another reason we decided to not start with XML.
So, not trying to be rude here, but have you wondered why it is that an XML resume format hasn't taken off? Other than it being based on icky XML? I mean XML+XSLT has been around for a loooong time and can more than handle exactly what this format sets out to do, and yet a standard XML resume format hasn't taken off.
There's nothing particularly "icky" about XML. That's just a silly hipster meme. XML is just a tool, it makes sense in some places, less so in others. Same deal for JSON.
I mean XML+XSLT has been around for a loooong time and can more than handle exactly what this format sets out to do, and yet a standard XML resume format hasn't taken off.
It's just as likely that the answer is "a standard resume format hasn't taken off" where the serialization format is irrelevant. Maybe not enough people are interested in working with documents and knowledge at that deeper, semantically meaningful level. Maybe sending resumes as PDF or MS Word or ODT and using simple keyword extraction has been "good enough" that nobody has felt the pull to use a better system?
What I mean is, it's entirely possible that this will fail to gain adoption for the exact same reason that the XML based one(s) did, and that the difference between JSON and XML is actually irrelevant. This is, of course, just speculation on my part. In any case, I hope this (or something like it) gains traction, since I'm a strong proponent of publishing semantically meaningful content, whether it's in RDF/XML, JSON-LD, SGML, DAML+OIL, YAML, Texinfo, Markdown, Hytime or hieroglyphics chiseled into stone tablets. :-)
Agreed. There is one difference with json (and yaml) though: it truly is more human writable (and readable), and by extension provides nicer diffs. I'd be much more happy to maintain my resume in json than in XML, even if I might be more happy exchanging/submitting resumes with (one of) the existing XML standards.
But all that's needed is a script that eats XML resumes and outputs json resumes, and vice versa.
Just like I'd rather write markdown and read (rendered) html+css.
That said, on the subject of XML not being "icky": one resource for having fun with XML: "Program Generators with XML and Java" by J. Craig Cleaveland (Prentice-Hall, 2001):
Hm, looks like there might be bit too many dependencies here for my taste:
npm install resume-cli
du -hs node_modules
All this, and it doesn't provide line numbers when reporting errors due to an extra comma in the json file? Nor does it (yet) have LaTeX output...
Still, can't complain, 5 minutes and I have a resume draft that doesn't look half bad in html, and is presumably entirely reasonable to customize (not to mention it's all inn a json-file anyway, so one could just use what's in ones actual resume, and shove the json through pretty much any scripting language w/templates and generate something reasonable).
I honestly don't like XML, not that there aren't very verbose tools and standards to make it easier to use, but intrinsically you can't look at XML file and know how a codified representation should look like... if you have an element it will have properties and child elements... said child elements may contain children, strings, or ??? ... JSON maps much more naturally to an object model in a given language. That's just one way that by example you can show JSON, and know what you need to make.
Not to mention, XML is much more verbose, and when you wrap it in things like ws*/SOAP it gets really ugly really quickly, and if you don't map everything, it gets complicated and often fails. When you publish a service using one toolkit, it's often difficult to use the service in another toolkit (example, using Java services in .Net gets really painful at times). Unless a lot of detail is done, or an API client in that client's environment is provided.
This isn't about XML specifically but about the environment it tends to create. JSON is typically simpler to write, easier to code against and more forgiving in the tooling than XML is. Much like the differences between a scripted environment and a statically compiled environment.
1. need a schema to be useful as a standard
2. express their hierarchy
3. don't specify data type (although I could add that info to both if needed)
4. have a level of annoying to them (commas, colons, angle brackets, etc) which modern IDEs have taken care of for us.
> if you have an element it will have properties and child elements... said child elements may contain children, strings, or ???
I need to use documentation to use `package.json` files too, because each node may or may not contain children. Node graciously tells me if I missed something. Docbook also tells me if my XML is malformed. I see no difference here,
> JSON maps much more naturally to an object model in a given language.
I'd really like people to understand that XML is, like HTML, really great at describing and marking up content so that something else may process it.
You could also have <book title="..." subtitle="..." >... There's no real canonical representation of what an object should look like... can you have more than one title tag for a book? If you look at your xml, you don't know. Can you have more than one author tag? from the xml, you don't know... both of these, you do know looking at the json.
I'm not entirely sure, something to do with XML not being human readable maybe. All I can really say is that I don't use XML most of the time is because I'm lazy, JSON.parse() is just too easy but I also don't know XML that well and I believe that is because the large majority of RESTful interface's I work with are JSON.
Though I would love to hear someone else's thoughts on why an XML resume hasn't gained critical mass.
The trick with XML is to learn XSLT. The trick with that is it's really a weird language that uses recursion and acts almost functional, but not. But if you learn that, you don't have to parse anything because you just "style" the xml.
Here's a silly playground I wrote to show my students XML.
> At the moment the majority of web technologies are using JSON
The majority of which technologies? The CV generators that are already out there, which are the most relevant ones, don't use JSON. How are you creating a low barrier to entry by completely disregarding what people are already using?
Anyone that has ever used xslt in a non-trivial way most likely understands that it is a terrible answer to just about any problem. Complexity for the sake of complexity is never a good path to follow.
I've written 7 books with it and those books have been published in print, PDF, epub, and mobi. I think that's non-trivial. But if you're referring to SOAP and WS* and all that stuff from the J2EE days, the I agree. That's a terrible terrible solution.
In my opinion, it should be RDF, so that we can programmatically define a common structure, link to shared concepts (e.g. programming languages) and to other personal documents. If it's encoded XML, JSON-LD, or (my personal favorite) Turtle, that's mostly irrelevant.
XML was horrible for data interchange, configuration, and all the other crap people used it for.
It's one of the best tools for marking up content. It's a Markup Language! If you've never used XSLT you really should look at what it can do. Because I can transform an XML resume into something gorgeous without writing too much programming logic.
It's the reason so many technical book publishers use XML. Easy to transform content while also describing that content.
It is horrible for markup too. It is far, far, far too complex and far more verbose than it needs to be. These are the hallmarks of a bad language (or metalanguage).
It is absurdly popular in bureaucratic environments. Bureaucrats adore its complex rules, ability to create arcane standards and illusion of openness. It's also good for job security. However, none of that bodes well for the rest of us.
I have used XSLT and I am absolutely appalled that something like that can even exist. It's actually worse than XML. It is a turing complete language (this means that you can make it as complex as you like, and boy oh boy does THAT happen), but its readability is AWFUL.
I can use a normal programming language transform a JSON resume into something gorgeous and I GUARANTEE it will be lot easier to read and modify than your XSLT equivalent.
> It is horrible for markup too. It is far, far, far too complex and far more verbose than it needs to be.
Oh stop. XML syntax is freaking simple. <tag>content</tag>, <tag><child>...</child>...</tag>, or <tag attribute="value" ...></tag>. Toss in namespaces for composing other formats _if need be_ (and you don't have to use them). And... you're done for 99.9% of any use case you can think of. You have to repeat yourself when you close a tag. Whoopdedoo. Any decent editor will close them for you anyway. I think the "XML sucks" crowd are conflating very complex XML _formats_ with XML _itself_ and deciding that XML is ridiculously complex and verbose because e.g., SOAP is complex and verbose.
Just curious, do you hate HTML for similar reasons as well?
I have to agree. XML can be complicated, or can at least look complicated when using lots of namespaces and what-not, but for most purposes it's dead simple and about as easy to understand as anything else.
Truth be told, I find XML easier to read than JSON in many cases. shrug
* The likelihood that you will receive badly formed XML and be forced to parse it anyway.
* The multiple different ways of escaping characters.
* Language identification
...I could go on.
Oh, and your parser has to handle ALL of this. It's no good assuming that "since the basics are fairly basic it doesn't matter". It doesn't matter only when you're generating XML, but somebody SOMEWHERE is going to have to consume it.
Wanna know why it's typically possible to blow up an XML parser with a memory leak or a buffer overflow but not a JSON parser? This complexity is why. Just using it creates an increased attack surface for your internet facing API.
>Just curious, do you hate HTML for similar reasons as well?
I'm not its biggest fan, and I feel like it could have been done a lot better. However, A) there isn't much alternative so bitching about it it somewhat pointless and B) at least I never have parse it (want an exercise in frustration some time? try doing THAT...).
I was mentioning the "99.9%" use case of XML for e.g., a resume format. You don't have to specify DOCTYPEs, namespaces, etc.
> The likelihood that you will receive badly formed XML and be forced to parse it anyway.
You're supposed to fail on badly-formed XML!
> Oh, and your parser has to handle ALL of this.
So? I don't have to write an XML parser because there are numerous well-tested ones already written. I wouldn't write a JSON parser for the same reason.
> Wanna know why it's typically possible to blow up an XML parser with a memory leak or a buffer overflow but not a JSON parser?
First of all, you shouldn't speak in absolutes. You certainly could write a JSON parser that blows up for the same reasons. There's nothing inherent in JSON that makes it impossible to write a bad parser.
> at least I never have parse it (want an exercise in frustration some time? try doing THAT...).
For anything more than a trivial format you can automatically have the parser bind the content to a POJO (or your language's "plain old object" analogue).
Sorry to rain on yours, but XML isn't bad. The way people used it is bad.
Just because you were forced to use bad schemas in enterprisey situations doesn't mean XML is bad. SOAP is not XML. Spring MVC is not XML. Those things use XML.
Docbook's pretty easy to follow. That, in my opinion, is a great example of XML+XSLT.
With XML I can do this:
Responsible for doing all manner of things.
It describes exactly what we're looking for in the same way as the JSON variant does. My editor will auto-close those tags the same way my editor will auto-close the closing curly braces in the JSON version.
Of course, we could make it suck if we just go ahead and add all sorts of extra rules and hierarchy and turn it into a monstrosity.
No, it IS bad and the complaint that 'people use it badly' is simply an excuse to cover for its deficiencies. In many ways, its deficiencies (which YAML/JSON do not have) are an incitement to use it badly, but that's far from the only problem with it.
I am not complaining about being forced to use bad schemas in enterprisey situations, either. That is merely the icing on the cake of the badness that is XML.
I am complaining simply because there is not one instance I have ever come across in my entire programming career (12 years now) where XML would have served me better than an alternative (assuming I had a choice). Zero.
>With XML I can do this:
><experience> <title>Manager</title> <company>Veridian Dynamics</company> <description> Responsible for doing all manner of things. </description> </experience>
Yes, you can, but so what? You can do that in YAML and JSON too. Furthermore, your YAML/JSON parser is 10x less complex, faster, less likely to have buffer overflow security issues and less likely to have memory leaks.
Furthermore, while my app that consumes this markup will probably have to treat <experience><title>Manager<company>Veridian</experience> as valid, because consuming badly formed XML is standard and expected (your product manager will probably treat not parsing it as a bug), my app won't EVER have to treat invalid JSON as valid.
>Of course, we could make it suck
Yes, and there's a 90% chance somebody will. Whereas with JSON and YAML the chances of it being made to suck are far lower, because so many of the unnecessary avenues which are used to make XML suck are closed off in YAML.
I don't have to do anything with XML that I don't want to. I don't have to accept XML that doesn't conform to my schema. You're talking web services again and I'm talking about resumes. You're talking general and I'm talking about a specific place, publishing content, where XML shines. See previous comments - I use XML daily in book publishing. It is not anything like what you're making it out to be.
XML is a markup language. JSON is a serialization language. YAML is a serialization language too. I want to semantically mark up my content. And this is very different than application programming with XML.
You want to write a book with Docbook's XML? Better give it exactly what it wants, or it will reject it. It's not SOAP.
The way I see it we actually want to serialize a datastructure. We have many potential use cases not just presentation. If I download a thousand resumes I'm not as interested in viewing them as documents as I am in consuming them as datastructures, doing filtering / machine learning / ranking / ..
The way I look at it this is as much (and probably way more) a platform to write services on top of as it is a another hole to throw resume.xml down. And for that, json is undeniably better suited.
Nobody is trying to convince you to publish books in json.
>I don't have to accept XML that doesn't conform to my schema.
Yes you do, because otherwise people will treat your application as buggy. People have tried doing this with browsers and it never, EVER, ever works. If one app accepts malformed markup, they expect every other one to do it as well and no amount of preaching about the sanctity of well formed markup is going to change their mind.
>You're talking web services again and I'm talking about resumes.
If resumes are going to be done in markup it's so they can be consumed by web services. There is no point in having a machine readable language if it's not going to be read by machines.
>You're talking general and I'm talking about a specific place, publishing content, where XML shines.
I would rather use LaTeX for publishing content. It's complex, but it can handle layout beautifully.
> Yes you do, because otherwise people will treat your application as buggy
You are mistaking HTML/Browser rendering and XML parsing. An application that parses XML for book rendering, or whatever the hell the purpose of the application is, will fail on invalid input, whether it is because of invalid tag nesting or schema invalidity.
That is NORMAL, and you would do the same with JSON, so that's not because of history of HTML and IE/Netscape/whatever that you need to change your mind about XML.
> If resumes are going to be done in markup it's so they can be consumed by web services
So if a web service was to accept a specific type of XML, it would certainly need to be made valid, if a client does not conform why the fuck do you want your service to be permissive? Seriously.
You can make a service that accepts the resume schema directly, or embed it in a CDATA if you want to.
> I would rather use LaTeX for publishing content. It's complex, but it can handle layout beautifully
Talking about apple and oranges. XML and docbook are not the same.
>You are mistaking HTML/Browser rendering and XML parsing.
I am not mistaking, I am comparing.
>An application that parses XML for book rendering, or whatever the hell the purpose of the application is, will fail on invalid input
Which will be treated as a bug if other applications DON'T fail (which some undoubtedly will).
>That is NORMAL, and you would do the same with JSON
In my experience the OPPOSITE is normal. If XML is invalid but still makes sense, you treat it as valid, because if you don't, your competitors will.
If the customer is getting XML from output X and feeding into your app, he doesn't care that output X is outputting invalid XML if your competitors' apps accept it. He'll just treat your app as the broken one, not buy it and move on with his life and you've just lost a sale. I've seen it happen MANY times. This phenomenon does NOT just apply to browsers, it's just more aptly demonstrated with browsers. NOBODY wants a browser that doesn't accept valid HTML. They never did and they never will.
And what's different about web pages to any other kind of XML? There's more of them, that's all, and people want ALL of them to work. Permissiveness in the consumers is inevitable with ANY kind of XML document that becomes popular for exactly the same reason as it is with browsers.
>that's not because of history of HTML and IE/Netscape/whatever that you need to change your mind about XML.
Yes it is because this sort-of-invalid-but-not-quite problem is a unique one to XML. JSON doesn't have it.
>So if a web service was to accept a specific type of XML, it would certainly need to be made valid
If you don't think somebody would throw invalid XML at your app and not expect it to work then you've clearly never worked with XML seriously.
If you think you can just tell the customer to go fuck themselves because the XML they got from another service doesn't validate, see my previous point.
>if a client does not conform why the fuck do you want your service to be permissive? Seriously.
Because it will make your service work where an impermissive one won't, and when your service works and competitors don't, that's called gaining marketshare.
>You can make a service that accepts the resume schema directly, or embed it in a CDATA if you want to.
Or you could just use JSON or YAML.
>Talking about apple and oranges. XML and docbook are not the same.
Yes, you are mistaking it. HTML is "relaxed" about various parsing errors. XML absolutely is not. If the input document so much as has a closing tag missing, parsing will fail, end of story. If it doesn't match your schema, parsing will fail, end of story. I'm not sure why you keep going on about this point. You're woefully misinformed if you think XML parsers accept malformed input.
> Which will be treated as a bug if other applications DON'T fail (which some undoubtedly will).
Are you talking about "my app accepts schema A and another app accepts schema A.1, therefore if I don't accept schema A.1 people will think my app sucks"? I'm not sure why you think this is an XML-specific issue.
Yes apples and oranges. They taste different, because they are.
> In my experience the OPPOSITE is normal. If XML is invalid but still makes sense, you treat it as valid, because if you don't, your competitors will.
If this is a business requirement you would do the same for JSON.
> If you don't think somebody would throw invalid XML at your app and not expect it to work then you've clearly never worked with XML seriously.
Nope, if you have a customer sending you an XML which should validate against a predefined schema, no, hell no.
I've worked for the European office of publications, and the web services were just receiving tons of XML on a daily basis. And you know what, invalid XML were rejected that's as simple as that. If you don't respect the supplied schema, retry when correct.
> docbook IS XML.
Docbook USES XML.
Last but not least, HTML is not XML, HTML is not a subset of XML. Permissiveness has nothing to do with web services acceptance of invalid schemas.
If you call a Google service whether it uses SOAP (so XML) or REST, if the request body is invalid, you'll be rejected either way. The SOAP one won't try to parse more or resolve issues just because it is XML based.
Hey guys, we weren't actually ready for a lot of eyes to see this project. We were hoping to keep it small and get some feedback on important decisions about the project's trajectory.
The plan is to create a standard that developers worldwide are comfortable enough with to build upon.
To give the standard some traction, we have built tools to export to other formats such as pdf, txt and doc.
We also thought it would be cool and useful to have an NPM like system for resumes. So we built a CLI heavily inspired by NPM, to init and publish your resume to the jsonresume.org registry.
The themes right now are in bad shape, and we are looking for designers who would love to jump in during the early stages. We are thinking of building a theming version manager on top of NPM to take advantage of versions/distribution and also allow theme developers to implement their theming systems however they like (erb, mustache, md etc).
People with comments about the standard semantics and structure are encouraged to post their ideas to Github issues. -> http://github.com/jsonresume/resume-schema We also want to formalize the standard a lot more over the coming weeks.
If the project can be pulled off professionally and driven by the community, we believe that working with resumes will be fun!
Edit: Here are some of the reasons why I personally think JSON resumes will improve HR.
(trying to figure out bullet points)
- Better searching and filtering than PDF/doc. Making recruiting a tad easier.
- Applying themes will be a lot easier.
- Applying for jobs will be easier. Instead of filling out complex forms over and over again services might start allowing you to auto-fill with your JSON resume.
- There are many services that ask for your career history such as LinkedIn, Angel.co etc. These could be autopopulated or synced with your master copy.
- You can update your resume programatically so Github projects can be inserted and any other online certificates that you might want automatically added to your resume like Mozilla Open Badges -> http://openbadges.org/
- The comment section suggests that lots of innovation could arise from it.
Make sure you try the CLI! sudo npm install -g resume-cli
I would just like to say that I think that this is a great idea(despite agreeing with others here that XML + XSLT would seem like a more logical choice). I hope it gets some traction in the long run.
I've posted an issue on github  mentioning that "firstName" and "lastName" is probably not a good representation of names. I don't actually know what the solution is, but this article  gives some great reasons why we tend to make incorrect assumptions about peoples names, which have the possibility of excluding some people form our tools based on their name alone.
Regarding names, I've heard of two solutions that cover enough edge cases to be suitable:
1. Asking for "Given Name" and "Surname" clears up most issues with cultures like Korea (where surname comes first).
2. Simply have a "Name" field. Accept any Unicode characters. Hope for the best.
If someone has a name that cannot be represented in written characters or cannot be rendered in Unicode (which would be amazing, since Unicode covers ancient dead languages and fictional languages like Klingon) they probably have more pressing issues than trying to serialize their resume.
Mostly, people ask for firstname and lastname because they want to call you by one of them. you can avoid this problems by having a "Full name" and a "what do we call you": my full name is "Paul Biggar" but you should call me "Paul".
In Germany it's not really common to call people by their first name (IT is an exception), but I would hardly put "Mr. Lastname" into "what do we call you". It all depends on the context, even in the limited scope of a resume.
No, it's not, because calling someones phone is also culturally dependent. Because in Germany, when you are calling someone, it is expected that person picking up the call will speak up first and introduce themself. Something like: "Herr Mustermann, hallo!".
You see, if you are calling person from Germany, knowing how to address him is not enough, you shall still know how to make a call. If you don't know that, you'll be rude anyways, and if you know that, you'll also know a proper way of addressing persons in different cultures.
> Make sure you try the CLI! sudo npm install -g resume-cli
Regarding that: I recently reached the fed-up point with sudo or not sudo to install nodejs app and the mess it leaves behind when using sudo for just installing some local binaries.
I stumbled upon nvm when installing docpad:
> The above should not require sudo (the # means sudo). If it does, we recommend reinstalling Node.js so that it doesn't. Otherwise you're likely to run into permission problems in the future. Follow the Step 1 instructions to reinstall Node.js without requiring sudo.
I built something similar a couple of years back when I was job hunting using a json and Angular.js, I called it modern resume . Live example can be found here . I got tired of having a resume for each format - plain text, html (website), word document, PDF. Every change had to be made in all the places. I wanted to have a single source of truth. This kind of standardization would be great!
I've been working on a LaTeX-based resume builder (link in profile) and I could see something like this being useful for allowing users to take their data with them and move it between services. Anything that reduces the time it takes for people to input information and see the resulting image/pdf is worth looking into, so I'll be checking this out.
I think we might be conflating 'machine-readable' and 'well-formed/structured' here...
What they're proposing is structure, not machine readability... Technically, with the state of OCR and other methods, many things like LaTeX, PDFs, .DOCs, etc are all perfectly machine readable -- the problem is getting the information out in a meaningful way.... that's usually done by standardizing on structure.
When it comes to specifying structure, XML and JSON are pretty much the front-runners (at least I think so), and since XML isn't so popular lately (since it's so verbose), JSON is in the spotlight now
Machine readability, unless I and the dictionary are mistaken, is related to whether or not you can input the data from some physical medium into a computer. It's not the same as asking whether something you read in makes sense, or is easy to parse, or is well-structured, which is what their idea is related to.
Other than the fact that most of the things I noted are ALREADY in a state that is computer usable (whether it makes sense to humans looking at computers is another question), I was trying to point out that getting the information into a computer (A.K.A. Machine readability) is not the issue we're struggling with now, it's structuring, characterizing and understanding the information.
I mentioned OCR because it's used to parse resumes to find important bits when other methods fail (or someone submits something crazy like a scanned version of their resume instead of the file) -- something that wouldn't be necessary if there was a standard (like is being proposed) to adhere to, that people could semantically find what they wanted from.
Also, if you read closely, I said with the state of OCR AND OTHER METHODS... OCR does not have anything to do with the machine readability of other methods, it's just one method people use to extract data, or for machines to "read" the document.
It depends on the machine, if you're feeding your picture to a machine with image recognition capabilities, it might just be able to tell that it's your ass. Some pretty big companies are working on just that. (not on figuring out if it's your ass, but image recognition in the general sense)
The big picture is to make as many things as possible "machine readable" (things more difficult than resumes), and use machines to work faster than humans ever could.
You could use the "correct" spelling of the word: Résumé.
It took me ages to figure out what this actually was, because your non-standard "lazy" spelling made me think this was about resuming interrupted downloads/transfers of generic JSON data. (Possibly by doing a partial parse of the data that you have got, or over a non-HTTP protocol, otherwise why not just use HTTP "Range:" headers?) I had to unlearn that before the light-bulb went off.
I'm also from the UK, and although I'm part of the "we" who normally use the term CV, due to the incredible pervasiveness of USA culture, I (and probably most of the people I know) am perfectly aware of what a résumé is. I just never expected to see it spelled "resume".
I mean, résumé and resume have the same French root, but in English - even American English as far as I can tell - they're totally different words! Even the pronounciation is completely different. So why would someone spell résumé as resume, especially in the name/title of a project about them?
How is that going to do anything except cause confusion?
Non-English loanwords enter the English language by a process of naturalization, [...] there is a tendency for accents and other diacritics that were present in the donor language to be dropped .
We have words with the same spelling but different meanings and pronunciations all the time - so called Heteronyms . Doesn't seem that confusing to me. To me it'd be pretty weird if people who understood the word rôle were baffled by the word role.
Really? I've always thought of heteronyms as one of the most stand-out features of English that exemplify its confusing inconsistency. More so than the homophones, because it's harder to think of the "other" meanings if you've got the wrong pronunciation in your head.
In reference to the passage you quoted about diacritics, if only you had read as far as the next-but-one paragraph, you might have noticed: "Words that retain their accents often do so to help indicate pronunciation (e.g. frappé, naïve, soufflé), or to help distinguish them from an unaccented English word (e.g. exposé, résumé, rosé)."
I have to admit, I'm having some trouble seeing the value in this... JSON does not strike me as a great format for a document of this nature, although it's certainly possible. Offhand, I'd think XML is a more natural fit for this.
Anyway, more to the point, there has been some existing work done on developing standards for representing resumes. I would highly, highly encourage you guys to look at this and consider making whatever you do compatible with the existing work as much as possible. Consider ResumeRDF for example. Maybe consider doing JSON-LD and using the FOAF and ResumeRDF vocabularies?
That's an interesting point. And to be honest, I'm not sure what the rationale was for including those terms (I wasn't involved with defining ResumeRDF or anything).
I'm guessing it happened because they "borrowed" a generic notion of "person attributes" from some other, less specific, source, and didn't really consider the legal implications you mention.
I guess it's an open question whether or not there's any actual valid scenario where somebody would want to put that stuff. It seems unlikely to me, but maybe in other countries or something? Hmmm... dunno.
In Europe, at least in Germany and Switzerland, it's normal and expected to state your birthday and place of birth. You also include a passport-sized photo of yourself, usually in the top right corner.
Aah, OK. That's pretty interesting, actually. Here in the US it's practically verboten to ask anything about nationality, religion, ethnicity, etc., and conversely pretty much nobody ever volunteers that stuff either.
In some countries this completely legal, and if it wants to be an international standard it should have space for it. (I hope there would be standard filters for each legal area e.g. filter out all protected characteristics for US applications)
This is exactly where XML is the only right choice. JSON is much simpler than XML, thats why lots of people like it. However for documents XML markup is more appropriate. The reasons:
- Allows extensibility with other xml standards (such as SVG and MathML in your resume, which might makes sense)
- Allows linking to other stuff with XLink
- Allows styling it with lots of xml styling technologies.
- Better versioning support
JSON is not bad however, so if you just want to have simple plaint text cv's, json is good enough.
I do agree that with XML comes bloatness, complexity, and more crap. However from a pure technical point of view, its a better option for doing resumes.
Assuming this takes off and everyone uses it (you be the judge of those odds), I can see a standard format being really useful for both employers and job board websites.
Let's say you had a bank of resumes -- you could easily find all resumes that know Java and have had at least 2 jobs and an active GitHub repo, and automatically send out a request to their references.
Currently, you have to read an unformatted PDF and extract the info manually -- it's not the end of the world, but it gets tedious if you're dealing with lots of resumes.
It would be really useful for the people making the resume also. Right now the current mainstream advice is to use Microsoft Word for creation and editing and then (typically) to submit as PDF. Both of those document standards are proprietary and opaque. If you two computers that don't have the same operating system, you're probably SOL for tweaking your resumes across computers as well.
You are right, I am still researching how to manage a standard formally hence why the site wasn't meant to go on HN just yet. If you have any good advice or links to advice for writing and managing standards that would be fantastic.
For example, what is an "RFC track"? I was also hoping that Github Issues might be able to replace the mailing list style of managing standards, what do you think?
This is a neat idea but this schema is a bit...specific in areas. Much like XML schemas of past the great thing about the JSON interchange format is that it's insanely flexible and anything goes (essentially).
I feel like it would be a much better way of handling resume type data if it was self describing rather than using a very specific schema that ties you into a data structure that may not make sense in many cases. In that case you could simply look for different types of data to display versus a very specific format that won't hold up to every use case.
My main concern and same question for my own resume: what skill strings should be used ? Server Administrator or System Engineer ? Programmer or C++ ? etc... That's what will be one of the more challenging things to solve. Otherwise you might have a resume-format, but no way to reliably use that data as a computer, or that out of scope ?
Just use HTML + hResume. hResume is based on vCard and thus the name and address fields are actually sensible rather than hacked together without considering edge cases. It lets you use prefixes and suffixes (like Dr, Prof, Rev, PhD, MD, JD etc.). It lets you format text using HTML tags. You can link to it.
If you want JSON, you can export it from the hResume using a parser.
Unlike JSON (or XML), non-programmers can read HTML in a crazy new piece of technology called a web browser without having to run it through any transformation tool. Want PDF to send to a company? There are a few WebKit PDF renderers available.
Are you kidding? With this, I can more easily skip over those applicants with tons of Java and C++ development experience when I'm looking for a C# developer. No more wasting time on reading resumes with completely unrelated experience!
While I don't jump for opportunities to fiddle with a word processor to make a document like a resume look good, I am curious if this is partially driven by an effort to populate databases with information. While I have been unimpressed by efforts to do this by scanning a doc or pdf file, I am afraid of the possible implications for encouraging poor recruiting techniques. Having a searchable database can be nice, but there are so many other layers to finding good talent.
If you want this to take off, you really need to provide a mechanism for exporting it to a wide variety of large resume handlers (monster, various large employers, etc.) and importing (e.g. from linkedin).
We were nearly going to do a brand change because JSON and YAML are interchangeable and it doesn't really make any sense to just promote JSON in this case. I also love YAML, the problem was writing specification's seems a lot more mature when you follow the json-schema.org project. So I thought why not write it initially in JSON with the json-schema project as a basis and then just supply the tools for people who prefer YAML.
Ugh, json schema is horrible. Have you used orderly? It's far less verbose, more readable and it compiles to json schema.
I agree that making it interchangeable is best overall (especially since there is a 1:1 convertibility between the two languages).
Perhaps the brand should actually reflect this instead. JSON is preferable in a data interchange scenario, but for keeping or displaying a human readable version, YAML is better.
As before, though, it's not YAML/JSON - it's the richness of the import/export filters that will make this idea float or die. Nobody much is going to want this so that they can publish their resume on jsonresume.org. People will want to use it so they can efficiently and easily import their linkedin resume and upload it to [insert fortune 500] company's custom HR portal / top 7 job sites.
Looks nice (and this is coming from someone who's pretty weary of the "hey let's put the whole world on npm" attitude). Seems to be a pretty decently-thought-out structure; after converting to YAML (my preference), it's pretty straightforward to work with.
- I found it a bit odd that 'resume init' only prompted for firstName and personal email; a more complete wizard would be useful. I suppose it wouldn't be hard to create a third-party "JSON resume generator" app with a nice friendly pretty interface for this (it is just JSON, after all).
- As mentioned in other comments, the "firstName" and "lastName" fields make excessive assumptions about the user's native/preferred naming convention.
- The schema only provides for a "blog" element in the "websites" array. More options would be appreciated, since not every personal website is a blog. Alternately (if the intent is really for only one website entry), providing a scalar/string "website" element would be more to-the-point.
- As someone who prefers YAML (it looks so much nicer), built-in support for YAML<->JSON conversion would be awesome for me (i.e. be able to export to / import from YAML). For now I'm fine with using yaml2json/json2yaml, but such import/export functionality would be awesome. Perhaps a command-line switch for exporting (i.e. "resume init --yaml")? Alternately...
- On the above note, would it be possible to make "resume init" output to STDOUT instead of directly to a file? That way, it would be simple to run "resume init | json2yaml > resume.yaml" (for example).
Some things that I think would be useful to add to the schema, in no particular order:
* It's common for resumes to include a full address, so elements supporting that could be added to the location. There should probably be a way to strip this out before publishing it to a public place though.
* I'd like to see a section for volunteer activities. I do some volunteering which, while not related to my day job, is worth highlighting.
* The references section would usually include contact information for a potential employer. Generally this would be a separate page that would be given during an interview. My main resume says "References available upon request" and I have a separate document with my references in it.
The biggest win, in my mind, is that the schema captures the knowledge of what belongs on a resume. Being able to take that single source and produce multiple versions (e.g., the public one, the private one with full details, a list of references, etc), not to mention everything else that comes with a standard schema, is a huge bonus.
As someone from a country with very different resumes, my suggestion would be to be more explicit about this being about US style resumes. If you want decent rendering, you need to focus on one style anyway (too much variation), so just be open about your scope and optimise the hell out of it, saving you a lot of i18n worries (names, addresses etc.).
I have earlier written a similar json resume conversion gem - http://prat0318.github.io/json_resume I am currently working on i18n and a real time conversion web app. I would love to have something standardized and i hope it gets an active community.
This was eventually intended to be presented sans ratings in a little browser plugin, for recruiters and the like to score themselves honestly against the criteria, and a little bit of math would yield a compatibility rating on a click.
It wouldn't take long until such a thing evolved into a more full-featured resume such as this. I like the idea.
Doesn't it ever dawn on anyone that employers insist on detailed, accurate information about applicants, in standardized forms, while the information available about employers is a mess? There's no standard, there's no requirement, and they can mislead in quite creative ways. Hardly seems fair.
I've been thinking about exporting my resume to a similar format (hResume or equivalent) for a while; I find LinkedIn of little value for me.
I can imagine that for certain people it offers opportunities to "network", but in my case it is more an invitation for random people to spam me than a tool to connect.
Beyond the resume, I am wondering if it would be possible to build some kind of decentralized professional network, with resumes as nodes and professional/academic relationships in between, maybe even a vetting system (LinkedIn recommendations are not only time consuming but also worthless IMHO).
Random Project Idea - use this as part of an API which scrapes multiple sites (like Linkedin, Github, Monster, what have you) and builds a single, canonical resume from the various sources using this standard.
I don't know that the themes, necessarily, are that useful (I don't like the idea of implicitly connecting presentation with JSON like that - i'll make my own themes thank you) but I do like the idea of a common transport format for resumes.
Would it make sense to mimic attributes present in LinkedIn's JSON structure? Most people already have a LinkedIn profile, and it would be easy to make a tool that exports LinkedIn profiles into you new open standard.
Isn't the look of your resume one of your competitive advantages as job-seeker?
Sorry I really don't understand the use-case. Having an API is good for styling (as you say), or doing some soft of programmatic transformation to data. I am having trouble understanding the need to do either for a resume.
Maybe it would help as metadata for a search engine, but in that case I think a plain text search would be just as effective?
I think json schema is a really nice thing to have and I'd like to see more people adopt it, but I'm having trouble coming up with the point for this use.
I've actually written my resume in markup for a while just so that I could put it on a nice dynamically driven site. Sort of a fun weekend project (no, it's not hosted anywhere).
While I strongly doubt that this will ever be a standard, I think it's nifty, and potentially useful. It opens up easy, pretty resumes, which the world really needs (Note: I'm not being sarcastic. The number of mountains-of-text word document resumes I've gotten in the past few weeks is too high).
> It opens up easy, pretty resumes, which the world really needs
People have been doing XML+XSLT for their resumes for a long time, yet it really hasn't taken off in a standard way for whatever reason. Not sure this being JSON-based will change that. I guess I'm wondering what this solution brings to the table that previous attempts didn't.
Looks cool, although it looks a bit U.S.-centric and techie-centric.
Other people have mentioned the firstName/lastName problem and the region/state ambiguity. I'll mention a few more items that might be helpful if you really want this to become a worldwide standard:
1. In some countries, it is not only legal but also customary for employers to ask for, and job seekers to include, various demographic information about themselves that would be considered discriminatory in the U.S. For example, sex/gender, date of birth, marriage status, and family details. It would be good to define such fields in the schema but leave them optional. Or define a catch-all field where anyone can add any key-value pair.
1-1. Don't forget the full street address, including the postal code!
1-2. Citizenship. This is very important for companies that might need to sponsor your visa and/or geeen card.
1-3. In some countries, it is customary to include a photograph of yourself in your resume. Perhaps this could take the form of a "photo" field that takes a URL.
1-4. There needs to be a field where you can write down an alternate expression of your name. Many Korean names can be written in either Hangul or Hanja. Most Japanese names are written in Kanji, but often accompanied by Hiragana to help the reader pronounce them properly. A lot of employers in these countries require both forms.
2. Since this is going to be electronically processed, perhaps it would be a good idea to include the ticker code for publicly traded companies in one's employment history? GOOG is much easier to search for than variations of "Google", "Google Inc.", etc.
3. The publications schema will need to be significantly expanded if you want scientists and other academics to even consider using this. Take a look at how academic publications are cited. At the very least, there needs to be a field to specify the type of publication, e.g. book, ebook, edited book, journal article, newspaper article, conference presentation, workshop presentation, blog post, website, etc. There should also be a "doi" field for scientific and other academic publications.
3-1. The education schema needs a "summary" field, just like the employment schema.
4. Some employers prefer to get the content of the reference from the referee him/herself, rather than having the applicant include it in the resume. (Otherwise, the applicant could modify the content.) So you need fields to put the email address (to contact the referee) and a URL (to grab the content of the reference) in the references field. Oh, and don't forget the referee's employer and title/position. Those things matter.
4-1. Bonus points if the content of the reference can be authenticated with the referee's PGP key.
4-2. Extra bonus points if the entire resume can be authenticated with the applicant's PGP key, to prevent hiring agencies from messing with the content.
To clarify, I meant that when looking for a job it is a pain to retype your resume multiple times (because having a human look at candidates apparently isn't a thing, especially at larger organizations). Having a standard format, supported by many employers would have made the process much easier.