You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwhisk.apache.org by OpenWhisk Team Slack <ra...@apache.org> on 2019/02/24 07:15:44 UTC

[slack-digest] [2019-02-23] #random

2019-02-23 00:39:39 UTC - Roberto Diaz: I'm quite confusing... according to this document, this is for runtimes but according to @Michele Sciabarra I should use the actionloop approach for Rust.

As I understand, the actionloop is included in a runtime and the actionloop is just the part that execute the function reading from stdin and writing into fd3 in a continuous loop.

I suppose that this runtime prepares all the thing for you, I mean, expose the `init` and `execute` end point to the system and also storage the code for you. I still have some questions about the compiling because in dome point I should add some code to compile the code on the fly (I understand that this is done by the proxy, correct me if I'm in a mistake).

I was asking about a "sample runtime" or whatever that allows me to insert my own actionloop and where I can do some tests during the development process
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550882379051200
----
2019-02-23 00:57:28 UTC - Rodric Rabbah: Sorry - might not be following yet. 

Do you mean you want to send a init and run request manually to a runtime container you’re developing? 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550883448052700
----
2019-02-23 01:00:31 UTC - Rodric Rabbah: I’m not sure if I’m helping or adding to the confusion with these:

This is the python runtime using action loop as the base <https://github.com/apache/incubator-openwhisk-runtime-python/tree/master/core/pythonActionLoop>

You can see how the dockerfile extends the actionloop
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550883631054400
----
2019-02-23 01:01:12 UTC - Rodric Rabbah: This script <https://github.com/apache/incubator-openwhisk/blob/master/tools/actionProxy/invoke.py> is handy for sending init and run requests to the container that you build and run manually to test its behavior 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550883672055300
----
2019-02-23 01:22:42 UTC - Carlos Santana: @Roberto Diaz if you can give me a rust file and a command to compile an executable I can try build a skeleton runtime. 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550884962056400
----
2019-02-23 01:23:25 UTC - Carlos Santana: A rust file that loops over stdin, readline, and writes a line to fd3 device. 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885005057500
----
2019-02-23 01:24:05 UTC - Roberto Diaz: I'm just starting to explore the solutions
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885045057800
----
2019-02-23 01:24:32 UTC - Roberto Diaz: because I'm thinking about how to deal with dependencies
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885072058800
----
2019-02-23 01:24:41 UTC - Carlos Santana: Then is a small python script that does the compile 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885081059200
----
2019-02-23 01:26:31 UTC - Carlos Santana: For example in swift takes a directory input where all the swift files are and a package.swift that declares the dependencies the single command “swift build” downloads the dependencies and compiles a binary 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885191062000
----
2019-02-23 01:30:09 UTC - Roberto Diaz: in rust with cargo you normally have a project structure with a top level project file including all the dependencies and your code under the src directory
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885409063100
----
2019-02-23 01:30:40 UTC - Roberto Diaz: I suppose that this will be managed uploading a zip file
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885440063700
----
2019-02-23 01:30:56 UTC - Carlos Santana: That becomes your input directory zipped 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885456064100
----
2019-02-23 01:31:41 UTC - Carlos Santana: And the actionloop unzips into a directory for the python script to compile what’s in that directory into an executable
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885501065400
----
2019-02-23 01:33:22 UTC - Roberto Diaz: ok!! it makes sense!
+1 : Carlos Santana
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550885602065800
----
2019-02-23 07:26:28 UTC - Michele Sciabarra: I am writing a tutorial this weekend
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550906788066700
----
2019-02-23 07:28:32 UTC - Roberto Diaz: that would be awesome!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550906912066900
----
2019-02-23 07:29:23 UTC - Roberto Diaz: I have started today downloading the go runtime and I'm getting familiar with it
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550906963067800
----
2019-02-23 07:35:47 UTC - Michele Sciabarra: The key thing is to write a version of the launcher.go in rust
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907347068500
----
2019-02-23 07:36:01 UTC - Michele Sciabarra: This is something I cannot do without learning
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907361069000
----
2019-02-23 07:36:25 UTC - Michele Sciabarra: For the rest I can help and very quickly 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907385069600
----
2019-02-23 07:37:01 UTC - Roberto Diaz: yes! also we need to deal with the dependencies management using cargo
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907421070200
----
2019-02-23 07:37:27 UTC - Michele Sciabarra: Yup but I did something similar for swift
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907447070800
----
2019-02-23 07:37:47 UTC - Michele Sciabarra: So probably the best starting point is the swift42
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907467071700
----
2019-02-23 07:38:12 UTC - Michele Sciabarra: That also supports the swift packaging tool
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907492072600
----
2019-02-23 07:39:35 UTC - Roberto Diaz: I was thinking about implement the functions as a library providing a default implementation and call that library from the launcher
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907575073800
----
2019-02-23 07:39:56 UTC - Michele Sciabarra: <https://github.com/apache/incubator-openwhisk-runtime-swift/tree/master/core/swift42Action>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907596074200
----
2019-02-23 07:40:00 UTC - Michele Sciabarra: Check here 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907600074500
----
2019-02-23 07:40:56 UTC - Roberto Diaz: because I think that we will need to deal with two different user cases:
1) the case where the users provide just a function without any dependencies
2) the case where the users provide a complete project including dependencies
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907656075900
----
2019-02-23 07:41:10 UTC - Michele Sciabarra: Indeed 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907670076500
----
2019-02-23 07:41:34 UTC - Roberto Diaz: or just use only one case... and upload always a zip including a complete library implementation
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907694077600
----
2019-02-23 07:42:46 UTC - Michele Sciabarra: this is why I have to write the tutorial
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907766078000
----
2019-02-23 07:42:54 UTC - Michele Sciabarra: anyway it works this way
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907774078300
----
2019-02-23 07:43:02 UTC - Michele Sciabarra: if you upload a single file
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907782078700
----
2019-02-23 07:43:28 UTC - Michele Sciabarra: you find it in src/exec so you have to copy it to something like src/main.rs
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907808079300
----
2019-02-23 07:43:38 UTC - Michele Sciabarra: add a launcher src/main/launcher.rs
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907818079600
----
2019-02-23 07:43:49 UTC - Michele Sciabarra: and compile everything to bin/exec
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907829079900
----
2019-02-23 07:43:59 UTC - Michele Sciabarra: if you provide a zip file
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907839080100
----
2019-02-23 07:44:06 UTC - Michele Sciabarra: you find the contents in src/
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907846080400
----
2019-02-23 07:44:22 UTC - Michele Sciabarra: then you compile it in some way and place the result in bin/exec
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907862080900
----
2019-02-23 07:45:04 UTC - Roberto Diaz: cool, makes sense
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907904081900
----
2019-02-23 07:45:06 UTC - Michele Sciabarra: actionloop takes you input, unpack in a directory and invoke the compiler scrippt with
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907906082000
----
2019-02-23 07:45:20 UTC - Michele Sciabarra: compile &lt;main&gt; &lt;srcdir&gt; &lt;bindir&gt;
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907920082400
----
2019-02-23 07:45:50 UTC - Michele Sciabarra: I normally copy the exec file to exec__.go add a main__.go and compile it all
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907950083000
----
2019-02-23 07:46:02 UTC - Michele Sciabarra: I use the final "__" to avoid clashes
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550907962083300
----
2019-02-23 07:46:41 UTC - Michele Sciabarra: however you must NOT assume the src/exec is there, if the user uploaded a zip file it will not be there
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908001084000
----
2019-02-23 07:47:00 UTC - Michele Sciabarra: if the user uploaded a single file then it is src/exec
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908020084400
----
2019-02-23 07:47:31 UTC - Michele Sciabarra: but on all those things I can help the "hard" part is to write a launcher.go
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908051085000
----
2019-02-23 07:48:05 UTC - Roberto Diaz: ok!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908085085800
----
2019-02-23 07:48:43 UTC - Roberto Diaz: my main milestone now is get an environment to make my tests
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908123086400
----
2019-02-23 07:49:23 UTC - Roberto Diaz: but from the swift actionloop I have seen that there is a dockerfile using an `actioloop` image
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908163087400
----
2019-02-23 07:49:28 UTC - Michele Sciabarra: I think the simplest example is the python one
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908168087500
----
2019-02-23 07:49:33 UTC - Michele Sciabarra: yes there is
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908173087700
----
2019-02-23 07:49:53 UTC - Michele Sciabarra: you use that to get the proxy and copy in your container
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908193088400
----
2019-02-23 07:49:56 UTC - Michele Sciabarra: ```
env = os.environ
out = fdopen(3, "wb")
while True:
  line = stdin.readline()
  if not line: break
  args = json.loads(line)
  payload = {}
  for key in args:
    if key == "value":
      payload = args["value"]
    else:
      env["__OW_%s" % key.upper()]= args[key]
  res = {}
  try:
    res = main(payload)
  except Exception as ex:
    print(traceback.format_exc(), file=stderr)
    res = {"error": str(ex)}
  out.write(json.dumps(res, ensure_ascii=False).encode('utf-8'))
  out.write(b'\n')
  stdout.flush()
  stderr.flush()
  out.flush()
```
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908196088600
----
2019-02-23 07:50:15 UTC - Roberto Diaz: awesome!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908215088900
----
2019-02-23 07:50:32 UTC - Michele Sciabarra: so
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908232089500
----
2019-02-23 07:50:48 UTC - Roberto Diaz: I need this in order to see what I can get from a rust launcher and how I get the parameters etc...
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908248090100
----
2019-02-23 07:51:14 UTC - Michele Sciabarra: the simplest code to translate is the python one I think
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908274090500
----
2019-02-23 07:51:18 UTC - Michele Sciabarra: the one I pasted
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908278090700
----
2019-02-23 07:52:06 UTC - Roberto Diaz: yes that code is clear! it is much clearer than go (I have no idea about go :P)
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908326091900
----
2019-02-23 07:52:21 UTC - Michele Sciabarra: indeed this is why I pasted it here
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908341092200
----
2019-02-23 07:52:44 UTC - Michele Sciabarra: this is actually the python code of the Python3.7 runtime that uses ActionLoop
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908364093000
----
2019-02-23 07:52:54 UTC - Roberto Diaz: cool
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908374093500
----
2019-02-23 07:53:03 UTC - Michele Sciabarra: if you can translate that one
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908383093700
----
2019-02-23 07:53:07 UTC - Michele Sciabarra: in rust
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908387093900
----
2019-02-23 07:53:17 UTC - Michele Sciabarra: then the rest is easy
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908397094400
----
2019-02-23 07:53:49 UTC - Michele Sciabarra: your Dockerfile shoud be
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908429094700
----
2019-02-23 07:53:50 UTC - Michele Sciabarra: ```
FROM openwhisk/actionloop:latest as builder
FROM rust:1.31
COPY --from=builder /bin/proxy /bin/proxy
ADD rustbuild.py /bin/compile
ADD rustbuild.py.launcher.rust /bin/compile.launcher.rust
ENV OW_COMPILER=/bin/compile
```
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908430094900
----
2019-02-23 07:54:22 UTC - Michele Sciabarra: if you write the rustbuild.py.launcher.rust
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908462095300
----
2019-02-23 07:54:56 UTC - Michele Sciabarra: well so far carlos rob and justin where able to write the compiler script just tweaking my python code
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908496096100
----
2019-02-23 07:57:13 UTC - Michele Sciabarra: this one<https://github.com/sciabarracom/incubator-openwhisk-runtime-actionloop/blob/master/swift4.2.1/swiftbuild.py>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908633097100
----
2019-02-23 07:57:24 UTC - Michele Sciabarra: I think it is the closer to the cargo thing
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908644097400
----
2019-02-23 07:57:27 UTC - Roberto Diaz: awesome!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908647097500
----
2019-02-23 07:57:33 UTC - Michele Sciabarra: so to recap
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908653097800
----
2019-02-23 07:57:43 UTC - Roberto Diaz: thank you! this is very helpful!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908663098300
----
2019-02-23 07:57:44 UTC - Michele Sciabarra: 1. use the Dockerfile as a starting point
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908664098400
----
2019-02-23 07:58:12 UTC - Michele Sciabarra: 2. use the swiftbuild.py as a starting point for the compiler script <https://github.com/sciabarracom/incubator-openwhisk-runtime-actionloop/blob/master/swift4.2.1/swiftbuild.py>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908692099100
----
2019-02-23 07:58:50 UTC - Michele Sciabarra: 3. use the python launcher as a starting point  for the launcher.rust <https://github.com/sciabarracom/incubator-openwhisk-runtime-actionloop/blob/master/python3.7/pythonbuild.py.launcher.py>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908730099900
----
2019-02-23 07:59:03 UTC - Roberto Diaz: perfect!! a clear path!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908743100100
----
2019-02-23 07:59:06 UTC - Roberto Diaz: thanks!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908746100300
----
2019-02-23 07:59:11 UTC - Michele Sciabarra: another thing
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908751100600
----
2019-02-23 07:59:31 UTC - Michele Sciabarra: I normally build the docker image
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908771101000
----
2019-02-23 07:59:34 UTC - Michele Sciabarra: then I do
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908774101200
----
2019-02-23 08:00:17 UTC - Michele Sciabarra: docker run -ti -v $PWD:/bin &lt;image&gt; bash
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908817102000
----
2019-02-23 08:00:36 UTC - Michele Sciabarra: uhm no wait
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908836102200
----
2019-02-23 08:01:17 UTC - Michele Sciabarra: this way you need to put the proxy in another directory
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908877103000
----
2019-02-23 08:02:07 UTC - Michele Sciabarra: oh well
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908927103400
----
2019-02-23 08:02:49 UTC - Michele Sciabarra: ```
docker run -ti -p 8080:8080 -v $PWD:/mnt -e OW_COMPILER=/mnt/compile bash
```
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550908969104300
----
2019-02-23 08:03:27 UTC - Michele Sciabarra: this way you can have your code in your directory
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909007104900
----
2019-02-23 08:03:37 UTC - Michele Sciabarra: and a bash in docker
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909017105200
----
2019-02-23 08:03:45 UTC - Roberto Diaz: yep
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909025105700
----
2019-02-23 08:03:53 UTC - Michele Sciabarra: if will use the compiler /mnt/compile
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909033105900
----
2019-02-23 08:04:05 UTC - Michele Sciabarra: start the proxy with
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909045106100
----
2019-02-23 08:04:23 UTC - Michele Sciabarra: ```
/bin/proxy -debug
```
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909063106400
----
2019-02-23 08:05:04 UTC - Michele Sciabarra: and you will have a lot of debug messages
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909104106800
----
2019-02-23 08:05:13 UTC - Roberto Diaz: perfect!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909113107300
----
2019-02-23 08:05:15 UTC - Michele Sciabarra: then use the invoke.py to test
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909115107400
----
2019-02-23 08:05:31 UTC - Michele Sciabarra: each time the compilation fails
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909131107800
----
2019-02-23 08:05:40 UTC - Michele Sciabarra: just controlc
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909140108100
----
2019-02-23 08:05:49 UTC - Michele Sciabarra: and do find action
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909149108500
----
2019-02-23 08:06:10 UTC - Michele Sciabarra: you will see stuff like action/1/src action/2/src etc
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909170109000
----
2019-02-23 08:06:28 UTC - Michele Sciabarra: so you can check what your compiler did
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909188109400
----
2019-02-23 08:06:51 UTC - Roberto Diaz: awesome!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909211109900
----
2019-02-23 08:07:06 UTC - Michele Sciabarra: I normally have a <http://main.rs|main.rs> then do an invoke.py init <http://main.rs|main.rs>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909226110300
----
2019-02-23 08:07:12 UTC - Michele Sciabarra: to see that the proxy does
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909232110600
----
2019-02-23 08:07:43 UTC - Michele Sciabarra: this is what other people used to write their runtimes
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909263111100
----
2019-02-23 08:07:52 UTC - Roberto Diaz: I see
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909272111300
----
2019-02-23 08:09:09 UTC - Michele Sciabarra: <https://github.com/apache/incubator-openwhisk/blob/master/tools/actionProxy/invoke.py>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909349111500
----
2019-02-23 08:09:14 UTC - Michele Sciabarra: the invoke.py is here
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909354111700
----
2019-02-23 08:09:27 UTC - Michele Sciabarra: this will simulate a wsk action create
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909367112100
----
2019-02-23 08:09:45 UTC - Michele Sciabarra: invoke.py init <http://main.rs|main.rs> will post to localhost:8080
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909385112500
----
2019-02-23 08:10:08 UTC - Michele Sciabarra: note you can invoke init only once
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909408112800
----
2019-02-23 08:10:20 UTC - Michele Sciabarra: then you have to ^c and restart the proxy
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909420113200
----
2019-02-23 08:10:26 UTC - Roberto Diaz: oki
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909426113400
----
2019-02-23 08:10:49 UTC - Michele Sciabarra: but it will not remove the sources (if you used -debug)
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909449113800
----
2019-02-23 08:11:06 UTC - Michele Sciabarra: you will find in action/1 action/2 and so on
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909466114200
----
2019-02-23 08:11:15 UTC - Michele Sciabarra: the latest is the higher
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909475114500
----
2019-02-23 08:11:36 UTC - Michele Sciabarra: ok I dumped my memory for everything else just ask
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909496114900
----
2019-02-23 08:13:20 UTC - Michele Sciabarra: I use this discussion for the tutorial :slightly_smiling_face: but basically this is what should be the content
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909600115500
----
2019-02-23 08:15:28 UTC - Roberto Diaz: awesome!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909728115700
----
2019-02-23 08:15:52 UTC - Roberto Diaz: if you need feedback for the tutorial do not hesitate to contact me
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909752116300
----
2019-02-23 08:16:23 UTC - Roberto Diaz: I'm totally newbie and I could work as a mvp for the tutorial :stuck_out_tongue:
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550909783117000
----
2019-02-23 08:30:07 UTC - Michele Sciabarra: no worries as I said if you can write the <http://launcher.rs|launcher.rs>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910607117400
----
2019-02-23 08:30:19 UTC - Michele Sciabarra: I can easily help you with the rest
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910619117800
----
2019-02-23 08:30:29 UTC - Michele Sciabarra: I usually need 1 hour to write a runtime :smile:
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910629118100
----
2019-02-23 08:30:47 UTC - Michele Sciabarra: when I have the launcher
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910647118500
----
2019-02-23 08:31:43 UTC - Michele Sciabarra: I found an example here <https://github.com/joewalnes/websocketd/blob/master/examples/rust/greeter.rs>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910703118800
----
2019-02-23 08:31:52 UTC - Michele Sciabarra: that is very close
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910712119100
----
2019-02-23 08:32:05 UTC - Michele Sciabarra: but I do not know how to decode and encode in json in rust
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910725119500
----
2019-02-23 08:32:39 UTC - Michele Sciabarra: probably using serde
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910759119900
----
2019-02-23 08:33:31 UTC - Michele Sciabarra: normally we pass as parameter to main functions something closer to a map
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910811121000
----
2019-02-23 08:33:47 UTC - Michele Sciabarra: in go it is a map[string]interface{}
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910827121500
----
2019-02-23 08:33:56 UTC - Michele Sciabarra: in java is Gson object
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910836121800
----
2019-02-23 08:34:41 UTC - Michele Sciabarra: in rust maybe it is a HashMap&lt;String,?&gt;
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910881122400
----
2019-02-23 08:35:19 UTC - Michele Sciabarra: you tell me
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550910919122900
----
2019-02-23 14:03:08 UTC - Michele Sciabarra: I remember there was a document describing how to impement a runtime
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550930588123500
----
2019-02-23 14:03:12 UTC - Michele Sciabarra: where is it?
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550930592123800
----
2019-02-23 14:04:13 UTC - Rodric Rabbah: <https://github.com/apache/incubator-openwhisk/blob/master/docs/actions-new.md>?
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550930653124000
----
2019-02-23 14:09:08 UTC - Michele Sciabarra: great
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550930948124200
----
2019-02-23 14:28:59 UTC - Michele Sciabarra: with that name is very easy to miss it - it is actions-java actions-nodejs etc
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932139124900
----
2019-02-23 14:29:03 UTC - Michele Sciabarra: and it is not linked
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932143125100
----
2019-02-23 14:34:38 UTC - Carlos Santana: Yes change the name !!
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932478125400
----
2019-02-23 14:35:08 UTC - Michele Sciabarra: ok, will do, I am writing a doc on actionloop
tada : Carlos Santana, Roberto Diaz
yay : Roberto Diaz
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932508126400
----
2019-02-23 14:35:18 UTC - Carlos Santana: actions-new-runtime.md
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932518126800
----
2019-02-23 14:35:33 UTC - Carlos Santana: Link from readme and main index doc 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932533127300
----
2019-02-23 14:35:46 UTC - Michele Sciabarra: yup agreed
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932546127800
----
2019-02-23 14:36:45 UTC - Rodric Rabbah: It is linked 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932605128000
----
2019-02-23 14:36:53 UTC - Rodric Rabbah: But maybe not so prominently 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932613128400
----
2019-02-23 14:36:56 UTC - Michele Sciabarra: where
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932616128800
----
2019-02-23 14:37:01 UTC - Rodric Rabbah: In this paragraph: Longer tutorials that are specific to a language of your choice are listed below. We recommend reading the basics in this document first, which are language agnostic, before getting deeper into a language-specific tutorial. If your preferred language isn't supported directly, you may find the Docker action or native binary paths more suitable. Or, you can create a new runtime.
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932621129200
----
2019-02-23 14:37:15 UTC - Carlos Santana: Just lies @Rodric Rabbah just lies 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932635129300
----
2019-02-23 14:37:19 UTC - Rodric Rabbah: <https://github.com/apache/incubator-openwhisk/blob/master/docs/actions.md#languages-and-runtimes>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932639129600
----
2019-02-23 14:37:23 UTC - Carlos Santana: You just merged that now 
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932643129900
----
2019-02-23 14:37:31 UTC - Rodric Rabbah: :joy::man-shrugging:
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932651130100
----
2019-02-23 14:37:35 UTC - Carlos Santana: LOL
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932655130400
----
2019-02-23 14:37:36 UTC - Rodric Rabbah: You approved it
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932656130500
----
2019-02-23 14:37:54 UTC - Rodric Rabbah: +1 make it better
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932674131000
----
2019-02-23 14:38:04 UTC - Carlos Santana: Good Morning :sunny: everyone 
heart : Rodric Rabbah
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932684131300
----
2019-02-23 14:39:01 UTC - Michele Sciabarra: I will add a section "Developing Runtimes" with your doc and my actionloop doc
+1 : Rodric Rabbah, Carlos Santana
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550932741132400
----
2019-02-23 15:06:10 UTC - Carlos Santana: <https://twitter.com/chrismunns/status/1099096415043833856?s=21>
https://openwhisk-team.slack.com/archives/C3UDXSFA6/p1550934370133200
----