# Alternative Approaches

## Comparison Table

| Publishing Legacy Code                                                 | Publishing Modern Code                                   | Publishing Compiled Code                                                   | Publishing Editions                            |                                                                                    |
| ---------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------- |
| Published source code                                                  | **Yes**                                                  | **Yes**                                                                    | No                                             | **Yes**                                                                            |
| Published compiled code                                                | No                                                       | No                                                                         | **Yes**                                        | **Yes**                                                                            |
| Source and compiled code is published                                  | No                                                       | No                                                                         | Yes, however is difficult and non-standardised | **Yes**                                                                            |
| Producers can make use of modern features (e.g. esnext, babel)         | No                                                       | Yes, however at the cost of environments that don’t support those features | **Yes**                                        | **Yes**                                                                            |
| Consumers can make use of modern features (e.g. es modules, flow type) | No                                                       | Yes, however at the cost of consumers that don’t support those features    | Yes, however is difficult and non-standardised | **Yes**                                                                            |
| Consumption always runs latest compatible code                         | No, legacy code always used, even on modern environments | No, modern code may not be compatible with legacy environments             | Yes, however is difficult and non-standardised | **Yes, loaders can automatically load appropriate edition for target environment** |
| Legacy bloat consumed on modern environments                           | Yes                                                      | **No**                                                                     | No, however is difficult and non-standardised  | **No**                                                                             |
| Modern features could break legacy consumption                         | **No**                                                   | Yes                                                                        | **No**                                         | **No**                                                                             |
| Fixing legacy consumption breaks is easy                               | No, likely requires manual code changes or polyfill      | No, likely requires code rewrite or compilation                            | **Yes, change is a compiler flag**             | **Yes, change is a compiler flag**                                                 |
| Consumers informed about this                                          | Yes, however is difficult and non-standardised           | Yes, however is difficult and non-standardised                             | Yes, however is difficult and non-standardised | **Yes, renderers automatically inform consumers of their options**                 |

###
