EdgeX Foundry Continues Momentum with ‘California Code’ Preview



  • EdgeX

    Learn more about the “California Preview,” due out in June, which provides a collection of five key microservices written in Go.

    EdgeX Foundry is still a few months away from its one-year anniversary. For those unfamiliar, EdgeX Foundry is a vendor-neutral, open source IoT edge computing framework project under The Linux Foundation. At the heart of EdgeX is a microservice architecture which allows the platform to be distributed, updated, replaced, improved and even provided by commercial third parties for additional value add where it makes sense. Its goal is to provide an interoperable platform (hardware and OS agnostic) to accelerate the deployment of industrial IoT solutions.

    Even before the project’s first birthday, there is plenty to celebrate.

    • The first community release (code named ‘Barcelona’) last October.
    • A community of participating companies and organizations that started at 50+ and is now over 70+.
    • An announced alliance and liaison with the Industrial Internet Consortium to collaborate on test beds and best practices.
    • A bi-annual cadence producing technical roadmaps and releases to focus the community and deliver on the goals of the project – with the next release (code named ‘California’) scheduled for June.

    From Fuse to EdgeX – The Evolution of the Platform

    Although EdgeX is less than a year old, we did get a jump-start on the project. Dell had been working on a proof-of-concept platform called Project Fuse that we contributed to The Linux Foundation to seed EdgeX Foundry. While this effort helped boost the EdgeX launch, there are some challenges in taking a proof-of-concept project and turning it into a platform ready for industrial use. As the architect and lead developer on Project Fuse, I can tell you that what was important to our proof-of-concept effort was demonstrating the architecture and trying to get the general design and API set correct. When starting Project Fuse, Java offered the means to quickly prototype a cross-platform framework with plenty of libraries available to help connect many of today’s Industrial Internet of Things (IIoT) devices and sensors. Forefront in our thoughts, however, was not creating the most performant or efficient platform.

    This was a fact that the community identified as a primary need in one of our first face-to-face meetings this past summer. Java was flexible and platform independent, but when looking at the edge requirements, it was evident that the platform needed to get faster and it needed to get smaller.

    Looking back on my notes just before EdgeX’s launch in April of 2017, I had collected statistics on the size of the EdgeX microservice containers and use of memory (RAM). The table below has a sampling.

    In addition, the startup time for each microservice was measured in minutes (vs. seconds). For an edge platform, it was clear this wasn’t going to do the job. As the technical “father” of EdgeX, I had to admit “my baby” had a weight issue.

    California Preview

    As a community, in our July 2017 technical steering committee face-to-face meeting in London, we resolved to moving the microservice code base from Java to Go. At the time of our Barcelona release in October, the EdgeX community made announcements regarding our commitment to reducing the original footprint, startup times and overall performance by making a move from Java to Go. We had even done some early prototyping in Go with one service to show that our migration had promise.

    The community worked hard to prove the diet plan was working and this past month, only 3 months from our first release, the EdgeX community made available what we are calling the “California Preview.” This preview is a collection of five key microservices written in Go that are drop in replacements for our Java microservices. The work on the California release (again not due until June) still continues, but we wanted to show the world that EdgeX was indeed going to be fast, small and still a flexible platform for building IIoT solutions – thus we named this a “preview” of what we hope to show in full by the California release.

    The New Slimmer EdgeX

    In the preview, the core services (Core Data, Metadata, and Command) have been recreated in Go Lang, as well as the bulk of the Export Client and Export Distribution microservices. Just how fast and how small has EdgeX gotten? Let’s take a look at some of the new EdgeX measurements.

    Go is compiled into an executable and does not require the virtual machine which Java requires. Plus, in Java, we took advantage of many frameworks like Spring to build our initial proof-of-concept platform. This helped us get something up quickly, but in a framework, there are a lot of features that you don’t end up using causing bloat of the overall program artifact.

    What this table does not depict is also the reduction in the spikes of memory usage that is smaller in Go. The necessary Java garbage collection causes larger spikes in memory usage.

    CPU usage is estimated as there can be wide swings in usage based on what is happening in each service and on the hardware itself. These numbers are based on averages observed while running the virtual device service. Again, the Java microservices often spike much higher (sometimes up into the 75% range), which is not depicted here.

    Without the JVM, Spring Bean instantiation, etc., the Go executable leaves no question that our EdgeX startup time will eventually be measured in sub-seconds and not minutes.

    I’ll let these numbers speak for themselves. As you can hopefully see for yourself, the EdgeX community is getting ready to release an IIoT platform that is going to meet the community’s expectations with regard to performance. If all the numbers are a bit much, let me give you a simple visual comparing the Java versus Go microservices to that you have an appreciation of the direction of EdgeX memory usage and startup times.

    And, if your use case requires more real-time performance, there are members of our community like IoTech that are building real time extensions of EdgeX.

    The Power of Microservices Architecture

    The microservice architecture proved its value as part of this Java-to-Go evolution. When designing the platform, we knew that pieces of the platform were going to be updated and evolve over time. We also knew that in order to support industry advances, we had to expect the underlying technology used to deliver a microservice to evolve over time. The history of software is one of always emerging new programming languages, approaches, technology, etc. We could not expect that the platform was always going to be Java, or C, or any technology for that matter. Within a few short months of its existence, our theory on that evolution was tested and validated with the move from Java microservices to Go microservices.

    The microservice architecture allowed various teams to replace the Java microservices without impacting any other part of the platform. It even allowed other community members to provide additions and fixes as the Go microservices were being developed. It was kind of like watching your local automobile repairman replacing significant elements of your engine while traveling down the interstate highway to your next destination.

    As EdgeX evolves, we believe the next phase of this architectural approach will show itself again as community members are starting think about and develop commercial microservice replacements where they add value and solve the needs of particular use cases/verticals.

    The Forecast and Future

    If we take the first 5 EdgeX Go replacement microservices and extrapolate the same savings to all of the EdgeX microservices, the forecast size and performance of EdgeX looks very good.
    If this forecast is even close, then all of EdgeX will be smaller and faster than one of the original microservices just a year ago! This list depicts just a few key metrics and we still have work to do to complete this transition by our California release. Also, there are some additional infrastructure (MongoDB and Consul) and microservices (Scheduling) that are not included in the totals. Still, the forecast looks bright.

    In addition to the smaller, faster EdgeX, our California release is also hoping to include some key additions and improvements.

    • Initial security services/capability to include a reverse proxy API manager, authentication/authorization services, and data protection services.
    • An initial system management API offered in all the microservices along with managing agent.
    • Delivery of EdgeX Foundry containers for ARM platforms (natively tested on ARM hardware)
    • Improved and overhauled documentation set; moving developer documentation from Wiki to GitHub so that it is updated/maintained/reviewed like code is (through formal pull requests, etc.).
    • Device Service SDKs in Go Lang and C/C++
    • Blackbox tests for the entire EdgeX API set

    Indeed, the future of EdgeX is bright. The platform is getting smaller and the community around it is getting bigger…all before we’ve even lit the candle on the first birthday cake.

    Jim White is an EdgeX Foundry TSC Member and Chair of Core Services Working Group. He is also Distinguished Engineer and Project Lead of the IoT Platform Development Team within Dell Technologies IoT Solutions Division.

    The post EdgeX Foundry Continues Momentum with ‘California Code’ Preview appeared first on The Linux Foundation.

    https://www.linuxfoundation.org/blog/edgex-foundry-momentum-california-code-preview/





Tmux Commands

screen and tmux

A comparison of the features (or more-so just a table of notes for accessing some of those features) for GNU screen and BSD-licensed tmux.

The formatting here is simple enough to understand (I would hope). ^ means ctrl+, so ^x is ctrl+x. M- means meta (generally left-alt or escape)+, so M-x is left-alt+x

It should be noted that this is no where near a full feature-set of either group. This - being a cheat-sheet - is just to point out the most very basic features to get you on the road.

Trust the developers and manpage writers more than me. This document is originally from 2009 when tmux was still new - since then both of these programs have had many updates and features added (not all of which have been dutifully noted here).

Action tmux screen
start a new session tmux OR
tmux new OR
tmux new-session
screen
re-attach a detached session tmux attach OR
tmux attach-session
screen-r
re-attach an attached session (detaching it from elsewhere) tmux attach -d OR
tmux attach-session -d
screen -dr
re-attach an attached session (keeping it attached elsewhere) tmux attach OR
tmux attach-session
screen -x
detach from currently attached session ^b d OR
^b :detach
^a ^d OR
^a :detach
rename-window to newname ^b , <newname> OR
^b :rename-window <newn>
^a A <newname>
list windows ^b w ^a w
list windows in chooseable menu ^a "
go to window # ^b # ^a #
go to last-active window ^b l ^a ^a
go to next window ^b n ^a n
go to previous window ^b p ^a p
see keybindings ^b ? ^a ?
list sessions ^b s OR
tmux ls OR
tmux list-sessions
screen -ls
toggle visual bell ^a ^g
create another window ^b c ^a c
exit current shell/window ^d ^d
split window/pane horizontally ^b " ^a S
split window/pane vertically ^b % ^a |
switch to other pane ^b o ^a <tab>
kill the current pane ^b x OR (logout/^D)
collapse the current pane/split (but leave processes running) ^a X
cycle location of panes ^b ^o
swap current pane with previous ^b {
swap current pane with next ^b }
show time ^b t
show numeric values of panes ^b q
toggle zoom-state of current pane (maximize/return current pane) ^b z
break the current pane out of its window (to form new window) ^b !
re-arrange current panels within same window (different layouts) ^b [space]
Kill the current window (and all panes within) ^b killw [target-window]
  • Open Source Summit

    Join us in Edinburgh! Submit a proposal to speak by July 1 for Open Source Summit & ELC + OpenIoT Summit Europe.

    Submit a proposal to speak at Open Source Summit Europe & ELC + OpenIoT Summit Europe, taking place October 22-24, 2018, in Edinburgh, UK, and share your knowledge and expertise with 2,000+ open source technologists and community leaders. Proposals are being accepted through 11:59pm PDT, Sunday, July 1.

    This year’s tracks and content will cover the following areas at Open Source Summit Europe:

    Cloud Native Apps/Serverless/Microservices Infrastructure & Automation (Cloud/Cloud Native/DevOps) Linux Systems Artificial Intelligence & Data Analytics Emerging Technologies & Wildcard (Networking, Edge, IoT, Hardware, Blockchain) Community, Compliance, Governance, Culture, Open Source Program Management (Open Collaboration Conference track) Diversity & Inclusion (Diversity Empowerment Summit) Innovation at Apache/Apache Projects TODO / Open Source Program Management

    View the full list of suggested topics for Open Source Summit Europe.

    Suggested Embedded Linux Conference (ELC) Topics:

    Audio, Video, Streaming Media and Graphics Security System Size, Boot Speed Real-Time Linux – Performance, Tuning and Mainlining SDKs for Embedded Products Flash Memory Devices and Filesystems Build Systems, Embedded Distributions and Development Tools Linux in Devices such as Mobile Phones, DVRs, TVs, Cameras, etc Use of Linux in Automotive Drones and Robots Linux in the Internet of Things Practical Experiences and War Stories Standards Public Infrastructure Industrial Automation

    This year’s tracks and content will cover the following areas at ELC:

    Suggested OpenIoT Summit Topics:

    Real-Time OS (Zephyr, RIOT, MyNewt, FreeRTOS, NuttX, mbed and Others) Outside World Meets IoT (Sensor Interaction, Low Footprint, Connected Sensors, EMF/RFI Impact) Bootloaders, Firmware & Updates Containers Distributed Edge Application Technologies On-device Analytics Blockchain for Constrained Devices Device Management Power Management Configuration Management Developing for Security Safety Considerations Certifications – Lessons Learned Taking Devices to Product

    View the full list of suggested topics for ELC + OpenIoT Summit Europe.

    SUBMIT FOR OPEN SOURCE SUMMIT EUROPE »SUBMIT FOR ELC + OPENIOT SUMMIT EUROPE »

    Sign up to receive updates on Open Source Summit Europe and ELC + OpenIoT Summit Europe:

    Register & Save

    Not submitting, but plan to attend? Register before August 18 and save $300 with early bird pricing. One registration gets you access to both Open Source Summit Europe & ELC + OpenIoT Summit Europe.

    Interested in Sponsoring?

    Showcase your thought leadership among a vibrant open source community and connect with top influencers driving today’s technology purchasing decisions. Learn how to become a sponsor of Open Source Summit Europe or ELC + OpenIoT Summit Europe.

    The post Last Chance to Speak at Open Source Summit and ELC + OpenIoT Summit Europe – Submit by July 1 appeared first on The Linux Foundation.

    https://www.linuxfoundation.org/blog/last-chance-to-speak-at-open-source-summit-and-elc-openiot-summit-europe-submit-by-july-1/

    read more
  • Open Source Guides

    The Open Source Guides for the Enterprise are now available in Chinese.

    The popular Open Source Guides for the Enterprise, developed by The Linux Foundation in collaboration with the TODO Group, are now available in Chinese. This set of guides provides industry-proven best practices to help organizations successfully leverage open source.

    “Making these resources available to Chinese audiences in their native language will encourage even greater adoption of and participation with open source projects,” said Chris Aniszczyk, CTO of Cloud Native Computing Foundation and co-founder of the TODO Group. The guides span various stages of the open source project lifecycle, from initial planning and formation to winding down a project.

    The 10 guides now available in Mandarin include topics such as:

    Creating an Open Source Program by Chris Aniszczyk, Cloud Native Computing Foundation; Jeff McAffer, Microsoft; Will Norris, Google; and Andrew Spyker, Netflix Using Open Source Code by Ibrahim Haddad, Samsung Research America Participating in Open Source Communities by Stormy Peters, Red Hat; and Nithya Ruff, Comcast Recruiting Open Source Developers by Guy Martin, Autodesk; Jeff Osier-Mixon, Intel Corporation; Nithya Ruff; and Gil Yehuda, Oath Measuring Your Open Source Program’s Success by Christine Abernathy, Facebook; Chris Aniszczyk; Joe Beda, Heptio; Sarah Novotny, Google; and Gil Yehuda

    The translated guides were launched at the LinuxCon + ContainerCon + CloudOpen China conference in Beijing, where The Linux Foundation also welcomed Chinese Internet giant Tencent as a Platinum Member.

    The post Open Source Guides for the Enterprise Now Available in Chinese appeared first on The Linux Foundation.

    https://www.linuxfoundation.org/blog/open-source-guides-for-the-enterprise-now-available-in-chinese/

    read more
});