Let's Read the Source Code

COSCUP

COSCUP is an annual conference held by Taiwanese Open source community participants since 2006. It's a major force of Free software movement advocacy in Taiwan. The event is often held with talks, sponsor and communities booths, and Birds of a feather. In addition to international speakers, many Taiwanese local Open Source contributors often give their talks here.

The chief organizer, staffs, and speakers are all volunteers.

Talks

用 1500 行建構可自我編譯的 C 編譯器

翁敏維

IB503

08/11 14:30 - 15:00

漢語 / Mandarin Chinese

Beginner / 入門

對 Compiler 有興趣的人

Ethereum Casper FFG Contract

梁智程

IB503

08/11 12:00 - 12:30

漢語 / Mandarin Chinese

Advanced / 進階

對以太坊已經有點基本了解的人,想深入了解 Casper 原始碼

Casper FFG 是以太坊權益證明共識演算法之一。其中核心的程式碼是只有一頁的智慧合約撰寫而成。在這個短講中會提到在 2018 年這個程式碼的演進流程,以及怎麼樣透過修改合約內容,讓客戶端少寫許多程式碼


從零開始理解原始碼 - 以 ethereum 為例

戴宏穎

IB503

08/11 13:30 - 14:00

漢語 / Mandarin Chinese

Beginner / 入門

Junior developer

當 block chain 走入大眾眼眶,多數人不是被炒幣給攫住目光,就會馬上想到是不是要去買一把韭菜了。其實在主流的 block chain 應用中都有非常不錯的軟體藏在其中。Ethereum 是一個可以部署 Smart contract 應用的平台,在這個範圍裡,可以看見一個把 smart contract 變成 bytecode 的 solidity compiler 也有一個可以執行 bytecode 的 ethereum virtual machine。

而面對像這樣一個全新的大型專案,看到裡頭洋洋灑灑數千甚至數萬行程式碼,讓人很容易卻步,也不容易在短時間內熟悉內容。
在本次的議程中,我將分享自己是如何快速地從全新的專案中了解內部的架構設計:

  1. 以三個從完全不懂到理解架構與細節的 ethereum 專案為例: go-ethereum, cpp-ethereum, solidity compiler。
  2. 要如何對軟體架構進行分析,並做出 UML 來逐步拆解元件。
  3. 如何仔細地追蹤細節,並把重要的部分抽取出來講解給他人。

Read source code: kubernetes apiserver

David Chang

IB503

08/11 14:00 - 14:30

漢語 / Mandarin Chinese

Skilled / 中階

熟悉 go 語言,學習整合 Kubernetes 開發的工程師們

In this session, we will go through kubernetes apiserver source code and identify the following main features in apiserver source code:

  1. Basic structure of kube-apiserver
  2. Restful API in kube-apiserver and apimachinery
  3. Authentication and Authorization mechanism

language server protocol explained

Atsushi Eno

IB503

08/11 10:30 - 11:00

English

Beginner / 入門

text editor plugin hackers, language tool hackers, language designers and all those wannabees

Language server protocol (LSP) is a protocol for both programming languages and text editors. This session introduces what kind of features LSP offers and how it can be implemented on the IDEs and possibly languages.


Linux iptables 的運作原理分析

邱宏瑋 (hwchiu)

IB503

08/11 13:00 - 13:30

臺語 / Taiwanese

Advanced / 進階

有使用過 Linux Iptables 且對其原理有興趣的人

Linux Iptables 是一個強大且好用的防火牆工具,透過不同的規則與指令來達成各式各樣的網路功能,本次內容將分享這些功能背後的運作原理,同時也會介紹如何自行實現一個 iptalbes 的模組來客製化功能。


llvm::SmallVector

Yun-Wei Lee

IB503

08/11 11:00 - 11:30

漢語 / Mandarin Chinese

Beginner / 入門

C/C++ User (Others are okay)

A Taste of Open Source Neural Network Frameworks on Cell Phones

"freedom" Koan-Sin Tan

IB503

08/11 15:30 - 16:00

臺語 / Taiwanese

Skilled / 中階

Android/iOS developers who want to put "AI" to edge devices.

AI or more precisely neural network-based machine learning is getting popular on edge devices. In this talk I'll review important open source NN frameworks, namely TensorFlow Lite + Android NN and Caffe2. Then I'll walk the audience through important source code of TenorFlow Lite and Caffe 2. For TensorFlow Lite, the interpreter and sample command line label_image will be covered. The talk will be a heavily modified one of [1] and [2], a much more code-oriented one.

[1] https://www.slideshare.net/kstan2/introduction-to-tensorflow-lite
[2] https://www.slideshare.net/kstan2/caffe2-on-android


有效清理 Python Code 中的無用部份 - 利用 Python AST

洪任諭 (PCMan)

IB503

08/11 12:30 - 13:00

漢語 / Mandarin Chinese

Skilled / 中階

Python programmers

不管是 open source 專案還是工作上,經過長時間開發累積,source code 內可能會殘留許多不再需要的 code,造成維護以及 refactor 的困難,也造成新手 trace code 時的障礙。
對 C/C++ 這類編譯式語言來說,開啟編譯器最佳化能自動清除 dead code,但對於 Python 這類動態語言,則沒有公認完美的方法。
本議程分享一些相關經驗,佐以利用 Python AST 的簡易自製工具,討論如何從較複雜的 python source tree 中,安全的清除不再需要的 code。


看懂源碼基礎 - 批次檔除錯及排版工具

Daniel Lin 林原志

IB503

08/11 11:30 - 12:00

漢語 / Mandarin Chinese

Beginner / 入門

有興趣修改學習 Open Source 者

Linux 的 Shell 組成批次檔可以很簡單,也可以很複雜,如何寫出較不易出錯批次檔,如何將雜亂的批次檔排整齊


探索 Swift Dictionary 實作

John Lin

IB503

08/11 15:00 - 15:30

漢語 / Mandarin Chinese

Skilled / 中階

Developer interested in compiler/standard library

Swift 的 內建 Collection Type (Array, Dictionary) 有許多有趣的特性,
它們是 Value Type,每一個變數的值都是獨立的,所以不會改了一個變數卻害另外一個也一起變。
但是在效能方面,卻又能和普通的 Class Type 一樣能夠被快速的修改和複製。
讓我們一起從程式碼來探索 Swift Dictionary 是如何做到這些實用的特性。


開源軟體考古 - 以 Viper 為例

陳坤裕 KunYu Chen, 鄧宇翔 Yu Shiang Deng

IB503

08/11 10:00 - 10:30

漢語 / Mandarin Chinese

Beginner / 入門

Python developers

想成為優秀開發者,大量閱讀開源專案程式碼是必要的。本演講將分享講者閱讀開源專案時所發展與實踐之方法及技巧。內容包含降低專案複雜度、修改 module dependency 追 code 工具、專案統計數據分析、深度與廣度走訪專案程式碼。此內容已於 pycontw 2017 年演講過,當時內容僅涵蓋「開放原始碼專案原始碼追蹤分析『心得經驗』分享」。此次投稿,將新增「開放原始碼專案原始碼追蹤分析『相關輔助工具』(tig, git-timemachine) 的介紹」,以及橫 \ 縱向專案走訪心得。希望能將自己歸納之系統性追 code 方法分享給大家。


Titanium Sponsor

Co-Host Sponsor

Diamond Sponsor

Gold Sponsor

Silver Sponsor

Bronze Sponsor

Partner

Co-Organizer

Special Thanks