Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 9C03E200BA3 for ; Thu, 20 Oct 2016 08:48:55 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 9AACC160AE0; Thu, 20 Oct 2016 06:48:55 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 4274C160ADB for ; Thu, 20 Oct 2016 08:48:54 +0200 (CEST) Received: (qmail 64340 invoked by uid 500); 20 Oct 2016 06:48:53 -0000 Mailing-List: contact log4net-dev-help@logging.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Log4NET Dev" List-Id: Delivered-To: mailing list log4net-dev@logging.apache.org Received: (qmail 64329 invoked by uid 99); 20 Oct 2016 06:48:53 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Oct 2016 06:48:53 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id D03F1180647 for ; Thu, 20 Oct 2016 06:48:52 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.48 X-Spam-Level: ** X-Spam-Status: No, score=2.48 tagged_above=-999 required=6.31 tests=[HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id a8dIjmxZjERB for ; Thu, 20 Oct 2016 06:48:50 +0000 (UTC) Received: from mail-lf0-f44.google.com (mail-lf0-f44.google.com [209.85.215.44]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 035555F479 for ; Thu, 20 Oct 2016 06:48:50 +0000 (UTC) Received: by mail-lf0-f44.google.com with SMTP id x79so70655539lff.0 for ; Wed, 19 Oct 2016 23:48:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to; bh=Q5OY/fqcW6d+ceZWbd+V+Vzf4OGPGmGFrumDzosA/e8=; b=jc9ppW37evZveVAKuVjvP77c9qrO+JcW39SJo/8Z/x84pBXdK3tI2FH+Ts+oD74SgR k5IgWKI0aazd+Hn+hWSPDZmx56AmcszQQYbYaZL7K+WZ8lGgRSNn0Xkk79cwBWEl+4UD bVPOwpsXMGM7R5eJrPyq+fKjky8S3DdHemlFlT0t9Qv/zlrs3VU2jZVfklWOmAEXeLsk EL6O/P9h0+fO+dwxQWoHSDqT8eQzTbe7T3SzIy9aV589DFnEO36S6l6cY9jtsbFoAZG1 DijoGUV38gmRwnSmaMD5q6VslyWucGGauT3fQkXUgEMKPx5swMDKJhOsj1/2cdfjovJ9 fuDg== X-Gm-Message-State: AA6/9Rn0exFeibZXj3JXdaFbDY3VSDaazDIyoMyRXjoMLCThi/cug/tWNPmGLHVaGdQtPw== X-Received: by 10.28.212.17 with SMTP id l17mr4901960wmg.64.1476945826419; Wed, 19 Oct 2016 23:43:46 -0700 (PDT) Received: from [192.168.0.192] (etrn.topcontrol.it. [217.199.15.225]) by smtp.gmail.com with ESMTPSA id us3sm76036567wjb.32.2016.10.19.23.43.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Oct 2016 23:43:45 -0700 (PDT) Subject: Re: Response to call to arms To: log4net-dev@logging.apache.org References: <24368ce6-5a94-ba9f-8ed8-e4ef275c7915@apache.org> From: Dominik Psenner Message-ID: <3d166ae8-493f-7a40-e576-63f382734a45@apache.org> Date: Thu, 20 Oct 2016 08:43:44 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------8606DF252C9F7328DCCD08BE" archived-at: Thu, 20 Oct 2016 06:48:55 -0000 This is a multi-part message in MIME format. --------------8606DF252C9F7328DCCD08BE Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit It's great to see new faces! Welcome Tommy! On 2016-10-19 14:20, Tommy Parnell wrote: > > I too added myself to this list from the blog post. I am > https://github.com/terribledev I > usually have a few days a month to help with these kinds of projects. > Been using log4net since 2011. Mostly interested in performance > things, and helping on .net core compatibility. That being said always > willing to bug fix, and shave some yaks. My bread and butter is > in CI/CD (i've built dotnet projects in ruby, node, msbuild only, > cake, sake, etc.) so yeah can do that too! I have done quite a bit > with shared projects, with compiler directives. Work in Boston, MA USA > 🇺🇸 moved here from the UK 🇬🇧. so yeah that's me! > > > Oh also, Generics 👍 and linq 👍👍👍 Love the ideas! I'll probably > grok the codebase for a while, and eventually pick up a jira or two. > > > > > TerribleDev (Tommy Parnell) · GitHub > github.com > TerribleDev has 116 repositories available. Follow their code on GitHub. > > > > ------------------------------------------------------------------------ > *From:* Dominik Psenner > *Sent:* Wednesday, October 19, 2016 4:28 AM > *To:* log4net-dev@logging.apache.org > *Subject:* Re: Response to call to arms > > Hi Joe, > > good to read you and welcome on the dev list! You're free to work on > issues that attract your attention. Nobody's going to force you to > work on things you don't deem to be worth the effort. > > We've already decided to gradually drop official support for ancient > .net frameworks like .NET 1.X. We are no longer going to actively > maintain those targets and if changes to the codebase break those > targets we are no longer going to fix that unless someone else > provides a patch that restores compatibility. This means that we are > shifting the responsibility of maintenance to whoever requires the > latest log4net version to work on those ancient platforms. > > Further, compact framework mostly does not support several appenders > that for example target the System.Net namespace. Please correct me if > I'm wrong, but from memory a prominent example appender is the > EmailAppender. I agree with you that it would be a great improvement > if we were able to refactor away all those #ifdef's. Unfortunately > this wish is very hard to achieve, even impossible if we wanted to > stay backwards compatible. > > Backwards compatibility is the next thing I would like to mention. > log4net is a logging framework and one of the highest goods is its > backwards compatibility. If we are going to break that we must follow > a path similar to that of log4j2. In that world the old API facades > the log4j2 API and therefore migration of existing code is trivial. > > Cheers and greets,Dominik > > On 2016-10-18 22:42, Joe wrote: >> >> I'm responding to Stefan's call-to-arms, though I have limited time >> available, currently probably not more than a day or two a month. >> >> Given my lack of time I would probably want to get involved in >> specific short-term tasks, such as taking on issues from the issue >> tracker, rather than being a driver to shape the future of log4net. >> >> I have been involved recently in writing a custom asynchronous >> appender that logs to a WebAPI, so asynchronous appenders is one area >> I could get involved in. >> >> One thing I'd personally like to see is to drop support for some >> legacy platforms: >> >> - The few .NET 1.x users left are probably adequately served by >> existing versions of log4net. >> >> - It's not onerous for .NET 2.0/3.0 users to upgrade to .NET 3.5, >> so these could maybe be dropped too (existing apps don’t need to be >> rebuilt; they just need to ensure 3.5 is installed). >> >> - I've no experience with Compact Framework, but wonder whether, >> given the platform restrictions, it would be better served going >> forward by a separate code base with a simplified and restricted >> logging framework that exposes an identical API to applications. >> >> Doing this would make development easier, for example by allowing the >> use of generics and Linq. >> >> Which in turn might attract more developers ... >> >> One way to approach it would be to remove the binaries for these >> platforms from the next release, and only remove from the source code >> if a reasonable period elapses without too much wailing and gnashing >> of teeth. >> > --------------8606DF252C9F7328DCCD08BE Content-Type: multipart/related; boundary="------------D4ED9959AF63684BD5D3F0AD" --------------D4ED9959AF63684BD5D3F0AD Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

It's great to see new faces! Welcome Tommy!


On 2016-10-19 14:20, Tommy Parnell wrote:

I too added myself to this list from the blog post. I am https://github.com/terribledev I usually have a few days a month to help with these kinds of projects. Been using log4net since 2011. Mostly interested in performance things, and helping on .net core compatibility. That being said always willing to bug fix, and shave some yaks. My bread and butter is in CI/CD (i've built dotnet projects in ruby, node, msbuild only, cake, sake, etc.) so yeah can do that too! I have done quite a bit with shared projects, with compiler directives. Work in Boston, MA USA 🇺🇸 moved here from the UK 🇬🇧. so yeah that's me!


Oh also, Generics 👍 and linq 👍👍👍 Love the ideas! I'll probably grok the codebase for a while, and eventually pick up a jira or two.


github.com
TerribleDev has 116 repositories available. Follow their code on GitHub.



From: Dominik Psenner <dpsenner@apache.org>
Sent: Wednesday, October 19, 2016 4:28 AM
To: log4net-dev@logging.apache.org
Subject: Re: Response to call to arms
 

Hi Joe,

good to read you and welcome on the dev list! You're free to work on issues that attract your attention. Nobody's going to force you to work on things you don't deem to be worth the effort.

We've already decided to gradually drop official support for ancient .net frameworks like .NET 1.X. We are no longer going to actively maintain those targets and if changes to the codebase break those targets we are no longer going to fix that unless someone else provides a patch that restores compatibility. This means that we are shifting the responsibility of maintenance to whoever requires the latest log4net version to work on those ancient platforms.

Further, compact framework mostly does not support several appenders that for example target the System.Net namespace. Please correct me if I'm wrong, but from memory a prominent example appender is the EmailAppender. I agree with you that it would be a great improvement if we were able to refactor away all those #ifdef's. Unfortunately this wish is very hard to achieve, even impossible if we wanted to stay backwards compatible.

Backwards compatibility is the next thing I would like to mention. log4net is a logging framework and one of the highest goods is its backwards compatibility. If we are going to break that we must follow a path similar to that of log4j2. In that world the old API facades the log4j2 API and therefore migration of existing code is trivial.

Cheers and greets,Dominik

On 2016-10-18 22:42, Joe wrote:

I'm responding to Stefan's call-to-arms, though I have limited time available, currently probably not more than a day or two a month.

 

Given my lack of time I would probably want to get involved in specific short-term tasks, such as taking on issues from the issue tracker, rather than being a driver to shape the future of log4net.

 

I have been involved recently in writing a custom asynchronous appender that logs to a WebAPI, so asynchronous appenders is one area I could get involved in.

 

One thing I'd personally like to see is to drop support for some legacy platforms:

 

   - The few .NET 1.x users left are probably adequately served by existing versions of log4net.

   - It's not onerous for .NET 2.0/3.0 users to upgrade to .NET 3.5, so these could maybe be dropped too (existing apps don’t need to be rebuilt; they just need to ensure 3.5 is installed).

   - I've no experience with Compact Framework, but wonder whether, given the platform restrictions, it would be better served going forward by a separate code base with a simplified and restricted logging framework that exposes an identical API to applications.

 

Doing this would make development easier, for example by allowing the use of generics and Linq. 

Which in turn might attract more developers ...

 

One way to approach it would be to remove the binaries for these platforms from the next release, and only remove from the source code if a reasonable period elapses without too much wailing and gnashing of teeth.

 



--------------D4ED9959AF63684BD5D3F0AD Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9i ZSBJbWFnZVJlYWR5ccllPAAAAH1JREFUeNpi/P//PwO1ABMDFQHLrFmzqOY0lrNnzzIcOSJP UOGhT/Pxyld5OSG8WVrqjJcWfnwbLwYBxrS0tP9UdRkhV4HogXHZoAwzFhDj6tUqIlIRATXp 6RDD3sqqUp5iYS6D+ZkiMIJcZmxszLAWiCkFIBMYB23hCBBgAN/QcJAofVNKAAAAAElFTkSu QmCC --------------D4ED9959AF63684BD5D3F0AD Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9i ZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNpi/P//PwO1ABMDFcHgNYwRiKkWaCwg4p2FPQNX UR4De2gQw8ZN1xmmzzzB8Pz5Z7CCi+fyGN7KqjIIP77NoG80CSwmKcnLkBGmzuBycSPDrx27 GThSEhi4i/PBcv/dnWf8X+Ge/x9o6P8fq9b+B4ENG6/9d/eaB2a/kVEB0yD+hpVn/3/tnQhW C6L/ffwIlgOZA/amnuFEiI1C7AyJLNcZPP7fZeBqqGFgtTQHi8Nc9q1vEsOPOQsY2DxcwT45 cPsHw/4D9xj27b/LcOxwJsRlhADMZfgA3GVAxRQHvsiTO9R1GTg2re1mMDg5KjM4OigxOBqL MnxtaIXHEicQI4Pfx08yfAeG3fbPogzz/2gyPH/3E0UebDIoVkCx81bT8P+dxon/O1t3/7ey nY4Zm8BYBgFQrINiFJQKQKkBHmZAQ8CxtMfAn2EHixrD2Suv4TbhSmeZ6RYM/n6aDD9XrwPH stCJg9TNAYyjRRDJACDAALN6WdWwU1baAAAAAElFTkSuQmCC --------------D4ED9959AF63684BD5D3F0AD Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: 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 AABJRU5ErkJggg== --------------D4ED9959AF63684BD5D3F0AD-- --------------8606DF252C9F7328DCCD08BE--