Skip to content
 

Introduction
๐Ÿ”—

The popularity of JavaScript and related technologies has exploded. As a result there are now numerous open source projects which rely on the language. JavaScript is widely used for web development and it sees further use beyond the web. The popularity and on-going evolution of the web platform poses a significant maintenance challenge to developers.

The purpose of this book is to give insight into these particular concerns. Even though the focus is open sourced, you will find techniques and ideas that go beyond this.

What Will You Learn
๐Ÿ”—

The book shows you how to organize npm packages and manage them. You will also learn about higher level topics, such as code quality, infrastructure, documentation, and future prospects. A good project is more than the technical implementation. For that reason you should understand whatโ€™s beyond the technical side as this knowledge has impact on project longevity and success.

How Is the Book Organized
๐Ÿ”—

The book has been split into a few distinct parts, each of which discusses the topic from a different angle. You can approach them one by one in any order you prefer and pick up techniques and ideas as you go along.

The parts of the book have been designed as follows:

  • Packaging shows how to package your npm projects. You will also learn how to manage your code effectively as you understand ideas like release management and monorepos.
  • Code Quality discusses how to maintain the quality of your project on a high level. You will learn what code quality consists of and how to manage it.
  • Infrastructure shows how to develop support structure around the project and keep it maintainable so that other people can contribute. You will also learn about scaling the project while buying yourself time to continue progressing.
  • Documentation is often overlooked, but itโ€™s a vital aspect for projects that are meant to be consumed by a wider community. The part shows how to achieve this to support the growth of your project.
  • Future and project longevity is important as without thought itโ€™s possible to end up with a failure. To succeed, you have to think about success first and plan carefully.

Thereโ€™s a short conclusion chapter after the main content that recaps the main points of the book. This contains a checklist that allows you to go through compare your projects with the bookโ€™s recommendations.

The appendices cover secondary topics and sometimes dig more deeply into the main ones. You can approach these in any order you wish, depending on your interests.

Who Is the Book For
๐Ÿ”—

If you develop or maintain a web project, be it open source or not, you will have something to learn from this book. It captures aspects related to this particular niche allowing you to develop more effectively.

The book wonโ€™t teach you to use a specific language. Instead, it covers higher level topics and shows how they fit together. This higher level knowledge has value, regardless of your technology stack. The focus is on the web and open source, but certain ideas transcend the book despite this.

Book Versioning
๐Ÿ”—

Given this book receives a fair amount of maintenance and improvements, thereโ€™s a versioning scheme in place. Release notes for each new version are maintained at the book blogโ†—. You can also use GitHub compare tool for this purpose. Example:

https://github.com/survivejs/maintenance-book/compare/v0.9.0...v0.9.18

The page shows you the individual commits that went to the project between the given version range. You can also see the lines that have changed in the book.

The current version of the book is 0.9.18.

Getting Support
๐Ÿ”—

If you run into trouble or have questions related to the content, there are several options:

If you post questions to Stack Overflow, tag them using survivejs. You can use the hashtag #survivejs on Twitter for the same result.

Additional Material
๐Ÿ”—

You can find more related material from the following sources:

Acknowledgments
๐Ÿ”—

This book wouldnโ€™t have been possible without the earlier efforts. Anyone who contributed there deserves my thanks.

Special thanks to Gavin Orlandโ†— for editing.

Thanks to Simon Lydell, Ryan Stegmann, Oliver Isenrich, Karen Grigoryan, and many others who have contributed direct feedback for this book!

โ†Previous
Nextโ†’

Comments
๐Ÿ”—