Wekan Open Source Kanban on s390x

By November 20, 2020Blog

Editors Note: The Open Mainframe Project is excited to see the support of the open source project on the mainframe platform. Recently Wekan completed adding s390x support to their project by leveraging the Supported Projects Program, and project lead Lauri Ojansivu shared this guest blog post on the project and the experience and outcomes from porting Wekan to s390x.

What is Wekan?

Wekan is Open Source kanban, with features like:

  • Boards
  • Lists
  • Cards
  • Checklists
  • Subtasks
  • Attachments
  • Swimlanes
  • WIP Limit
  • Votes on Card
  • Board/Swimlane/List/Card colors and themes, like Dark Mode
  • IFTTT Rules similar to Trello Butler
  • Notification Drawer like Trello
  • Assignee field like Jira
  • Received/Start/Due/End Date, Calendar, Spent Time
  • Outgoing Webhooks to Chat/NodeRED per board, and Global Webhooks at Admin Panel
  • Mobile PWA icon click to Fullscreen
  • Board Setting / Card Settings with options to hide card fields
  • Used in most countries of the world https://snapcraft.io/wekan
  • The standalone version has Password, LDAP, OIDC Login.
  • Sandstorm platform has Email, LDAP, SAML, GitHub, Google login.
  • Import from Trello/Wekan/CSV/TSV, Export Wekan/CSV/TSV/HTML archive
  • Translated to about 50 languages

Wekan is the combined work of about 180 contributors and a total of about 13 years of programming work.

How did Wekan get started?

Wekan git history started on May 12, 2005. Wekan was originally created by Maxime Quandalle, who lives in France. Since December 2016 maintainer of Wekan has been Lauri Ojansivu, that lives in Finland.

I have maintained for Wekan for over 3 years. Before that, my background is Linux SysAdmin, Cloud Architect, Win/Mac/Linux support, programming, websites, etc., computer-related, going back to OS/2 BBS SysOp, and Amiga 500.

Wekan ChangeLog

Porting Wekan to s390x

Wekan is made with Meteor full-stack web framework], so it’s Javascript, Node.js v12.x LTS, and MongoDB v3.x-v4.x. It’s also possible to mirror MongoDB data to PostgreSQL with ToroDB.

Meteor officially supports only x86 and x64 CPU architectures. When building projects like Wekan, Meteor combines all CSS to one file, all Javascript to one file, builds binary extensions from C/C++, and combines all to a directory called “bundle.” The startup script has settings as environment variables and then starts “node main.js.” I did notice that there were some forks of Wekan that added some code to allow arm64 architecture, so with some modifications, we got Wekan running on Ubuntu arm64 on RasPi3/4 and on arm64 servers, like the one arm64 server provided to Wekan by CNCF. I build arm64 and x64 versions of Wekan for all Wekan platforms on those CNCF servers, running KVM VMs with virt-manager for each platform where I build code and test how Wekan works.

I did learn about the Open Mainframe project on  FLOSS Weekly 466] and FLOSS Weekly 564. For porting Wekan to s390x, I did get access to IBM LinuxOne Community Cloud server, where I did boot RHEL7 server. I did upload Node.js and MongoDB packages and Wekan Meteor bundle. Getting it running required that I upload the fibers package and build it locally on the server. After that, I was able to start Wekan on the server. Because that s390x server does not have open ports to the Internet, to see Wekan web interface, I did create ssh tunnel. Then I used my web browser to browse through ssh tunnel to see Wekan web interface.

The screenshot below is my Qubes OS desktop, and via SSH tunnel browsing Wekan Admin panel running on RHEL7 s390x.

What Wekan on s390x makes possible

Wekan on s390x makes possible various integrations. For example, some mainframe software can use Wekan REST API to send info to Wekan cards. It’s also possible to run many copies of Wekan on the same mainframe, for different users, using the same or different MongoDB database. With Wekan saving all data to the server, it’s possible to keep data private according to GDPR. Wekan works with many desktop and mobile webbrowsers and also PWA. It is recommended to keep at least daily backups of MongoDB database, which contains all saved data. It’s also possible to save attachments outside of the database, directly to the hard drive with the setting at start-wekan.sh script.

What’s next for Wekan

1) Packaging

Currently, the Wekan bundle does run on s390x. Next is trying to get other packaging formats working on s390x and arm64, like for example:

With Snap, help is welcome with these:

  • Changing the base image from Ubuntu 16.04 to newest 20.04
  • Updating Snap MongoDB from v3.2.22 to newest v4.x
  • Having Snap version built for all possible CPU architectures

With Docker, help is welcome with these:

  • Having Docker version built for all possible CPU architectures

Docker version does already run with the newest MongoDB 4.x.

Other packaging formats could be possible if someone helps with them:

  • AppImage
  • Flatpak
  • .deb
  • .rpm

For .deb and .rpm, currently, there are automatic builds done at https://packager.io, but those builds are broken and would need some fixing.

2) Features

Upcoming are those paid features marked URGENT or TOP PRIORITY at Roadmap.