From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Przemys=c5=82aw_Wojnowski?= Newsgroups: gmane.emacs.devel Subject: Re: IDE Date: Sun, 11 Oct 2015 15:18:17 +0200 Message-ID: <561A6199.1020901@cumego.com> References: <5610207A.2000300@harpegolden.net> <83fv1r3gzp.fsf@gnu.org> <83bncf3f9k.fsf@gnu.org> <5610E0BC.8090902@online.de> <83si5r106e.fsf@gnu.org> <831td9z18h.fsf@gnu.org> <5612E996.7090700@yandex.ru> <83bnc7tavr.fsf@gnu.org> <5618C92A.3040207@yandex.ru> <83a8rrt9ag.fsf@gnu.org> <5618D376.1080700@yandex.ru> <831td3t62e.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1444569530 25753 80.91.229.3 (11 Oct 2015 13:18:50 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 11 Oct 2015 13:18:50 +0000 (UTC) Cc: adatgyujto@gmail.com, emacs-devel@gnu.org To: Eli Zaretskii , Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Oct 11 15:18:41 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZlGWO-0001Mz-0H for ged-emacs-devel@m.gmane.org; Sun, 11 Oct 2015 15:18:40 +0200 Original-Received: from localhost ([::1]:48342 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZlGWM-0003uU-Vo for ged-emacs-devel@m.gmane.org; Sun, 11 Oct 2015 09:18:38 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33412) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZlGW9-0003uH-KO for emacs-devel@gnu.org; Sun, 11 Oct 2015 09:18:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZlGW4-0003X7-KU for emacs-devel@gnu.org; Sun, 11 Oct 2015 09:18:25 -0400 Original-Received: from smtp23.iq.pl ([86.111.242.228]:39434) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZlGW4-0003Wm-AB for emacs-devel@gnu.org; Sun, 11 Oct 2015 09:18:20 -0400 Original-Received: (qmail 23883 invoked from network); 11 Oct 2015 13:18:18 -0000 Original-Received: from unknown (HELO [192.168.1.106]) (esperanto@cumego.com@[159.205.196.239]) (envelope-sender ) by smtp22.iq.pl with AES128-SHA encrypted SMTP for ; 11 Oct 2015 13:18:18 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 In-Reply-To: <831td3t62e.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 86.111.242.228 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:191222 Archived-At: W dniu 10.10.2015 o 11:40, Eli Zaretskii pisze: > Come to think of that, even coming up with a list of such features > would be real progress, as I don't think we have that, or ever had. I can "step forward and work" conceptually here. :-) One can start with a question: What is purpose of an IDE (except for making many for a company behind it)? The simple answer is: to help programmers do their work productively. The answer tells two things: 1. Who is the target: programmers not average computer user It could be possibly constrained to e.g. programmers working on projects, not single file programs. 2. How to optimize product backlog: maximization of productivity. Both these things help to select features. For example project-oriented programmers _have to have_ project support, whereas "single file" programmers may not care about it. Features/bugs that impact their productivity have higher priority. Let's say that we would target "project programmers", then we could ask: 1. What features would make such programmers productive? 2. What other environments offer that attract them? IMHO the answer is: it depends on target language(s). I cannot say what makes a Ruby programmer productive, but I can list a few things important for Java programmers. Others, having experience with other languages, may list _must have_ features for their environments. For (project-oriented/enterprise) Java the features are: 1. Project support IDE has to know the boundaries of a project - where are sources, tests, libs, resources/assets (additional files used in an app in runtime), docs - and what are relations between them. Also it has to know how to work with project's build tool (be it Maven, Gradle, etc.). A programmer joining a project (99% of cases) should be able to open/import it and start work. Every Java IDE have that. 2. Code completion From whole project, used libraries, and resources 3. Jumping around the project code and resources. Jumping to around the project code and used libraries. Another thing is jumping to/from resources (for example aspects can be defined in an XML file and IDE could allow to jump to matching classes). 4. Finding usages of fields, methods, types. Helps to wrap head around project. 5. Automatic compilation and showing compilation erros/warnings. Tightens development feedback loop. 6. Running the tests (current, selected, all) Tighten development feedback loop. 7. Debugging A must, especially for legacy code, so, basically 99% of projects. :-) 8. Running the app 9. Basic refactoring. I do refactor _a lot_ and in my experience the most important refactoring is Extract Method. Others, while helpful, are less often used, compared to the EM. One variation of Extract Method is "EM with finding duplicates", which works like this: - ask user for a method name, - find all occurrences of selected code in the buffer - ask user if she wants to replace all occurrences with the call to the new method. This is fantastic feature that Intellij has and helps to remove a lot of duplicated code. 10. Showing documentation (tooltip, etc.) Maybe EWW could be used to show javadoc in a small window? Of course, part of these things (e.g. build tool support) are language dependent and should not be in Emacs core. Also some of the features are already scattered in different elpa libraries, but lack integration with others. IMHO people having experience in other languages could list features that make them productive and maybe we will be able to find a set of core, absolutely must have, IDE features. :-) IMHO the list of core IDE features will be fairly small and doable. Sorry for long email. Cheers, Przemysław