How do you evaluate which technologies, frameworks, or libraries to use when starting a complex new software project?