## Critical User Journey 5: Add implementations via code or composition
**Job To Be Done**
When <situation> I want to <job> so I can <expected outcome or motivation>
**Acceptance criteria**
An editor user...
* [ ] Should be able to find a function from the Wikifunctions landing page
* [ ] Should be able to easily navigate to the page for adding an implementation to this function
* [ ] Should get a clear idea of what's the difference between implementation with code vs. function composition
* [ ] Should be able to choose whether to write code or create a function composition
* If code
* [ ] Should be able to select a valid and accepted programming language to write the code with
* [ ] Should get the necessary guidance to write the function
* Blank function code snippet
* How to use the function input parameters in the code
* How to access the properties of the input parameters in the code
* How to return the required value in the right format
* If composition
* [ ] Should be able to create the function call that will create this composition
* [ ] Should be able to publish a new implementation successfully
* [ ] Should be able to successfully see the new implementation in the function page once it's successfully saved
* [ ] If something failed, should be able to see what was the problem so that it can be corrected
---
##Completion checklist
//During the review process, edit and check these items to reflect the completion status of this epic//
* **Functionality**
* [ ] Every project (repository) involved in this user story has its separate Phabricator task
* [ ] Every related task should passes its completion checklist
* [ ] The tests for every involved project pass successfully
* [ ] The build process for every involved project passes successfully
* [ ] Coverage for every involved project has improved or stayed the same
* **Design**
* [ ] Design review on updated software
* [ ] Test concept via an Alpha, Beta or Prototype with partner communities and those potentially impacted by feature, in their preferred language
* **Documentation**
* [ ] Has related and updated documentation, E.g.:
* Internal technical changes: internal repository documentation must be updated (README.md, JSDoc, PHPDoc)
* Infrastructure technical changes: technical changes that reflect on environment, infrastructure, endpoints or any other area of interest for technical contributors should be reflected on MediaWiki extension pages.
* Product or model changes: should have related documentation updated in meta
* **Versioning**
* [ ] If changes in submodule packages are involved, every project that uses this submodule has updated submodule version and passes tests and build