Solvedmithril.js Fix Mithril's ad-hoc, confusing release process

Given increasing numbers of duplicate, already-fixed issues in docs and elsewhere, I feel it'd be helpful if we started better structuring and documenting our release process, as opposed to the ad-hoc mess that goes on now.

@lhorie @tivac I've assigned you two because you're the ones who can actually control releases.

23 Answers

βœ”οΈAccepted Answer

It might also be a good idea to have the site auto-updated from changes to docs within master, so we can cherry-pick relevant commits from next as applicable without doing a manual rebuild each time.

That's what #1689 is for, though it'll require @lhorie to make some changes to the hosting for before it'll take effect.

I'm all for this, here's my preferred flow.

  1. Ensure next is passing tests
  2. Integrate next to master
  3. Ensure master is passing tests
  4. npm version <major|minor|patch. -m "v%s" (to ensure the auto-generated tag looks nice)
  5. preversion lifecycle script builds bundle & runs tests
  6. version lifecycle script kicks in using @studio/changes or something similar to mostly auto-generate changelist
  7. postversion lifecycle script pushes changes to github
  8. Travis runs build, doesn't commit bundles (since the bundle was generated locally & hasn't changed)
  9. gh-pages branch updated with latest docs changes
  10. A github release is automatically created with... something. Needs more investigation!

Right now there's a few things that need decisions before that flow can work.

  1. any docs push to master will update the site. That's convenient for doc fixes, bad for new features. We'll need to determine if we care and potentially limit pushing docs to just tagged commits.
  2. there's no changelist auto-updating in place. I've got a flow I like for personal projects that I'd be happy to apply to mithril, but will need sign-off from at least one other maintainer and preferably Leo.
  3. We need to agree on the threshold for a release. IMO we should shoot for at least one patch-level release a month assuming that some changes have landed.
  4. We need to decide on whether or not we're strictly following semver or not. Mithril has not in the past, and considering the effort involved in getting the 1.0 release out the door we may want to keep it semver-ish for now.

Other Answers:

πŸ‘ from me @tivac

Last bit of build automation is #1741, the release process thing is a potentially bigger question.

I vote that we release 1.1.0 on Monday, March 27th. I'm happy to do that work around 9:30AM PDT.

Any concerns @lhorie @isiahmeadows @pygy? I don't see any issues in that milestone that are blocking the release.

Also just to clarify, anybody that can merge and tag a commit on master can push a release to NPM. It's all automated via Travis. It'll use my creds so I get to take credit for your hard work (πŸ˜‰) but I promise you don't need me around.

Related Issues:

mithril.js Criticisms of Mithril's stream architecture
Implemented changes as of 6ce2a38: m.request / m.jsonp return Promise Streams are now simplified (no...
mithril.js Fix Mithril's ad-hoc, confusing release process
It might also be a good idea to have the site auto-updated from changes to docs within master ...
rails rails c doesn't start the rails console.
works for me: ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/li...
scrapy ' error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 '
@euler16 for scrapy with Python 3 you'll need with Python 2 you'll need I wanted to install scrapy i...
meteor [] Error: ENFILE: file table overflow
I was getting the same after an upgrade to macOS Sierra Turns out macOS have a harsh limit on number...
framework query that worked in Laravel 5.2 gives me error in Laravel 5.3
Ok Laravel can also enable this mode when querying This query works in 5.2: my gallery table looks l...
rails ActiveSupport::MessageEncryptor::InvalidMessage Rails 5.1 secrets
hey @niightly I had the same problem I just delete config/credentials.yml.enc I generated secrets.ym...
framework [5.4] SQL error when migrating tables
In your appserviceprovider boot method try adding Best sure to import Illuminate\Support\Facades\Sch...
ngx admin No PostCSS Config found with build:prod
Or you can create a file named postcss.config.js in root directory Just leave it empty or write the ...
framework Laravel not compatiable with php 7.2
I solved the problem putting the next code at the beginning of the controller: If you don't know wha...
rails Tests cause ThreadError: already initialized with Ruby 2.6.0
@markets this is caused by rails reusing ActionController::TestResponse object in tests can be fixed...
gin Got "ambiguous import: found in multiple modules" after upgraded to latest (1.3.1)
I find a way to fix this problem you can use replace command to set package alias I added the follow...
lumen framework 'ReflectionException' with message 'Class does not exist'
In my case (lumen 5.3.3) got fixed by adding following lines right after $app definition in bootstra...
meteor formData not working , after append , i got empty form data
This has nothing to do with Meteor you're using FormData wrong or expecting it to do something it's ...
framework Laravel 5.8 update breaks third-party composer libraries
I've been going over the comments here a few times since the issue was opened again and want to say ...
framework sql_require_primary_key Causes Tables With String Primary Key To Fail
I've had the following response from DigitalOcean regarding this issue: I understand you are getting...
vue Await async component lifecycle hooks
This is the actual code that I want to be awaited: Which would be part of the UserPage component. ...
ionic framework Bugs when run ionic cordova run ios --device or use --target options
Hi @fwagner thank you for the good news I already build and upload to production So the problem here...
framework php artisan make:auth conflicts with route:cache 'Unable to prepare route [api/user] for serialization. Uses Closure.'
@themsaid Please stop throwing responsibility on the others This is definitely a bug ...
vue Cannot import from a typescript Vue component into another typescript Vue component
This is because you don't have declarations of .vue files then the typescript compiler cannot load t...
framework Laravel 6 proc_open
It is because of Flare error reporting service enabled in debug mode There is a workaround for this ...
rails ActiveStorage with Rails API
@NicholasLYang for a variant you need to use rails_representation_url(variant) - this will build a u...
framework Pass additional parameter to API Resource
@yanhao-li This is very much possible - you just have to overload the constructor of the Resource yo...
fastapi WARNING: Unsupported upgrade request.
This error is not part of the FastAPI codebase When attempting to run this (using UviCorn) it starts...
hapi Joi validation error does not provide detailed information in response
@WesTyler Got it Thanks for the quick response In case someone else comes across this issue here is ...
vue v-html does not work with filters
You can use $options.filters : Vue.js version 2.1.3 Reproduction Link
nuxt.js Babel "loose" option error spamming in console on fresh project
With yarn please pin your babel deps manually in your package.json then use yarn install again: With...
framework Error creating a new project using PHP Version < 7.0
@ArronStudio @rkgarcia try to delete composer.lock file in root folder and run composer install agai...
framework [5.7] Sqlite & dropForeign
I found a way to replace sqlite connection don't update any migration Hopefully can help. ...
graphene Graphene real-time subscriptions and Apollo client graphql integration
@Eraldo @hballard Yes I think I should post an update here as I'm working full on subscriptions now ...
nuxt.js Getting sass error when including bulme. Using adonuxt.
@alanaasmaa @motia I found the solution This works for me nuxt.config.js ref
vue [feature] Ability to disable Vue observation
If you need to skip observation for an object/array in data use Object.freeze() on it; You don't nee...
ionic framework Ionic v3 - Runtime Error Uncaught (in promise): removeView was not found
If you call loading.dismiss() manually I don't recommend to use dismissOnPageChange you are probably...
framework [5.4] "npm run watch" doesn't watch for changes on Windows.
npm run watch-poll works fine for me in laravel 5.4 Laravel Version: 5.4 PHP Version: 7.0 node v6.9....
vue Inject/Provide is not reactive
I'd like to point out two possible solutions to this problem: There is a plugin/mixin now by @LinusB...
rails New mimemagic version licensed under MIT
Just sharing this because I haven't see anyone else throw together a quick solution to get back up a...
nest Proper way to initialize config
Creating new abstractions like modules dependent on providers directly might create too much mess Ho...
meteor Apache ProxyPass websocket problem
Hello @cellulosa Sorry for late return this setup is working for me: The error page SSL and rewrites...
Rocket Compile with stable Rust
Rocket uses much more than just plugins from nightly The following features need to be stabilized be...
vue Official way to modify page metadata/title/etc.
Ok I don't have any experience with SSR As briefly discussed here: vuejs/vue-hackernews-2.0#78 (comm...
ionic framework How to disable scroll for ion-content in ionic 2?
If anyone is still having trouble with this add no-bounce to ion-content and see if that fixes it <i...
framework Laravel 6.3 Action Facade\Ignition\Http\Controllers\ShareReportController not defined
First see if the migrations have ran with php artisan migrate Try this if that doesn't work php arti...
rails Misleading deprecation warning when referencing ActionController::Base
Got this in my app on 6.0.1 Steps to reproduce Create a new app with Rails 6.0.0.rc1 Add a reference...
scrapy Issue with running scrapy spider from script.
I would try to downgrade your twisted version from Twisted==16.7.0rc1 to Twisted==16.4.1 ...
rails ActiveRecord::HasManyThroughOrderError
Apparently it meant literally order I was having this problem and I'm not sure if everyone having th...
fastapi [QUESTION] How to bridge Pydantic models with SQLAlchemy?
I just finished integrating Pydantic ORM mode into FastAPI it is released as version 0.30.0 πŸŽ‰ The n...
vue Cannot read property 'components' of undefined"
I encountered this error and what solved it was changing a line in my component from: import getList...