Situated design and universal maintenance: a software evolution pattern inspired by the free/libre open source software development