We had the following considerations in mind when developing Collective Knowledge (CK) and CK-based workflows:
-
Why:
we are passionate about collaborative, reproducible, systematic and reusable R&D.
We have open-sourced Collective Knowledge to help the community collaboratively
tackle grand challenges in computer engineering and other sciences.
-
Open-source/agile:
our vision for Collective Knowledge is to follow the Linux,
Wikipedia and GitHub way for collaborative R&D. To fully
embrace the open-source movement, we use a permissive license,
no strings attached!
-
Community-driven:
by partnering with leading companies, universities and
conferences, we are growing a passionate community of users and
developers to create a public repository of customizable and
reusable artifacts!
-
Simple:
Collective Knowledge is a cross-platform and relatively simple
knowledge management system taking advantage of the best modern
techniques including JSON, Git, Elasticsearch, SciPy,
web services and agile R&D methodology to deal with ever
changing software and hardware stack.
-
Portable and extensible:
minimal software dependencies, plugin-based architecture
and simple JSON API makes CK easily extensible and customizable.
CK components can be assembled together just like LEGO bricks
to focus on problem-solving. Full API validation can be added
at any time after research idea is prototyped and fully validated.
-
Agile documentation (incremental improvements):
We have spent considerable effort to document Collective Knowledge
via community-maintained wiki
covering everything from the basics to advanced use cases including artifact sharing,
universal autotuning and predictive analytics. CK users also write blog articles describing
their own ways to understand, use and extend CK (see
Michel Steuwer's blog).
Feel free to reuse or extend
CK repositories,
workflows,
software detection plugins,
portable packages and
modules
already shared by the community.
Please, check this wiki
for further details about CK development.