profile
viewpoint
Yorkie Liu yorkie Learning & exploring

alibaba/pipcook 369

基于 tfjs-node 的前端算法工程框架 front-end algorithm engineer platform based on tfjs-node

Southern/node-x509 92

Simple X509 certificate parser.

cocos-creator/firedoc 69

API Doc generator based on YUIDoc

koajs/koa-range 38

range request implementation for koa, see http://tools.ietf.org/html/rfc7233

macacajs/macaca-puppeteer 35

Macaca puppeteer driver

rvagg/archived-servertest 31

A simple HTTP server testing tool

cocos-creator-packages/ui-kit 30

The UI kit used in Editor Framework

cocos-creator-packages/ui-grid 7

A grid scale widget implemented by pixi graphcis module (WebGL)

weflex/react-touchable-tabular 4

A React Component to used to view tabular data based on facebook/fixed-data-table

cocos-creator/firedoc-theme-notab 3

A new theme without tab in navigation sidebar

issue commentalibaba/pipcook

Boa: magic functions are not working as expected

It seems that some operations in class initialization are lost.

utkobe

comment created time in 6 hours

issue commentalibaba/pipcook

pipcook shoud looks like one project?

See https://github.com/alibaba/pipcook/pull/52 and https://github.com/alibaba/pipcook/pull/46, we have finished some related works as you described before.

In short,I proposal we need to simplify pipcook structure by using lightweight framework,remove redundancy files,planing development mode for plugin

Could you please give more details so that we can have more to talk about :)

Txiaozhe

comment created time in 6 hours

issue closedalibaba/pipcook

Boa: support of magic function overriding

Currently Boa does not support function overriding for those magic functions in python. Just open this issue to track the progress of this work.

For example

const boa = require('../packages/boa');
const sys = boa.import('sys');
const torch = boa.import('torch');

class customDataset extends torch.utils.data.Dataset {
  __len__() {
    return 5;
  }
  __getitem__(index) {
    return 2;
  }
}

const dataset =  new customDataset();

console.log(dataset.__getitem__(2));

now it gives error

Error: NotImplementedError:

closed time in 21 hours

utkobe

push eventalibaba/pipcook

utkobe

commit sha 402b0e21d2dd55b61368aeb2b34043159498d5ea

deploy: c29f0545a3818b450befb81c97eec238b53f8a84

view details

push time in a day

issue openedalibaba/pipcook

meta: define the ML low-level APIs for plugin developer

The ML low-level API is the basic layer that provides the basic ML power for plugin developers.

created time in a day

PR opened alibaba/pipcook

Reviewers
doc: remove the links that not exists at siderbar documentation

We should removed the sidebar links after #62.

+0 -2

0 comment

2 changed files

pr created time in a day

create barnchalibaba/pipcook

branch : fix/missing-removals

created branch time in a day

push eventalibaba/pipcook

yorkie

commit sha d713b620100ea51902eff94cedb9300797d84c2d

deploy: 2948a9081cd55dadd2f7212a2dd6e573329da2d3

view details

push time in a day

push eventalibaba/pipcook

Ruikun Cao

commit sha 2948a9081cd55dadd2f7212a2dd6e573329da2d3

doc: remove deprecated and useless guide (#62)

view details

push time in a day

delete branch alibaba/pipcook

delete branch : fix-doc

delete time in a day

PR merged alibaba/pipcook

fix out-dated doc bug documentation

There is one doc which describes features that are abondoned for some time. Just to remove them. Please have a review please @yorkie

+0 -126

0 comment

4 changed files

utkobe

pr closed time in a day

push eventalibaba/pipcook

yorkie

commit sha 1e4f16a8401eec9e4e8c1841b157b0083b6f69b7

deploy: 5a9f76f8d79f979de77e1c433e501a2c68d911a2

view details

push time in a day

push eventalibaba/pipcook

Jim Tang

commit sha 5a9f76f8d79f979de77e1c433e501a2c68d911a2

build: add lint rule make code standard. (#60)

view details

push time in a day

PR merged alibaba/pipcook

lint: add lint rule make code standard. build
  • add lint rule:
'comma-spacing'
'indent'
'keyword-spacing'
'array-bracket-spacing'
'space-infix-ops'
'object-curly-spacing'
'semi'
'eol-last'
'comma-dangle'
'no-multi-spaces'
'no-multiple-empty-lines'
'no-irregular-whitespace'
'arrow-parens'
'arrow-spacing'
'block-spacing'
'brace-style'
'comma-style'

docs for eslint rule

  • why not add 'max-len' to limit the length of every line? there are too many lins like:
import { xxx, xxx, xxx, ... } from 'xxxxx/xxxxxxxx'

these are always more than 80 col but the code would be more disorderly if make it less than 80 col by line feed.

+825 -812

0 comment

65 changed files

Txiaozhe

pr closed time in a day

delete branch yorkie/tfjs

delete branch : fix/bazellisk

delete time in a day

issue commentalibaba/pipcook

Boa: support of magic function overriding

There is an workaround as:

dataset.__getattr__('__getitem__').invoke(10).toString()

This is because the lookup algorithm of getting property is the builtin method first.

utkobe

comment created time in 2 days

issue commentalibaba/pipcook

meta: ML Application

@utkobe I have simplified the Modules and APIs, and now we are more focusing on the vision and nlp.

yorkie

comment created time in 2 days

pull request commenttensorflow/tfjs

core: update the @bazel/bazel to recommended bazellisk

@dsmilkov @kangyizhang Added bazel version file, thank you :)

yorkie

comment created time in 2 days

push eventyorkie/tfjs

yorkie

commit sha 19d16e7aab15ba8ee22782e5a5604193beb0bfde

add bazel version

view details

push time in 2 days

pull request commenttensorflow/tfjs

core: update the @bazel/bazel to recommended bazellisk

See https://github.com/bazelbuild/bazelisk#how-does-bazelisk-know-which-bazel-version-to-run-and-where-to-get-it-from, we are using the official latest Bazel release if we don't have this version file, @dsmilkov do you know which version should we declare here?

yorkie

comment created time in 3 days

issue commentalibaba/pipcook

meta: how to work with tensorboard

The tfjs API: https://js.tensorflow.org/api_node/1.7.0/#node.tensorBoard

yorkie

comment created time in 3 days

MemberEvent

push eventalibaba/pipcook

utkobe

commit sha ced257855f2dc7a1f0504db92082f2f063e99602

deploy: 2a63d4adeada69ce26ebe8de1fa69d78fa96a45b

view details

push time in 3 days

pull request commentsindresorhus/awesome-nodejs

add pipcook to the section "mad science"

Hi @sindresorhus May I ask you help me review this again, is there another reason that you are not going to merge this?

yorkie

comment created time in 3 days

issue closedalibaba/pipcook

Could we provide a source easier to download libtensorflow?

It is difficult to download libtensorflow when user init project, install dependents and so on because of the reason of network as everyone knows; Could we provide a source easier to download it, and give an appropriate way to set it? :)

closed time in 5 days

Txiaozhe

issue commentalibaba/pipcook

Could we provide a source easier to download libtensorflow?

@Txiaozhe Sorry, you should open an issue at tensorflow or tfjs, Pipcook is not to help this.

Txiaozhe

comment created time in 5 days

push eventalibaba/pipcook

yorkie

commit sha 12730eeb0ed11b7ebfb6e132e8c50c5071f955e4

deploy: c5f250ef7bad5617ae4265b9e8222ee921f9fb92

view details

push time in 5 days

push eventalibaba/pipcook

Jim Tang

commit sha c5f250ef7bad5617ae4265b9e8222ee921f9fb92

meta: fix developer doc error. (#57)

view details

push time in 5 days

PR merged alibaba/pipcook

docs: fix developer guide doc link error. documentation
+1 -1

0 comment

1 changed file

Txiaozhe

pr closed time in 5 days

Pull request review commentalibaba/pipcook

Daily/plugin structure

+<center>+  <img src="logo.png" alt="Boa: Using Python functions seamlessly in Node.js"/>+</center>++Using [Python][] functions seamlessly in Node.js, it delivers any [Python][] module for Node.js developer+in lower-cost to learn or use.++[![Build Status](https://github.com/yorkie/boa/workflows/ci/badge.svg?branch=master&event=push)](https://github.com/yorkie/boa/actions)+[![codecov](https://codecov.io/gh/yorkie/boa/branch/master/graph/badge.svg?token=jFlDx5Kux1)](https://codecov.io/gh/yorkie/boa)++## Dependencies++- Python 3+- Node.js 12+- Homebrew+  - `brew --prefix` to be used to get Python's include and library.++## Get started++Let's have a glance on how to call to Python's function:++```js+const boa = require('boa');+const os = boa.import('os');+console.log(os.getpid()); // prints the pid from python.++// using keyword arguments namely `kwargs`+os.makedirs('..', boa.kwargs({+  mode: 0x777,+  exist_ok: false,+}));++// using bult-in functions+const { range, len } = boa.builtins();+const list = range(0, 10); // create a range array+console.log(len(list)); // 10+console.log(list[2]); // 2+```++## How to build++```bash+# clone this project firstly.+$ npm install+$ npm run build+```++__Verify if the generated library is linked to correct Python version__++When buidling finished, use `objdump -macho -dylibs-used ./build/Release/boa.node` to check if your linked libs are correct as:++```bash+/build/Release/boa.node:+  /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/Python (compatibility version 3.7.0, current version 3.7.0)+  /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)+  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)+```++## API Design Principle++A Connection between 2 languages(ecosystems) has huge works to be done, even though this package is working only on the unilateral from Python to JavaScript. The most difficult part is that for developers, they need to understand the correspondence between the two languages and ecosystems. Therefore, a good design principle will make developers reduce learning costs.++### `boa`++`require('boa')` returns the root object, which will be your entry point to all Python functions, and it provides these methods:++#### `.builtins()`++Gets the Python's [built-in functions](https://docs.python.org/3/library/functions.html), for example:++```js+const { len, range } = boa.builtins();+len([1, 2, 3]); // 3+len(range(0, 10)); // 10+```++#### `.import(mod)`++Imports a Python module in your current environment, the module includes:++- system modules like `os`, `string` and `re`.+- third-party modules like `numpy` and `request` via [pip](https://pip.pypa.io/en/stable/installing/).++To call the function, you should pass a `mod` argument for the module that you want to import.++```js+const os = boa.import('os');+const str = boa.import('string');+const numpy = boa.import('numpy');+```++This returns an instance of [`PythonObjectWrapper`](#class-PythonObjectWrapper) or a JavaScript primitive value for some special cases.++#### `.kwargs(map)`++Creates a Python's keyword arguments, Python provides a way to map arguments with names:++```python+fs.open('./a-file-to-open', mode=0e777)+```++Correspondingly, this function is used to represent a keyword arguments, and the specific usage is very easy to understand:++```js+const fs = boa.import('fs');+fs.open('./a-file-to-open', boa.kwargs({ mode: 0e777 }));+```++#### `.with(ctx, fn)`++It's equivalent to the _with-statement_ in Python, this would be called with an object `ctx` that supports the context management protocol (that is, has `__enter__()` and `__exit__()` methods). And 2nd `fn` is corresponding to the execution block, A simple example is as follows:++```js+boa.with(localcontext(), (ctx) => {+  // execution+  // the ctx is localcontext().__enter().+});+```++#### `.eval(str)`++Execute Python expression in the context specified, here is a simple call:++```js+boa.eval('len([10, 20])');+// 2+```++Alternatively, developers can use [tagged template literal][] to pass variables that have been defined in JavaScript:++```js+const elem = np.array([[1, 2, 3], [4, 5, 6]], np.int32);+boa.eval`${elem} + 100`;  // do matrix + operation+boa.eval`len(${elem})`;   // equivalent to `len(elem)`+```++For multi-line code, Python 3 does not provide a mechanism to return a value, so the `eval` function can only handle single-line Python expressions.++#### `.bytes(str)`++A shortcut to create a Python's bytes literal from JavaScript string, it's equivalent to `b'foobar'` in Python.++```js+const { bytes } = boa;+bytes('foobar'); // "b'foobar'"+```++The `bytes(str)` function simply creates a plain object that is used to pass a string to a Python function as a bytes literal, but does not correspond to any Python object itself. Alternatively, you could use Python's [builtin class `bytes`](https://docs.python.org/3/library/stdtypes.html#bytes) for creating a real object:++```js+const { bytes } = boa.builtins();+const foobar = Buffer.from('foobar');+bytes.fromhex(foobar.toString('hex'));+// "b'foobar'"+```++### Class `PythonObjectWrapper`++This class represents a wrapper for the corresponding object in Python runtime, it must be returned only from [`boa`](#boa) methods like `boa.builtins` and `boa.import`.++#### creation of instance++In order for developers to use Python objects seamlessly, creating a [`PythonObjectWrapper`](#class-PythonObjectWrapper) requires some necessary steps.++First, check the type of the Python object under instance. If it is one of the following types, it will be converted to the corresponding primitive type.++| python type   | primitive    |+|---------------|--------------|+| `int`,`float` | `number`     |+| `int64`       | `bigint`     |+| `float64`     | `bigdecimal` |+| `bool`        | `boolean`    |+| `str`         | `string`     |+| `NoneType`    | `null`       |++If the type of the object that needs to be wrapped is not in the above primitive, a temporary object will be created, and methods and properties will be defined through `Object.defineProperties`.++On an instance of [`PythonObjectWrapper`](#class-PythonObjectWrapper), developers can directly obtain values through the property way, just like using those in Python. This is because we use [ES6 Proxy][], so the last step, we created a `Proxy` Object, configured with 3 trap handlers, `get`, `set` and `apply`, and finally returns this proxy object.++#### property accessor++At [Python][] language, an object has _attr_ and _item_ accessors, and they use different expressions:++- `x.y` is for _attr_ accessor+- `m[n]` is for _item_ accessor++Unfortunately, [ES6 Proxy][] does not distinguish the above things. Therefore, it's needed to define an algorithm to confirm their priority in a time of operation.++- given a `name` variable which is passed by [ES6 Proxy][]'s `get` handler.+- check the `name` property is owned by the JavaScript object via `.hasOwnProperty()`.+  - return the property if it's truthy.+- check the `name` property is owned by the object's class via `.constructor.prototype.hasOwnProperty()`.+  - return the property if it's truthy.+- check if `name` is a numeric representation.+  - if it's truthy, call the internal method `.__getitem__(i)` for item accessor.+  - otherwise+    - try to access the _attr_ via the internal method `.__getattr__()`.+      - if no exceptions, [create the new instance](#creation-of-instance) from the value and return.+    - try to access the _item_ via the internal method `.__getitem__()`.+      - if no exceptions, [create the new instance](#creation-of-instance) from the value and return.+    - otherwise, return `undefined`.++To better understand the algorithm above, let's look at some examples:++```js+const boa = require('boa');+const { abs, tuple } = boa.builtins();++{+  console.log(abs(-100));  // 100+  console.log(abs(100));   // 100+}+{+  const re = boa.import('re');+  const m = re.search('(?<=abc)def', 'abcdef');+  console.log(m.group(0)); // 'def'+}+{+  // make sure the `numpy` is in your current python env.+  const np = boa.import('numpy');+  const x0 = np.array([[1, 2, 3], [4, 5, 6]], np.int32);+  const x1 = np.arange(15).reshape(3, 5);+  const x2 = np.zeros(tuple([3, 4]));+}+```++As mentioned above, in addition to dynamically obtaining objects from the [Python][] runtime, the class `PythonObjectWrapper` also defines the following public methods built into JavaScript.++#### `.prototype.toString()`++Returns a string for representing the object, internally it calls the CPython's [`PyObject_Str`](https://docs.python.org/3/c-api/object.html#c.PyObject_Str).++```js+console.log(boa.import('os').toString());+// "<module 'os' from '/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py'>"+```++#### `.prototype.slice(start, stop, step)`++Returns a new wrapped slice object, it's equivalent to `s[start:stop:step]`. For example:++```js+const { range } = boa.builtins();+const mlist = range(0, 10); // [0...10]+const s = mlist.slice(2, 10, 1); // [2...10]+```++> Note: a new tc39 proposal [slice notation](https://github.com/tc39/proposal-slice-notation) attempts to add this kind of syntax, it'll be merged when it's land on v8 engine. Or try with `eval` in Python's syntax:+>+> ```js+> boa.eval`${mlist}[0...10]`+> boa.eval`${mlist}[1:10:2]`+> ```++#### `.prototype.__hash__()`++Returns the hash value of this object, internally it calls the CPython's [`PyObject_Hash`](https://docs.python.org/3/c-api/object.html#c.PyObject_Hash).++> __Magic methods__ there are some others like `__getitem__`, `__setitem__`, `__getattr__`, `__setattr__` which are used internally in this library, it's not recommended to actively use them at user-land.++#### `.prototype[Symbol.toPrimitive](hint)`++Returns a corresponding primitive value for this object, see [`Symbol.toPrimitive` on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) for more details.++## Tests++To run the full tests:++```bash+$ npm test+```++See [./tests](./tests) for more testing details.++## License++MIT @ Copyright

This could be removed for now :)

utkobe

comment created time in 6 days

Pull request review commentalibaba/pipcook

Daily/plugin structure

     "typedoc": "typedoc"   },   "dependencies": {+    "@tensorflow/tfjs-node-gpu": "1.7.0",

@tensorflow/tfjs-node might be required?

utkobe

comment created time in 6 days

Pull request review commentalibaba/pipcook

Daily/plugin structure

 {   "packages": [-    "packages/*",-    "packages/plugins/*"+    "packages/pipcook-app",+    "packages/pipcook-cli",+    "packages/pipcook-core",+    "packages/boa",+    "packages/plugins/**/*"   ],   "version": "independent",-  "npmClient": "npm",+  "npmClient": "tnpm",

Could we keep using npm?

utkobe

comment created time in 6 days

startedalibaba/pipcook

started time in 7 days

push eventalibaba/pipcook

yorkie

commit sha 962e79a306ab8847c7a93a4718a8ed1663229566

deploy: d3874e5f8adcc8f073817a893fce231032b321ba

view details

push time in 8 days

push eventalibaba/pipcook

Jim Tang

commit sha d3874e5f8adcc8f073817a893fce231032b321ba

doc: update the plugin tutorial for cli usage (#55)

view details

push time in 8 days

PR merged alibaba/pipcook

cli: update doc for plugin-dev. documentation
+2 -2

0 comment

2 changed files

Txiaozhe

pr closed time in 8 days

push eventalibaba/pipcook

yorkie

commit sha 5815a0b4fa72faa7843a6bcad86f056e4e2940f0

deploy: 9d3585243550201a447c8ba228df7803b182239b

view details

push time in 8 days

push eventalibaba/pipcook

dependabot[bot]

commit sha 9d3585243550201a447c8ba228df7803b182239b

build(deps): bump axios in /packages/pipcook-board-client (#54) Bumps [axios](https://github.com/axios/axios) from 0.17.1 to 0.18.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.18.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.17.1...v0.18.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

view details

push time in 8 days

delete branch alibaba/pipcook

delete branch : dependabot/npm_and_yarn/packages/pipcook-board-client/axios-0.18.1

delete time in 8 days

PR merged alibaba/pipcook

build(deps): bump axios from 0.17.1 to 0.18.1 in /packages/pipcook-board-client dependencies

Bumps axios from 0.17.1 to 0.18.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/axios/axios/releases">axios's releases</a>.</em></p> <blockquote> <h2>v0.18.1</h2> <p>Security Fix:</p> <ul> <li>Destroy stream on exceeding maxContentLength (fixes <a href="https://github-redirect.dependabot.com/axios/axios/issues/1098">#1098</a>) (<a href="https://github-redirect.dependabot.com/axios/axios/issues/1485">#1485</a>) - Gadzhi Gadzhiev</li> </ul> <h2>v.0.18.0</h2> <ul> <li>Adding support for UNIX Sockets when running with Node.js (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1070">#1070</a>)</li> <li>Fixing typings (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1177">#1177</a>): <ul> <li>AxiosRequestConfig.proxy: allows type false</li> <li>AxiosProxyConfig: added auth field</li> </ul> </li> <li>Adding function signature in AxiosInstance interface so AxiosInstance can be invoked (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1192">#1192</a>, <a href="https://github-redirect.dependabot.com/axios/axios/pull/1254">#1254</a>)</li> <li>Allowing maxContentLength to pass through to redirected calls as maxBodyLength in follow-redirects config (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1287">#1287</a>)</li> <li>Fixing configuration when using an instance - method can now be set (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1342">#1342</a>)</li> </ul> <h3>0.17.1 (Nov 11, 2017)</h3> <ul> <li>Fixing issue with web workers (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1160">#1160</a>)</li> <li>Allowing overriding transport (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1080">#1080</a>)</li> <li>Updating TypeScript typings (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1165">#1165</a>, <a href="https://github-redirect.dependabot.com/axios/axios/pull/1125">#1125</a>, <a href="https://github-redirect.dependabot.com/axios/axios/pull/1131">#1131</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/axios/axios/blob/v0.18.1/CHANGELOG.md">axios's changelog</a>.</em></p> <blockquote> <h3>0.18.1 (May 31, 2019)</h3> <p>Security Fix:</p> <ul> <li>Destroy stream on exceeding maxContentLength (fixes <a href="https://github-redirect.dependabot.com/axios/axios/issues/1098">#1098</a>) (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1485">#1485</a>) - Gadzhi Gadzhiev</li> </ul> <h3>0.18.0 (Feb 19, 2018)</h3> <ul> <li>Adding support for UNIX Sockets when running with Node.js (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1070">#1070</a>)</li> <li>Fixing typings (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1177">#1177</a>): <ul> <li>AxiosRequestConfig.proxy: allows type false</li> <li>AxiosProxyConfig: added auth field</li> </ul> </li> <li>Adding function signature in AxiosInstance interface so AxiosInstance can be invoked (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1192">#1192</a>, <a href="https://github-redirect.dependabot.com/axios/axios/pull/1254">#1254</a>)</li> <li>Allowing maxContentLength to pass through to redirected calls as maxBodyLength in follow-redirects config (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1287">#1287</a>)</li> <li>Fixing configuration when using an instance - method can now be set (<a href="https://github-redirect.dependabot.com/axios/axios/pull/1342">#1342</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/axios/axios/commit/face0165de613696d10b1fd2a0e2f7b3852fa018"><code>face016</code></a> Releasing 0.18.1</li> <li><a href="https://github.com/axios/axios/commit/062876378b2e46aa12cb084dce56dddde1f8172c"><code>0628763</code></a> Update Changelog for release (0.18.1)</li> <li><a href="https://github.com/axios/axios/commit/dc9b29c3411f160009570d369013585693deb154"><code>dc9b29c</code></a> adjust README to match IE support</li> <li><a href="https://github.com/axios/axios/commit/16326d5fe93bb2bf9d793fe04786e3198f298429"><code>16326d5</code></a> Remove usages of isOldIE in tests</li> <li><a href="https://github.com/axios/axios/commit/5a4228b9f82ef9dfb695e10c95d237f4b7afdc14"><code>5a4228b</code></a> Remove IE10 launcher from karma config</li> <li><a href="https://github.com/axios/axios/commit/695b5f7241d7a3b339a768e3d04cfa5d1efd758e"><code>695b5f7</code></a> Remove isOldIE check in tests</li> <li><a href="https://github.com/axios/axios/commit/e314ab00b48be01283f4c48fc2ecaef73fac7c85"><code>e314ab0</code></a> Remove HTTP 1223 handling</li> <li><a href="https://github.com/axios/axios/commit/7efa822b2e8ac47c54f3eafc7fb0c6b52ffaa0c6"><code>7efa822</code></a> Remove btoa polyfill tests</li> <li><a href="https://github.com/axios/axios/commit/f3cdcc7f0125a069998bb3c74337fea99dd98f7b"><code>f3cdcc7</code></a> Delete btoa polyfill</li> <li><a href="https://github.com/axios/axios/commit/efc0b581c828fe0e5e6d39a40d65d1c73181e05c"><code>efc0b58</code></a> Remove ie8/9 special CORS treatment and btoa polyfill</li> <li>Additional commits viewable in <a href="https://github.com/axios/axios/compare/v0.17.1...v0.18.1">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~emilyemorehouse">emilyemorehouse</a>, a new releaser for axios since your current version.</p> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+18697 -768

1 comment

2 changed files

dependabot[bot]

pr closed time in 8 days

delete branch yorkie/tfjs

delete branch : patch-1

delete time in 8 days

startedsql-machine-learning/sqlflow

started time in 9 days

push eventalibaba/pipcook

yorkie

commit sha 25543ba5c2a1a6734f1821e3d268ab36379f5691

deploy: 13a1d53362c64f7392808dbfce389a233564b94d

view details

push time in 9 days

push eventalibaba/pipcook

Ruikun Cao

commit sha 13a1d53362c64f7392808dbfce389a233564b94d

pipboard: add show cases to pipboard (#52)

view details

push time in 9 days

delete branch alibaba/pipcook

delete branch : daily/init_optimize

delete time in 9 days

PR merged alibaba/pipcook

pipboard: add show cases to pipboard cli enhancement pipboard pipcook-core

This PR includes:

  • decouple server part of pipboard from pipcook-core. Before it's using fastify inside pipcook-core. Now I have moved the server into 'pipcook-board-server' and build on top of Egg.js of Alibaba
  • add two show cases to the home of pipboard
  • optimize pipcook-cli to supoort pipboard and also do some optimization in cli tool
  • add 'who's using it' part to Readme and a guide to try MNIST example

Please have a review pls, Thank you @yorkie

+3573 -850

3 comments

102 changed files

utkobe

pr closed time in 9 days

pull request commentalibaba/pipcook

add show cases to pipboard

@yorkie Thank you for review. Have fixed the codes accordingly.

See https://github.com/alibaba/pipcook/pull/52/files#r396464928, this might be the last what I have concerned, otherwise SGTM now :)

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.+```sh+$ pipcook board+```+you will see a web page prompt in your browser. Now you can have a look at MNIST showcase on the home page and play around there. If you want to train a model to recognize MNIST handwritten digits by yourself, you could try the example below.+ ### Examples

@utkobe Hey, the examples section should be included the playground? One is to remove the title, or downgrade the title level to "#### Examples".

utkobe

comment created time in 10 days

issue closedalibaba/pipcook

meta: lint.

use lint to standardized the code.

closed time in 10 days

Txiaozhe

issue commentalibaba/pipcook

meta: lint.

We have integrated eslint at https://github.com/alibaba/pipcook/blob/master/.eslintrc.js, you could make a pull request for the purpose from #44.

Txiaozhe

comment created time in 10 days

push eventalibaba/pipcook

utkobe

commit sha 173e450bfc66a8d7a7fbd10a83e6b557a112fbb9

deploy: 0ea88ea2a8df1fa6bd42d5b0928cacfc280f6ab6

view details

push time in 10 days

pull request commentalibaba/pipcook

add show cases to pipboard

And the CI should be fixed, too :)

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.+```sh+$ pipcook board+```+you will see a web page prompt in your browser. Now you can have a look at MNIST showcase on the home page and play around there. If you want to train a model to recognize MNIST handwritten digits by yourself, you could try the example below.
You will see a web page prompt in your browser, and there is a MNIST showcase on the home page and play around there. If you want to train a model to recognize MNIST handwritten digits by yourself, you could try the examples below.
utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

+import { Context } from 'egg';

Just curious that why not using the midway?

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 let imageClassLocalModelDeploy = require('@pipcook/pipcook-plugins-image-class-l async function startPipeline() {   // collect mnist data   const dataCollect = DataCollect(imageMnistDataCollection, {-    trainingCount:200,-    testCount: 200+    trainingCount:8000,
    trainingCount: 8000,
utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 const modelEvaluate = ModelEvaluate(classModelEvalute);  现在我们对于机器学习生命周期的每一步的环节就已经编写完成啦,下面我们要将每一个插件传入给 Pipcook runner,并告诉 Pipcook 启动一个 runner 去开始训练流程,如下所示 -```ts-const runner = new PipcookRunner('test1', {-  predictServer: true-})+```+const runner = new PipcookRunner()

Ditto

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

+# hackernews-async-ts

What's this?

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 let imageClassLocalModelDeploy = require('@pipcook/pipcook-plugins-image-class-l async function startPipeline() {   // collect mnist data   const dataCollect = DataCollect(imageMnistDataCollection, {-    trainingCount:200,-    testCount: 200+    trainingCount:8000,
    trainingCount: 8000,
utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 const modelEvaluate = ModelEvaluate(classModelEvalute);  Now we have completed every step of the machine learning life cycle, let's pass each plugin to pipcook runner, and tell pipcook to start a runner to begin the training process, as shown below. -```js-const runner = new PipcookRunner('test1', {-  predictServer: true-});-runner.run([dataCollect, dataAccess, modelLoad, modelTrain, modelEvaluate]);+```+const runner = new PipcookRunner()
const runner = new PipcookRunner();
utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 const modelEvaluate = ModelEvaluate(classModelEvalute);  Now we have completed every step of the machine learning life cycle, let's pass each plugin to pipcook runner, and tell pipcook to start a runner to begin the training process, as shown below. -```js-const runner = new PipcookRunner('test1', {-  predictServer: true-});-runner.run([dataCollect, dataAccess, modelLoad, modelTrain, modelEvaluate]);+```+const runner = new PipcookRunner()+runner.run([dataCollect, dataAccess, modelLoad, modelTrain, modelEvaluate])

Ditto.

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 $ npm run build  ## Community +#### IRC <img width="200" src="./community_qrcode.png">  > Download DingTalk (an all-in-one free communication and collaboration platform) here: [English](https://www.dingtalk.com/static/en/download) | [中文](https://page.dingtalk.com/wow/dingtalk/act/download) +#### Who's using it+<a href="https://www.imgcook.com"><img height="40" src="https://img.alicdn.com/tfs/TB1lle4yQzoK1RjSZFlXXai4VXa-200-64.png"></a>

Blank lines :)

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.+```sh+$ pipcook board+```+you will see a web page prompt in your browser. Now you can have a look at MNIST showcase on the home page and play around there. If you want to train a model to recognize MNIST handwritten digits by yourself, you could try the example below.+ ### Examples  In this reposiory, We have prepared several examples, some of they are: -- [pipeline-mnist-image-classification][]: pipeline for classific Mnist image classification problem.-- [pipeline-databinding-image-classification][]: pipeline example to train the iamge classification task which is +- [pipeline-mnist-image-classification](example/pipeline-example/pipeline-mnist-image-classification.js): pipeline for classific Mnist image classification problem.+- [pipeline-databinding-image-classification](example/pipeline-example/pipeline-databinding-image-classification.js): pipeline example to train the iamge classification task which is    to classifify [imgcook](https://www.imgcook.com/) databinding pictures.-- [pipeline-object-detection][]: pipeline example to train object detection task which is for component recognition +- [pipeline-object-detection](example/pipeline-example/pipeline-object-detection.js): pipeline example to train object detection task which is for component recognition    used by imgcook.-- [python-keras][]: example to use Python Keras library to train deep leraning network in js syntax and runtime.+- [python-keras](example/python-nodejs-example/python-keras.js): example to use Python Keras library to train deep leraning network in js syntax and runtime. -See [here](./example) for complete list, and it's easy and quick to run these examples. For example, to do a minst +See [here](./example) for complete list, and it's easy and quick to run these examples. For example, to do a MNIST  image classification, just run the following to start the pipeline:  ```sh-$ node examples/pipcook-app-example/pipcook-imageclass-app-test.js+$ node examples/pipeline-example/pipeline-mnist-image-classification.js

How about renaming this to examples/pipeline/pipeline-mnist-image-classification?

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 $ npm run build  ## Community +#### IRC <img width="200" src="./community_qrcode.png">

An empty line is suggested :)

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.+```sh+$ pipcook board+```+you will see a web page prompt in your browser. Now you can have a look at MNIST showcase on the home page and play around there. If you want to train a model to recognize MNIST handwritten digits by yourself, you could try the example below.+ ### Examples  In this reposiory, We have prepared several examples, some of they are: -- [pipeline-mnist-image-classification][]: pipeline for classific Mnist image classification problem.-- [pipeline-databinding-image-classification][]: pipeline example to train the iamge classification task which is +- [pipeline-mnist-image-classification](example/pipeline-example/pipeline-mnist-image-classification.js): pipeline for classific Mnist image classification problem.+- [pipeline-databinding-image-classification](example/pipeline-example/pipeline-databinding-image-classification.js): pipeline example to train the iamge classification task which is    to classifify [imgcook](https://www.imgcook.com/) databinding pictures.-- [pipeline-object-detection][]: pipeline example to train object detection task which is for component recognition +- [pipeline-object-detection](example/pipeline-example/pipeline-object-detection.js): pipeline example to train object detection task which is for component recognition    used by imgcook.-- [python-keras][]: example to use Python Keras library to train deep leraning network in js syntax and runtime.+- [python-keras](example/python-nodejs-example/python-keras.js): example to use Python Keras library to train deep leraning network in js syntax and runtime.

See the bottom of the source: https://raw.githubusercontent.com/alibaba/pipcook/aab7e5d4a7d97166991826ee9966e33806d230e0/README.md, I have defined these links there, is this easier to read?

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.+```sh+$ pipcook board+```+you will see a web page prompt in your browser. Now you can have a look at MNIST showcase on the home page and play around there. If you want to train a model to recognize MNIST handwritten digits by yourself, you could try the example below.+ ### Examples

It should be removed for now, we have mentioned the examples at the previous section.

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.

Add a blank line please :)

utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases+If you are wondering what you can do in pipcook and where you can check your training logs and models, you could run pipboard first.
If you are wondering what you can do in [Pipcook][] and where you can check training logs and models, you could start from Pipboard.
utkobe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add show cases to pipboard

 Initialize a project: ```sh $ mkdir pipcook-example && cd pipcook-example $ pipcook init-$ cd pipcook-project ``` +### Show Cases

How about "Playground" or "Pipboard"?

utkobe

comment created time in 10 days

startedDavidCai1993/chinese-poem-generator.js

started time in 10 days

Pull request review commentalibaba/pipcook

cli: discern unsupported plugin type.

 const devPlugin = (cmdObj) => {     return;   } +  if (constants.PLUGINS.indexOf(pluginType) < 0) {+    console.warn(chalk.red(`Unsupported plugin type: "${pluginType}", it must be one of: \n${constants.PLUGINS.join(',\n')}`));

Ok, resolved.

Txiaozhe

comment created time in 10 days

push eventalibaba/pipcook

utkobe

commit sha 77eebcb24247dd1cd13fb8c5db6e4fc6dfcbd120

deploy: 8f45952eda54f6f07dae724c47659cb72af866e3

view details

push time in 10 days

Pull request review commentalibaba/pipcook

cli: discern unsupported plugin type.

 const devPlugin = (cmdObj) => {     return;   } +  if (constants.PLUGINS.indexOf(pluginType) < 0) {+    console.warn(chalk.red(`Unsupported plugin type: "${pluginType}", it must be one of: \n${constants.PLUGINS.join(',\n')}`));

This line is too long, namely over 80 chars.

Txiaozhe

comment created time in 10 days

Pull request review commentalibaba/pipcook

add download link for dingding

 $ npm run build  ## Community +Download DingDing (an all-in-one free communication and collaboration platform) here: [English](https://www.dingtalk.com/static/en/download) | [中文](https://page.dingtalk.com/wow/dingtalk/act/download) <img width="200" src="./community_qrcode.png">

> Download DingTalk (an all-in-one free communication and collaboration platform) here: [English](https://www.dingtalk.com/static/en/download) | [中文](https://page.dingtalk.com/wow/dingtalk/act/download)
utkobe

comment created time in 10 days

push eventalibaba/pipcook

utkobe

commit sha caf00042a83b48aac19184de75660b31fc210e25

deploy: 58c9e1944d545501e9ad277d20942738e07ba1c0

view details

push time in 10 days

Pull request review commentalibaba/pipcook

cli: discern unsupported plugin type.

 const devPlugin = (cmdObj) => {     return;   } -  let dirname;-  try {-    const typeFiles = fse.readdirSync(path.join(__dirname, '../assets/pluginPackage/src'));-    const allowedTypes = typeFiles.map(filename => filename.replace(/(.*\/)*([^.]+).*/ig,"$2"));-    if (allowedTypes.indexOf(pluginType) < 0) {-      console.log(`Unsupported plugin type: ${pluginType}.\n` +-        `The type of plugin must be one of: \n{ ${allowedTypes.join(', ')} }`);-      return;-    }+  if (constants.PLUGINS.indexOf(pluginType) < 0) {+    console.warn(chalk.red(`Unsupported plugin type: "${pluginType}"`));+    console.warn(chalk.yellow('The type of plugin must be one of: '));+    console.warn(chalk.yellow(`{ \n  ${constants.PLUGINS.join(',\n  ')}\n}`));

Just print them in list

Txiaozhe

comment created time in 12 days

Pull request review commentalibaba/pipcook

core: export plugin constant.

 export {PipcookRunner} from './core/core'; export {createAnnotationFile, parseAnnotation, unZipData, downloadZip, getOsInfo, transformCsv,   getDatasetDir, createAnnotationFromJson, getMetadata, getModelDir, convertPascol2CocoFileOutput, compressTarFile } from './utils/publicUtils'; export {startBoard} from './board/board';-export {PipcookComponentResult} from './types/component';\ No newline at end of file+export {PipcookComponentResult} from './types/component';+export {+  DATACOLLECT,+  DATAACCESS,+  DATAPROCESS,+  MODELLOAD,+  MODELTRAIN,+  MODELEVALUATE,+  MODELDEPLOY,+  ONLINETRAIN+} from './constants/plugins';

Never mind :p

Txiaozhe

comment created time in 12 days

delete branch yorkie/pipcook

delete branch : add/dingtalkgroupinvite

delete time in 12 days

issue commentalibaba/pipcook

pipboard: integrate facets for sample visualization

This really depends on our Pipboard Extension APIs, so let's achieve that firstly :p

yorkie

comment created time in 12 days

issue commentalibaba/pipcook

pipboard: integrate facets for sample visualization

IMO, the facets extension will register the Dataset click event, when user clicks, we will open the facets page for that data :)

yorkie

comment created time in 12 days

push eventalibaba/pipcook

utkobe

commit sha 6fcada640eabe08119e5e7b447bea83c9bbaa0aa

deploy: bae0d8ab684451c345dfb4d25ebc1eb9017d35c2

view details

push time in 12 days

issue openedalibaba/pipcook

pipboard: integrate facets for sample visualization

https://pair-code.github.io/facets/ is for checking common problems in data/sample, so we could have a facets extension to achieve sample visualization.

created time in 13 days

Pull request review commentalibaba/pipcook

core: export plugin constant.

 export {PipcookRunner} from './core/core'; export {createAnnotationFile, parseAnnotation, unZipData, downloadZip, getOsInfo, transformCsv,   getDatasetDir, createAnnotationFromJson, getMetadata, getModelDir, convertPascol2CocoFileOutput, compressTarFile } from './utils/publicUtils'; export {startBoard} from './board/board';-export {PipcookComponentResult} from './types/component';\ No newline at end of file+export {PipcookComponentResult} from './types/component';+export {+  DATACOLLECT,+  DATAACCESS,+  DATAPROCESS,+  MODELLOAD,+  MODELTRAIN,+  MODELEVALUATE,+  MODELDEPLOY,+  ONLINETRAIN+} from './constants/plugins';

What I meant is:

import {PLUGINS} from './constants/plugins';
...
export constants = {
  PLUGINS,
};
Txiaozhe

comment created time in 13 days

PR opened alibaba/pipcook

meta: add our dingtalk group invitation qrcode meta
+4 -0

0 comment

2 changed files

pr created time in 13 days

create barnchyorkie/pipcook

branch : add/dingtalkgroupinvite

created branch time in 13 days

issue closedalibaba/pipcook

meta: proposal of Pipboard functional documentation

Discussed with @wordcount @utkobe, we rename the Web Launcher to Pipboard, it's more meaningful. And we have more details to be clear at this meeting.

Software architecture: Client/Server Tech stacks: client(alibaba/ice), server(midwayjs/midway)

Pipboard is used for pipeline management in GUI, plugin configuration and model visualization, and we decide to extend the Pipboard from the pipcook-cli's board sub-command, which is able to view the training progress.

Otherwise, for extending the data-collect plugins in Web way, we just add a plugin property: "web", which represents this plugin is a Web plugin. And Web plugin could only be inserted to a pipeline at Pipboard, and this type of plugin actually is Web project that must contain an index.html as the entrance, then Pipboard will open that in a new sandbox <window>.

closed time in 13 days

yorkie

issue commentalibaba/pipcook

meta: proposal of Pipboard functional documentation

Let's move the related discussion to #40 :p

yorkie

comment created time in 13 days

issue closedalibaba/pipcook

meta: about project scope, contributions and plugin ecosystem

A clear project scope can help us make better choices. Here we will clearly define the source code, configuration and documentation parts that need to be included in Pipcook. This project Pipcook as an open source project, we should welcome different types of contributions at different levels, which will include the scope of the project mentioned earlier. The last discussion is about the plugin ecosystem, I will describe the unit organization structure of our plugin ecosystem and how to integrate it with NPM and JavaScript to develop together.

Project scope

The project "Pipcook" software includes the followings:

  • source code of the framework, high-level apis, command-line tools and builtin plugins.
  • documents and specifications of framework, high-level apis, command-line tools and built plugins.
  • a Web launcher for plugins discovery, dataset selection, pipeline creation, model deployment, and visualization.

The plugin plays an important role in this project, pipeline does schedule some of plugins which are wrapped as component and working together to output the model or service to deploy. Each plugin needs to follow the below:

  • MUST be a NPM package, which means some files of package.json and a main file, TypeScript(*.ts) is recommended by default.
  • SHOULD have a README for introducing the plugin.
  • SHOULD have tsdoc/jsdoc annotations or HTML version for API references.
  • SHOULD have unit tests for code quality.

Contributions & Contributors

After understanding the project scope and plugins, let's take a look at what types of contributions and contributors pipcook will accept as an open source project.

  • contribution to web launcher
  • contribution to command-line tools
  • contribution to framework and high-level apis
  • contribution to built-in plugin

In addition to the above, we'll describe user-land plugin at the section "plugin ecosystem".

Each contribution mentioned above MUST follow these rules:

  • contributor submits a pull request to describe the technical details.
  • changes in this pull request include some of source code, document and configuration.
  • changes in this pull request pass all the related build instructions.
  • changes in this pull request receive over 1 approval from project collaborators.
    • changes of framework and high-level apis does require core collaborators' approvals.
    • changes of built-in plugin does require the built-in plugin collaborators' approvals.

We have also classified the contributors as follows:

  • contributor: someone who has the contributions in the project scope.
  • collaborator: project maintainer who does make improvements, fix bugs, and review pull requests.
    • core collaborator maintains all the project scope, focusing on framework, high-level apis and release management.
    • built-in plugin collaborator maintains specific one or more built-in plugins.

Plugin ecosystem

The composition and requirements of the plugin was mentioned in the previous chapter, so here we will define some rules between plugins, namely plugin ecosystem.

From the maintainer's perspective, plugins can be divided into built-in and community ones:

  • built-in plugins are maintained by core collaborators and released with the Pipcook.
  • each community plugin is maintained and released by the author himself/herself, Pipcook can download the specified plugins through git, npm or oss.
  • private plugin is maintained by private organization or company itself.

To help Pipcook discover all the plugins, the project provides some rules to let the Web launcher discover community ones:

  • add GitHub topic "pipcook-plugin", see https://github.com/topics/pipcook-plugin.
  • add "pipcook-plugin" in the package.json's "keywords", see https://www.npmjs.com/search?q=keywords:pipcook-plugin.
  • create a pull request to add the plugin URI by updating the COMMUNITY_PLUGINS.md.
  • (to be added).

Community plugins can also be submitted as built-in plugins through pull requests, but this requires nomination by a core collaborator and the approvals of at least 2 collaborators.

closed time in 13 days

yorkie

issue commentalibaba/pipcook

meta: about project scope, contributions and plugin ecosystem

Closing this because the related specifications are merged at #27.

yorkie

comment created time in 13 days

issue closedalibaba/pipcook

meta: release lifecycle

The following are the questions associated with the release lifecycle and my answers:

Time-based or feature-based release?

Pipcook uses semver for release management, so the release generally refers to Major, Minor, and Patch.

For the major versions, time-based release is often after the software and ecosystem are relatively mature, so major will use feature-based. Each major version often needs to define the features of that version first, and then define the milestones to complete.

For the minor version, under the major version target is basically determined, the iteration period could be relatively fixed, so it can be time-based. Therefore, we can define a minor version as 2 weeks and an even number as stable.

For the patch version, it basically fixes the existing versions, so it needs to be divided into different situations to discuss. For the latest version (such as 0.7.x), we can decide whether to release it based on whether there are daily bugfixes. For historical versions (such as 0.3.x, 0.4.x), we need to determine the severity of the bug, the relevance of the project, and community feedback to operate manually.

Provide LTS(long term support) version

No, need to wait until the software matures, currently there is not enough people to maintain, but can provide patches for a specific version range.

Release automatically

Major: release maintainer, minor: release maintainer, patch: ci + release maintainer

@utkobe @wordcount Feel free to create new question and give your answers :)

closed time in 13 days

yorkie

issue commentalibaba/pipcook

meta: release lifecycle

Closing this because this is merged at #27.

yorkie

comment created time in 13 days

Pull request review commentalibaba/pipcook

core: export plugin constant.

 export {PipcookRunner} from './core/core'; export {createAnnotationFile, parseAnnotation, unZipData, downloadZip, getOsInfo, transformCsv,   getDatasetDir, createAnnotationFromJson, getMetadata, getModelDir, convertPascol2CocoFileOutput, compressTarFile } from './utils/publicUtils'; export {startBoard} from './board/board';-export {PipcookComponentResult} from './types/component';\ No newline at end of file+export {PipcookComponentResult} from './types/component';+export {PLUGINS} from './constants/plugins';

We should export constants only at the top-level just like constants.PLUGINS :)

Txiaozhe

comment created time in 13 days

issue commentalibaba/pipcook

meta: Would it add benchmark and more standardized unit test?

oo and do benchmark?

Nope, we don't have any plan for benchmarks.

Txiaozhe

comment created time in 13 days

issue commentalibaba/pipcook

meta: Would it add benchmark and more standardized unit test?

See https://github.com/alibaba/pipcook/blob/master/packages/pipcook-core/src/utils/logger_test.ts, you could write more like this :)

Txiaozhe

comment created time in 13 days

push eventalibaba/pipcook

utkobe

commit sha a9e41ee201e7dc37dc42a465323c1154bf45b245

deploy: 225037de70387518ba5579b75019c42db9266375

view details

push time in 13 days

startedaikorea/awesome-rl

started time in 13 days

pull request commentalibaba/pipcook

Daily/plugin move

Thanks for the guideline link, and how about tweaking our tsconfig inheritance as the following:

(tsconfig for independent plugin)
-------------------------------
tsconfig for common plugin
-------------------------------
tsconfig for root

And there are some notes for the above:

  • independent plugin configuration is optional, but "extend" is required.
  • common plugin config could be also used for our non-official plugin developer.
utkobe

comment created time in 13 days

pull request commentalibaba/pipcook

Daily/plugin move

And how about creating a shared tsconfig.json for all built-in plugins?

utkobe

comment created time in 13 days

Pull request review commentalibaba/pipcook

Daily/plugin move

   "scripts": {     "test": "echo \"Error: no test specified\" && exit 1",     "build": "npm run clean && npm run compile",-    "clean": "rm -rf ./dist && rm -rf tsconfig.tsbuildinfo",+    "clean": "rm -rf ./dist && rm -rf tsconfig.tsbuildinfo && rm -f package-lock.json",

This makes a side effect, that we removed a git-managed file, why do we remove the package-lock.json?

utkobe

comment created time in 13 days

PR opened josephmisiti/awesome-machine-learning

Add Pipcook

It's a JavaScript application framework for machine learning and its engineering.

+1 -0

0 comment

1 changed file

pr created time in 13 days

push eventyorkie/awesome-machine-learning

Yorkie Liu

commit sha 8574d0a4e4c5ecf9c2bc93e03f43d2cfc5cc4069

Add Pipcook It's a JavaScript application framework for machine learning and its engineering.

view details

push time in 13 days

more