After decades of every vendor/project/application building their own implementation for these, we're finally going to have a commonly available implementation and standard from the OpenTelemetry project:
Well, as the title states we'll be addressing software development topics (mainly in English). Topics will be quick and short and most probably aligned with the training "problems", sorry, programs I am involved in. PS. Some links are "internal" (not publicly available): If you are not able to reach it, google will find you a publicly available information source for sure. Happy trails to you.
segunda-feira, 29 de junho de 2020
REUSE: Open Telemetry project
After decades of every vendor/project/application building their own implementation for these, we're finally going to have a commonly available implementation and standard from the OpenTelemetry project:
quarta-feira, 8 de maio de 2019
Logging: Flogger
https://www.infoq.com/news/2019/04/java-logging-framework-flogger
Quoting:
"new open-source Java logging framework called Flogger. Acknowledging that "[t]he field of open-source Java logging APIs is already extremely crowded", Google asserts that Flogger offers "many benefits over existing logging APIs". These improvements include reducing the cost of disabled log statements, increasing overall readability, and allowing extensibility.
Flogger, a portmanteau of fluent and logger, argues that one of its main benefits is "[l]ogging at disabled levels is effectively free." Whereas other logging frameworks may generate bytecode for disabled logging statements, Flogger aims to completely avoid it.
More specifically, logging frameworks typically utilize varargs to accommodate the unknown number of parameters in a logging method call rather than having hundreds or even thousands of different and unpredictable method signatures. This use of varargs results in additional bytecode, particularly to allocate an Object[] for storing the varargs. While additional bytecode doesn’t typically warrant concern, it becomes particularly important in applications with very fine-grained logging statements or logging statements that occur in loops."
domingo, 30 de setembro de 2018
JAVA: Using Java 11 In Production - Things To Know
Quoting:
"The new six-monthly release cadence and Oracle’s changes in licensing and support model mean that any organization that deploys a Java application should take this opportunity to look at:
Where they get their JDK from (e.g. Azul, IBM, Oracle, Red Hat, or other OpenJDK build)
Which versions of Java they use in production
Whether or not they expect to get updates (e.g. patches and security fixes) for these versions of Java
Which versions they want to use in the future
How frequently they want to update their version of Java (i.e. to the next major version)
What sort of support (i.e. triage and bug reports) they expect for their version
Changes to the Oracle JDK
In the past, many of us simply downloaded Oracle’s JDK and used this in development, in testing, and in production. From Java 11, Oracle has changed the license of their JDK, so instead of having a single JDK build which can be used either commercially (i.e. with paid support) or for free (which many of us were doing), they now have two different JDK builds:
Oracle’s JDK (commercial) – you can use this in development and testing for free, but if you use it in production you have to pay for it
Oracle’s OpenJDK (open source) – you can use this for free in any environment, like any open source library
Note that since Java 11, Oracle’s commercial JDK and Oracle’s OpenJDK builds are functionally the same, so we should be able to run our applications on either without having to make any changes or losing any features."
And the components of the JDK are:
terça-feira, 3 de abril de 2018
DIGEST: SW Licensing options
Quoting (licenses valid for Code Project):
"
Microsoft Reciprocal License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Code Project Open License (CPOL)
- Source Code and Executable Files can be used in commercial applications;
- Source Code and Executable Files can be redistributed; and
- Source Code can be modified to create derivative works.
- No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Common Development and Distribution License (CDDL)
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Microsoft Public License (Ms-PL)
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Mozilla Public License 1.1 (MPL 1.1)
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Common Public License Version 1.0 (CPL)
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Eclipse Public License 1.0
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The MIT License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The BSD License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Apache License, Version 2.0
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Creative Commons Attribution-ShareAlike 2.5 License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: False
The zlib/libpng License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
A Public Domain dedication
Provides copyright protection: False
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True
The Creative Commons Attribution 3.0 Unported License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: False
The Creative Commons Attribution-Share Alike 3.0 Unported License
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: True
The Creative Commons Attribution-NoDerivatives 3.0 Unported
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: True
The GNU Lesser General Public License (LGPLv3)
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: True
Supported by CodeProject: True
(Replace 'Foobar' with the name of your product)This file is part of Foobar. Foobar is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Foobar is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser Public License for more details. You should have received a copy of the GNU Lesser Public License along with Foobar. If not, see <http://www.gnu.org/licenses/>.
The GNU General Public License (GPLv3)
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: True
(Replace 'Foobar' with the name of your product)This file is part of Foobar. Foobar is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Foobar is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Foobar. If not, see <http://www.gnu.org/licenses/>.
segunda-feira, 8 de janeiro de 2018
Static Analysis: FB Infer static analyzer now ships with RacerD for detecting race conditions (which are multi-threading issues)
Facebook open-sourced Infer, a static analysis tool it uses for itself and now it ships with RacerD for detecting race conditions (as a code review bot). Sample code for detectable situations can be found here:
About the FB Infer static analysis tool:
Facebook has used RacerD in its own production code for the last year identifying more than 1,000 multi-threading issues, all before code ever reached production. This concurrency checking capability is now available to Java developers who use Infer to detect bugs in Java code.
A race condition is a type of concurrency error or bug that occurs when two threads operate on the same object without proper synchronization, causing their executions to overlap each other, and at least one of the accesses is a write. Concurrency issues are hard to debug and even harder to reproduce after encountered.
RacerD performs fast, useful concurrency analysis at scale. RacerD is fast because it doesn't try to check an entire code base for concurrency issues; it only examines the code that it believes can be run concurrently.
RacerD identifies code that can run concurrently by looking for classes, methods, and interfaces that have been explicitly annotated with the @ThreadSafe annotation or that create a lock via the synchronized keyword. When a class or interface is annotated with @ThreadSafe, all subclasses of the class/implementation are also evaluated. To increase code coverage with RacerD, additional optional annotations may be useful: @ThreadConfined, @Functional, @ReturnsOwnership, or @VisibleForTesting."
(...)
- it doesn't check for other concurrency issues like deadlock and atomicity.
- aliasing
- locally declared objects escaping its scope
- accesses protected by different locks
- local objects containing non-owned objects
- weak memory and Java’s volatile keyword"
quarta-feira, 8 de novembro de 2017
AI: OpenAI (open source systems)
"Old" news about OpenAI firm by Elon Musk (2015) and MS Azure:
http://www.ibtimes.co.uk/microsoft-elon-musks-openai-join-hands-democratize-artificial-intelligence-1591770
Quoting:
"Elon Musk's $1bn non-profit artificial intelligence (AI) research firm OpenAI has signed an agreement with Microsoft to run most of its large-scale experiments on the tech giant's flagship cloud platform, Azure. Announcing the partnership on Tuesday (15 November), the companies said they are focused on the importance of "democratizing access to AI" and "making significant contributions to advance the field of AI" to tackle some of the world's most challenging issues. OpenAI said it will use Microsoft's Azure platform for its experiments and research in AI and deep learning."
The (open source) systems are listed here:
https://openai.com/systems
segunda-feira, 6 de novembro de 2017
Open Source: What kind of license to choose?
Interesting article on what kind of open source license to choose if you are to be the project maintainer:
https://01.org/blogs/jc415/2017/open-source-hacks-one-question-interviews-open-source-experts-licenses?sf148133548=1
Quoting:
“Which open source software license should I use for my project?”
I get asked that a lot. Or this variation, “What are your preferred open source licenses?” My answer: It depends.
I’m not trying to be flip; really, IT DEPENDS! No single open source license is appropriate for every use case or objective. And I have no “preferred” open source licenses—sure, there are some I find myself using or recommending more frequently, but as long as it has been approved as an open source license by the Open Source Initiative (OSI) or a free license by the Free Software Foundation (FSF), there is no license that I *wouldn’t* use, given the right scenario.
The choice comes down to what is most appropriate for a particular situation. How do you determine which license(s) might be appropriate for a given project? There are multiple factors to weigh.
If you are contributing to an existing project, the community expects you will make contributions under the existing project license, or a compatible license—the important thing is to understand and follow that community’s norms.
A project maintainer might reject contributions made under any license other than the one they’ve specified, even if from a legal and practical perspective the licenses have no incompatibilities. “Know your audience” and “go with the flow” are two maxims to keep in mind when you’re making upstream contributions.
What license to choose becomes more interesting when the project is your own. Assuming you have a choice (you haven’t used or incorporated any code licensed under terms that require the same license for derivative work), think about what you want recipients to be able to do (or not do) with your code.
(...)
The “right” open source license for your project will be the one that has terms that support your objectives, is compatible with other licenses in the relevant ecosystem, and is acceptable to your users.
Getting that equation right doesn’t guarantee your project success, of course, but getting it wrong is almost certain to ensure failure.
One of the best ways to learn about open source licensing is to keep up to date with discussions in the open source legal and licensing community, either by joining a mailing list or browsing a mailing list’s archives (...)"
Examples of those discussion lists are in the article.
sábado, 28 de outubro de 2017
Autonomous Vehicles: Open sourced? (Apollo 1.0 self-driving car software)
Source:
https://www.cnet.com/roadshow/news/open-source-apollo-speeds-up-baidus-self-driving-software-development/
Quoting:
"In July, Chinese technology company Baidu made its Apollo 1.0 self-driving car software available as open source on Github, using the Apache/BSD license. By Day 4 of the release, it was the most downloaded C++ software on the site.
At an Apollo meetup hosted by Baidu at its Sunnyvale, California, offices, company president Ya-Qin Zhang announced Apollo 1.5, a major iteration of the software, just three months after the initial release."
quinta-feira, 26 de outubro de 2017
Security: Sonar (Open Source MS Tool)
Quoting:
"Enter your project’s URL, and Sonar will comb through it for accessibility, interoperability, performance, security and progressive web app-related issues. Once it’s done scanning, it’ll list the errors it’s found and do its best to explain what’s going wrong, highlighting the errant code snippets and offering possible solutions.
(...) Sonar improves on the capabilities of other linting tools by executing your website code in a container instead of simply performing a static analysis for more accurate results, as well as allowing for integration with other services. And if you don’t care to use Sonar in your browser, you can also invoke its command-line interface."
quarta-feira, 4 de outubro de 2017
Open Source: Mass spectrometer analysis API
Open source, the good parts (like not having to implement Fourier transformations in plain Java) include open source mass spectrometry APIs:
https://www.nature.com/articles/nmeth.3959.epdf
Project in GitHub:
https://github.com/OpenMS/OpenMS
segunda-feira, 21 de agosto de 2017
OSS: Integrating Open Source in Commercial Software (Risks)
http://sdtimes.com/open-source-commercial-software-development-handle-care/
"licenses fit into two major categories: Permissive and Copyleft. With Permissive licenses, there are few terms and conditions. With Copyleft licenses, the terms and conditions tend to be more stringent and bind any derivative work to the same terms and conditions."
(...)
"Mitigate Your Legal Risk
You can mitigate your risks by following some key steps. Some best practices:
- Track all third party software included in your distribution and the license type, and keep it up to date. Consider each addition carefully, examining the risks and the benefits. Be sure to republish the license text of each work (and subwork), particularly if you are distributing object code only.
- For Apache works, be sure to republish a copy of the Apache license, together with a prominent notice on any modified files that you have changed the files.
- Consider the use of any GPL work in a closed source application very carefully. If your application can be considered and extension of the GPL work, you may be required to disclose your source. Seek counsel if your rights are in doubt.
- Is the project supported by a specific group of developers and is there a thriving community dedicated to delivering a quality application? Or, is the software built by a single developer as a part-time project?
- Are contributions well vetted and under CLA? Consider the effort and expense of replacing the software should you encounter any issues. Can it be swapped out easily, or is it intimately entangled with your application? Consider the value of the contribution when compared to self-developed or commercial alternatives. Could you benefit from vendor engagement and professional support?"
quarta-feira, 9 de agosto de 2017
Using Github as a source of attacker traffic?
https://securityintelligence.com/news/gitpwnd-shows-how-threat-actors-could-hijack-git-repositories-in-software-development/
"[The PoC] could be used to communicate malicious commands from threat actors. As proof, they developed GitPwnd, an open source penetration testing resource that takes advantage of popular services such as GitHub, GitLab or BitBucket.
terça-feira, 31 de janeiro de 2017
Parts of Google Earth open sourced to Github (GEE)...
https://maps-apis.googleblog.com/2017/01/open-sourcing-google-earth-enterprise.html
Quoting:
"Open-sourcing GEE allows our customer community to continue to improve and evolve the project in perpetuity. Note that the Google Earth Enterprise Client, Google Maps JavaScript® API V3 and Google Earth API will not be open sourced. The Enterprise Client will continue to be made available and updated. However, since GEE Fusion and GEE Server are being open-sourced, the imagery and terrain quadtree implementations used in these products will allow third-party developers to build viewers that can consume GEE Server Databases."
sábado, 14 de janeiro de 2017
Reuse: Statistical Data Processing
Microsoft has been making available the (free until a certain point) open-source R statistical programming language (and servers):
http://www.infoworld.com/article/3156544/big-data/microsofts-r-tools-bring-data-science-to-the-masses.html
Quoting (the article focus on a new MS acquisition but provides us with an overview of the R programming language and the Development environment to support developers and Data Scientists):
"One of Microsoft’s more interesting recent acquisitions was Revolution Analytics, a company that built tools for working with big data problems using the open source statistical programming language R. Mixing an open source model with commercial tools, Revolution Analytics offered a range of tools supporting academic and personal use, alongside software that took advantage of massive amounts of data–including Hadoop. Under Microsoft’s stewardship, the now-renamed R Server has become a bridge between on-premises and cloud data.
Two years on, Microsoft has announced a set of major updates to its R tools. The R programming language has become an important part of its data strategy, with support in Azure and SQL Server—and, more important, in its Azure Machine Learning service, where it can be used to preprocess data before delivering it to a machine learning pipeline. It’s also one of Microsoft’s key cross-platform server products, with versions for both Red Hat Linux and Suse Linux."