New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
What's the deal with breaking changes? #1113
Comments
As I said in the other issue, Ben and I went through a couple changes to improve backwards-compatibility, but ignored the The philosophy Ben shared with me and one I think we should take to hear is don't modify behaviour on GitHub Pages without plenty of warning (e.g. relative vs. absolute permalinks). When things go wrong and are changed, have an easily-findable docs page which explains the problem and solution in clear terms. Hopefully the Jekyll blog posts will help with this in the future. Whenever GH Pages updates to a newer version of Jekyll, the blog post on jekyllrb.com will be there to link to (if so desired). To some degree, we'll need allow for breaking changes. At the same time, I agree that we should minimize the frequency of breaking changes and do whatever we can to offer some means of backwards compatibility for GH Pages' use. I'd love to get @mattr-'s thoughts, and @mojombo's thoughts if he has the time. |
I was just bumped back to an old issue (#453) in which @mojombo wrote the following:
... and ...
So I would say this project, if GH Pages wishes to continue using it, should be especially aware of breaking changes and, at all costs, prevent pushing changes that break current functionality unless it is necessary to do so. I think it would be appropriate to break things in the default behaviour, but there should - as much as possible - be some means of preserving the previous behaviour for GH Pages. |
@parkr you summed up my feelings exactly. We're also pushing the project faster than it's ever gone before. Jekyll had almost zero activity six months ago. Between then and now, we've released two major versions (one of them being 1.0), closed a ton of issues, merged a fair amount of pull requests, etc. (@parkr did it mostly). I'm actually kinda surprised we didn't break more stuff. |
Full disclosure, my background is from the WordPress community where breaking changes is verboten to say the least, so the idea of causing users pain just to achieve more pristine or computer sciency code is foreign to me. I think there's a lot of parallels Jekyll can draw from WordPress (hacker culture which often creates its own, better design patterns; commitment to simplicity; non-technical userbase; and transition from blog to CMS-ish). Interesting, a talk my buddy @nacin gave today on essentially this very issue:
The service/software distinction is valid, and I think things fall pretty squarely there. But even if this was just a software project, we're building software for hoomans, not computer scientists. Using the example that sparked this all, yes, it's technically more proper to represent data as an array, rather than as a comma separated list, but our users don't care. They don't care what version they're running, or if reaching some arbitrary number gave you the confidence to provide them with a sub-optimal user experience. Obviously there are case-by-case decisions, but in the end, let's build software for users, not for computers or to achieve logical ideals. What attracted me to Jekyll was exactly what @mojombo outlined. Zen-like simplicity. Let's keep things as simple as possible for the user and absorb all the complexity and chaos in the world on their behalf. |
@benbalter A living document indeed. 😄 But don't date him - that comment is from a month ago :) |
Worth noting that we also have a similar service-software split for WordPress, given that WordPress.com runs a hosted version. It is important for us not only to "absorb all the complexity and chaos," as @benbalter wrote, but it is also important for WordPress.com to absorb some of its own chaos. Basically, if GitHub has unique needs when it comes to Jekyll, then that's something that may need to be solved within GitHub, not necessarily by Jekyll. Just some food for thought. Thanks for the shout-out, Ben. |
Given there was an announcement that GitHub pages was upgraded to v1.x.x, it would make sense people upgrade their local Jekyll for building/testing their site to the same version and check before you push to GitHub. The change doesn't really apply unless you 'update' your repo and push, in which I would expect someone to have tested their changes locally first. |
Cross linking @parkr's comments from #1236 as they do a great job of articulating the problem:
|
Jekyll follows semantic versioning at the end of the day, and pre 1.0 doesn't set the public API in stone, updates to 1.0 can and may have breaking changes that is the life of a project following semantic versioning. As far as I am aware GitHub Pages doesn't just use one markdown render it installs multiple gems for all the supported renderers in Jekyll because people can choose a different renderer. Also did the 'default' renderer change? |
@tombell the question @parkr was addressing in #1236 was not whether semantic version allowed for breaking changes at major milestones, or whether the project was semantically versioned, but whether given our diverse and often non-technical current and future user base, if when facing decisions such as our preference for one markdown render over another, should we do so in a way that knowingly causes significant pain for our users or should we absorb the complexity of software development on their behalf, and seek more transparent solutions. |
From looking at recent Jekyll changelogs (especially since 2.0), it seems to me like Jekyll does not follow semantic versioning. Configuration file defaults often change to values that seem like they could cause back compatibility issues (for example, handling subdirectories in Note: I think GitHub handles their end of the problem (with GitHub Pages) just fine. I would prefer GitHub Pages to allow specifying a Jekyll version for each site, though that would likely be very difficult to set up. I think that the current system of sending warnings is reasonable, but what I'm concerned about is Jekyll's own versioning, and not breaking changes on GitHub Pages in particular. |
I think we're doing OK. The |
Moving the discussion from #1109 (comment), via @dhcole:
The text was updated successfully, but these errors were encountered: